STM32 端口初始化引发的思考

哎,岁月不等人,奈何人生有限,学习无涯。好了,话不多说,直入今天的主题。

问题描述:

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

问题解决:

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

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

1:开启端口时钟。

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

3:写ODR的值

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

由此:在寄存器的配置中,寄存器的默认值也是很重要的,需要特别的留意,不然就会出现某些问题。

 
 
 

你可能感兴趣的:(STM32)