OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4756|回复: 0

GPIOB->CRL|=(u32)8<<28 单记录一下,以防下次又忘了

[复制链接]

13

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2021-12-17
在线时间
23 小时
发表于 2022-12-6 15:28:19 | 显示全部楼层 |阅读模式
本帖最后由 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


f7d88984df0145b4ade82273c3fd2649.png
0b4e6628752e42e5b3e2c8c9b6f3746c.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 20:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表