STM32IO口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;//дµØÖ·    
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位方向移动。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值