问题描述:
在做一个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
|