完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
以下的一段代码是32程序里的,我的问题是:GPIOB是一个经过强制类型转换将数字转换为合适的地址类型的。而ODR是结构体里面定义的一个uint类型的变量,ODR没有进行初始化,那么GPIOB->ODR的值是GPIOB所蕴含的值吗?或者是我理解错了是其他的意思呢?请大神赐教,谢谢!!!!
GPIOB->ODR|=1<<5; //PB.5 输出高 |
|
相关推荐
6个回答
|
|
|
|
|
|
输出寄存器,为了不改变其他位,要先读再写,odr并不等于GPIOB的值,只有所有端口都做输出时才等于GPIOB的值
|
|
|
|
GPIOB是指向结构体的首地址,里面并不会蕴含什么值,ODR是里面定义的某一个变量,这个语句是控制单引脚输出而不影响其他引脚的状态,如果你说的是端口状态的话,需要去读取才能获取,而不是直接就在GPIOB里面的。
|
|
|
|
现在都是模块化封装,比如你有4组gpio a,b,c,d。所以就可以这样定义
type_name struct{ xx; xx; xx; };里面都是寄存器相关的,这样我可以定义 #define (type_name*)gpioA 0xxxxx(a起始地址,也就是第一个gpioa第一个寄存器起始地址),然后就可以像结构体一样使用。看寄存器地址定义,在。h里面。1<<5不就是bit5,0x20,就是pin5,这样就好理解了。 |
|
|
|
结构体的某个变量
|
|
|
|
绑定一下哈哈哈哈哈
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
238 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
629 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
552 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
552 浏览 0 评论
1074 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11764 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 06:07 , Processed in 0.642481 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号