当前位置:首页 > 单片机 > 单片机
[导读]当我们采用并口传输数据的时候都会用如下的方法进行数据传输#define DATAOUT(x) GPIOB->ODR=x;STM32IO口都是16位的,所以当调用DATAOUT的时候就直接对GPIOB的16个IO口总体进行操作。但是我们如果只是选择高8位或者低

 

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

#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;//D′μ??·
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;//D′μ??·
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位方向移动。

 

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭