野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 458|回复: 5

寄存器点led灯出现问题

[复制链接]
发表于 2025-10-26 23:02:03 | 显示全部楼层 |阅读模式

1

1
如图所示,当我尝试同时点亮PB0和PB1对应的颜色时,led实测亮白光,如果对GPIOB_CRL复位后,实测颜色正常,这个时候注释掉复位语句,再编译下载,实测又亮白光,目前只有PB0和PB1同时点亮会出现白光,其他两种组合实测皆正常。
回复

使用道具 举报

 楼主| 发表于 2025-10-26 23:02:50 | 显示全部楼层
板子是stm32f103zet6
回复 支持 反对

使用道具 举报

发表于 2025-10-27 14:05:37 | 显示全部楼层
这代码不死都没写完嘛,只有crl没有odr
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-27 14:48:52 | 显示全部楼层
菠萝片 发表于 2025-10-27 14:05
这代码不死都没写完嘛,只有crl没有odr

我看视频里边说odr默认为0,我写的不规范把这个给省掉了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-27 20:53:23 | 显示全部楼层
目前在自己编写的头文件中加入宏定义#define __IO volatile,定义的结构体成员变量里加上前缀__IO,对PB0和PB1操作后不会出现led亮白光的情况了,猜测可能如手册上说的:防止编译器优化吧(具体原因不知道,只能先拿这个理由来搪塞自己了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-27 20:57:17 | 显示全部楼层
zc2005 发表于 2025-10-27 20:53
目前在自己编写的头文件中加入宏定义#define __IO volatile,定义的结构体成员变量里加上前缀__IO,对PB0和 ...

去掉CRL这个成员变量前的__IO前缀,问题复现,应该是被编译器优化了
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-5 12:44 , Processed in 0.080139 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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