STM32IO口8位操作移位的方式

  • Post author:
  • Post category:其他


当我们采用并口传输数据的时候都会用如下的方法进行数据传输

#define DATAOUT(x) GPIOB->ODR=x;

STM32IO口都是16位的,所以当调用DATAOUT的时候就直接对GPIOB的16个IO口总体进行操作。但是我们如果只是选择高8位或者低8位的时候就需要进行移位操作,到底该怎么移位呢现在我们来看如下代码。

如果我们选择的是0-7位IO口那么传输数据的时候代码如下

void LCD_DrawPoint_16Bit(u16 color)

{


#if LCD_USE8BIT_MODEL==1



LCD_CS_CLR;



LCD_RD_SET;



LCD_RS_SET;//дµØÖ·





DATAOUT(color>>8);


//先传输高8位所以把高8位先往低8位移动



LCD_WR_CLR;



LCD_WR_SET;





DATAOUT(color);


//直接传输低8位



LCD_WR_CLR;



LCD_WR_SET;





LCD_CS_SET;

#else



LCD_WR_DATA(color);

#endif

}

由上面可以看到如果是选择的低8位数据都是往低8位移动。

void LCD_DrawPoint_16Bit(u16 color)

{


#if LCD_USE8BIT_MODEL==1



LCD_CS_CLR;



LCD_RD_SET;



LCD_RS_SET;//дµØÖ·





DATAOUT(color);


//由于是先传高位所以这里不用移位(io口选择的时候高8位)



LCD_WR_CLR;



LCD_WR_SET;





DATAOUT(color<<8);


//低8位的时候需要把低8位数据往高8位移动



LCD_WR_CLR;



LCD_WR_SET;





LCD_CS_SET;

#else



LCD_WR_DATA(color);

#endif

}

这是选择高8位IO口代码都是把低8位数据往高8位方向移动。



版权声明:本文为yuanmeixiang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。