STM32IO口8位操做移位的方式

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

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

STM32IO口都是16位的,因此当调用DATAOUT的时候就直接对GPIOB的16个IO口整体进行操做。可是咱们若是只是选择高8位或者低8位的时候就须要进行移位操做,到底该怎么移位呢如今咱们来看以下代码。io

若是咱们选择的是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
}
di

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