时钟树
要先把High Speed Clock
设置为外部晶振,再去设置时钟树
PLL选用高速外部时钟线(HSE)
Input frequency 数值为外部晶振,大多开发板上为8M
SYSCLK 为系统时钟,F407为168MHz
APB2 外设时钟线为系统时钟的一半
APB1 外设时钟线为 APB2系统时钟线的一半
输入参数后,回车,软件会自动更改所有配置
配置调试模式
选择 Debug 为 Serial Wire
SW调试模式只需要四根线,3.3V、GND、SWCLK、SWDIO
TimeBase Source 裸机选择 SysTick,OS 选择 TIM1 作为HAL库的时基(除了 SysTick 外都可以)
在基于STM32 HAL的项目中,一般需要维护的 “时基” 主要有2个:
1、HAL的时基,SYS Timebase Source
2、OS的时基(仅在使用OS的情况下才考虑)
而这些 “时基” 该去如何维护,主要分为两种情况考虑:
裸机运行:
可以通过 SysTick
(滴答定时器)或(TIMx
)定时器的方式来维护 SYS Timebase Source
,也就是HAL库中的 uwTick
,这是HAL库中维护的一个全局变量。在裸机运行的情况下,我们一般选择默认的 SysTick
(滴答定时器)方式即可,也就是直接放在 SysTick_Handler()
中断服务函数中来维护。
带OS运行:
前面提到的 SYS Timebase Source
是STM32的HAL库中的新增部分,主要用于实现 HAL_Delay()
以及作为各种 timeout 的时钟基准。
在使用了OS(操作系统)之后,OS的运行也需要一个时钟基准(简称“时基”),来对任务和时间等进行管理。而OS的这个 时基 一般也都是通过 SysTick
(滴答定时器)来维护的,这时就需要考虑 “HAL的时基” 和 “OS的时基” 是否要共用 SysTick(滴答定时器)了。
因而建议:裸机选用SysTick,OS选用TIM1 作为HAL的时基