在使用stm32f103的时候,突然有一个疑问。如果采用外部晶振,那么外部晶振需要接pd0和pd1两个引脚,那么问题来了,我们的程序中到底需不需开启gpiod的时钟。在stm32cubemx生成的代码中默认开启gpiod的时钟,但是在自己使用寄存器编程的时候,没有对gpiod时钟使能。这是我之前错了,还是stm32cubemx的一个bug。
评分
查看全部评分
__HAL_RCC_GPIOD_CLK_ENABLE();
这条不用理会,不需要开时钟。
有可能是用了外部时钟,在STM32CubeMX下PD0、PD1管脚变绿了,它自作聪明给你开启GPIOD时钟的。
实际上这两个管脚主功能是OSC_IN、OSC_OUT。什么是主功能,就是人家本身就是作为时钟功能用的,跟GPIO没半毛钱关系。只是由于管脚少,留了一手,在外部时钟功能不用的情况,这两个管脚可以用作PD0、PD1。
跟JTAG口是一个道理,JTAG口的管脚也可以用作GPIO,但主功能是JTAG,JTAG连接的时候,没有人会认为开启了GPIO的时钟吧。
评分
查看全部评分
评分
查看全部评分