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

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

[复制链接]
hejun96 提问时间: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。
hejun96 回答时间: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
hejun96 回答时间: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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版