你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F1配置AT24C02的SDA_IN和SDA_OUT的方向和GPIO_CRH和GPIO_CRL

[复制链接]
踮起脚摘苹果 提问时间:2020-2-18 20:21 /
      在之前的一次用STM32F1配置AT24C02时,之前错误的写法是这样
//#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}
//#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}

     配置正确的写法是这样:
#define SDA_IN()  {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=(u32)4<<4;}
#define SDA_OUT() {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=(u32)3<<4;}


就是这两行写的不一样导致的这个错误,这个应该怎么解释?把CRL改成CRH就可以了是什么原因呢?
file:///C:\Users\Administrator\Documents\Tencent Files\643011664\Image\C2C\~0JVYN3ZF04J_LR9VR%UN(2.png
file:///C:\Users\Administrator\Documents\Tencent Files\643011664\Image\C2C\~0JVYN3ZF04J_LR9VR%UN(2.png

STM32_AT24C02.png
收藏 评论5 发布时间:2020-2-18 20:21

举报

5个回答
哀歌与世无争 回答时间:2020-2-19 09:32:07
QQ浏览器截图20200219091817.png
一个io配置位口占4bit,通过CNF1,CNF0,MODE1,MODE0组合可以配置成各种模式。
GPIOB->CRH&=0XFFFFFF0F;这里用与运算,和0相与都为0,和1相与都为本身,所以可以清除PB9的配置位又能保持其他IO口配置不变。
GPIOB->CRH|=(u32)4<<4;前面的是4,因为4的二进制是0100,也就是浮空输入;后面左移4是因为PB9是在CRH寄存器的bit4-bit7,所有左移4位;
用或运算,可以配置PB9又能保持其他IO口配置不变。

点评

谢谢!很有帮助  发表于 2020-2-19 10:34
哀歌与世无争 回答时间:2020-2-18 20:56:45
看原理图现在SDA连的是PB9,GPIIO配置寄存器CRL是配置端口0-7的,CRH配置8-15,看你原来的代码SDA连的是PB7吧,现在改PB9所以要改成CRH。
踮起脚摘苹果 回答时间:2020-2-18 22:10:01
哀歌与世无争 发表于 2020-2-18 20:56
看原理图现在SDA连的是PB9,GPIIO配置寄存器CRL是配置端口0-7的,CRH配置8-15,看你原来的代码SDA连的是PB7 ...

是的,的确和所说一样#define SDA_IN()  {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=(u32)4<<4;}
#define SDA_OUT() {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=(u32)3<<4;}
比方说4 << 4 后面的4 表示的是PB9 ,但是手册里面还有一个5是否也可以写成 4<<5? 那写在前面的3和4表示的是什么?
GPIOB->CRH&=0XFFFFFF0F;为啥前面与,后面又是GPIOB->CRH|=(u32)4<<4;或的?


GPIO_CRH.png
GPIO_CRL.png
踮起脚摘苹果 回答时间:2020-2-18 22:11:19
哀歌与世无争 发表于 2020-2-18 20:56
看原理图现在SDA连的是PB9,GPIIO配置寄存器CRL是配置端口0-7的,CRH配置8-15,看你原来的代码SDA连的是PB7 ...

是的,的确和所说一样#define SDA_IN()  {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=(u32)4<<4;}
#define SDA_OUT() {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=(u32)3<<4;}
比方说4 << 4 后面的4 表示的是PB9 ,但是手册里面还有一个5是否也可以写成 4<<5? 那写在前面的3和4表示的是什么?
GPIOB->CRH&=0XFFFFFF0F;为啥前面与,后面又是
GPIOB->CRH|=(u32)4<<4或的?


GPIO_CRH.png
GPIO_CRL.png
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版