初级会员
- 积分
- 57
- 金钱
- 57
- 注册时间
- 2021-12-17
- 在线时间
- 23 小时
|
本帖最后由 1179801335 于 2022-12-6 16:17 编辑
转载
版权声明:本文为CSDN博主「浦子哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_71548440/article/details/125894236
看原子哥的IIC.h文件看到这两个语句有点懵,去找了半天资料才懵懵懂懂,下面简单记录一下,以防下次又忘了
就拿这个举例把~,GPIO一组有(0-15)一共16个
前(0-7)是底8位,写成CRL
后(8-15)是高8位,所以就写成CRH
#define SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}
8个F分别对应红圈圈的八个圈圈,有CNF0和M0DE0的圈圈对应着蓝色的F,依此对应。
GPIOB->CRL&=0X0FFFFFFF这个语句的意思:把用到的B7端口清0;
#define SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}8的意思:就是1000,10的对应上拉/下拉模式,00对应输入模式。(下面的红圈圈)
8<<28的意思是:从0位起始,左移28位,从第28位开始写1000。或者理解成把1000送到28个1(或者28个位)的左边
即1111 1111 1111 1111 1111 1111 1111的左边,变成1000 1111 1111 1111 1111 1111 1111 1111
|
|