stm32是意法半导体推出的一款32位单片机,具有高性能、低功耗等优点,因此应用广泛。在使用stm32单片机进行时钟控制时,会用到分频器。分频器用来将主频分频得到需要的时钟信号。在分频时,需要先设置分频器的分频值。而这个分频值一般需要减1才能得到正确的时钟频率。
在使用分频器的过程中,需要将主频除以分频值得到所需的时钟频率。而stm32的分频器是采用减1法的,即在设置分频值时,需要将实际分频值减1。这是因为,stm32的分频器的分频值是从0开始计数的。例如,当需要将主频分频2倍时,分频器的分频值应为1,而不是2。
以系统时钟为例,假设主频为72MHz,需要将系统时钟分频2倍,得到36MHz的时钟信号。则分频器的分频值应为:(72/2)-1=35。
在stm32的编程中,常常需要用到分频器,例如ADC、定时器、SPI等模块都需要使用到分频器。对于定时器来说,如果希望其定时1ms,则可采用如下配置:
1. 将系统时钟分频8倍,得到9MHz的时钟信号。
2. 将定时器的时钟源设为上述时钟信号。
3. 将定时器的预分频值设为8999,这样定时器时钟的周期为(1/9MHz)*9000=1ms。
通过上述配置,即可实现1ms的定时功能。
除了减1法之外,还有直接法和反相器法两种分频方式。直接法指的是将分频值直接赋值给寄存器,例如将分频值设为2,则在寄存器中就赋值为2。而反相器法则是采用一个反相器,将输入信号经过反相器后再进行分频。这两种分频方式的优缺点各不相同,根据具体的应用需求进行选择。