打印
[应用相关]

STM32 端口初始化引发的思考

[复制链接]
154|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wiba|  楼主 | 2023-10-17 16:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题描述:

在做一个BCM项目时发现一个问题,那就是在上电的瞬间,发现灯关有闪烁的情况,从现象来看,应该就是BCM控制器在初始化的过程中端口的默认值,导致了外部灯光的闪烁。

问题解决:

首先声明下,我是一名硬件工程师,但是在大多数人说解决不了这个问题的时候,我打算试一下。怎么试,当然是写几条代码验证了,硬件工程师会写代码?对,我的近期目标就是成为一个会写硬件驱动程序的软硬件工程师,哈哈哈哈。

一般来说我们配置一个IO口为输出的顺序为(以STM32 为例)

1:开启端口时钟。

2:配置端口的方向为输出、输出的模式、输出的速率为50M(假定)。

3:写ODR的值

以上为一般的IO口输出的配置方式,但是我们忽略了一个问题,那就是端口寄存器是有默认值的。如上的配置方式会导致在2之后,端口就会输出一个低电平。如果外围的电路正好是低电平有效,那么此时就一定会出现一个闪烁的情况。为了避免这样的问题,我们必须改变端口配置的顺序。注意先配置时钟这是必须的,因为只有在时钟开启的情况下,才允许对时钟下面的寄存器进行读写操作。那么就只有更改2,3的顺序了。实验证明更改了2,3的顺序此问题的确得到解决。

由此:在寄存器的配置中,寄存器的默认值也是很重要的,需要特别的留意,不然就会出现某些问题。
————————————————
版权声明:本文为CSDN博主「猴哥取经」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_37634871/article/details/79803602

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

3305

帖子

3

粉丝