近日小编公司收到了MDK的律师函,没办法只能选择使用开源的或者免费的IDE工具。考虑多方面因素小编最后决定还是使用STMicroelectronics原厂配套的STM32CubeIDE。小编发现网络上关于cubeIDE的教程还是比较少的,于是乎就有了做一个合集教程的想法,把使用STM32CubeIDE的相关小技巧一一分享给大家。本教程不额外说明都是基于HAL库!(STM32CubeIDE会自动更新部件,建议保持最新版本)
CTRL | SysTick控制及状态寄存器(地址:0xE000_E010) |
LOAD | SysTick重装载数值寄存器(地址:0xE000_E014) |
VAL | SysTick当前数值寄存器(地址:0xE000_E018) |
CALIB | SysTick当前数值寄存器(地址:0xE000_E018) |
SysTick定时器被捆绑在NVIC中,是一个简单的定时器,对于CM3、CM4内核芯片,都有Systick定时器。它不是说STM32特有的一种定时器,是基于Cortex-M系列内核配套的一个简单定时器。Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。如果要配套RTOS的话,通常也是把Systick作为心跳时钟源。Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。
使用stm32cubeide,在system界面里面选择Timebase Source为SysTick,本次我们选择的是外部晶振,如果使用内部晶振的话就选择内部晶振即可,同时可以设置PLL,把系统时钟设置为72MHz。选择完成以后生成代码。↓↓↓
先说,系统默认的滴答时钟都是1ms,不管你是用Systic作为系统时钟,还是用别的定时器TIMx来作为系统时钟,生成的代码默认都是1ms。那么代码里面到底是怎么写的?我们通过生成的代码来瞅瞅。
设置相关参数在HAL_Init()这个函数中调用了HAL_InitTick()这个函数。从字面意思来看这个是滴答时钟初始化函数,那么我们点进去看一下,我们找到HAL_SYSTICK_Config()点进去看,找到uwTickFreq这个参数,可以看到它是一个结构体,默认被赋值HAL_TICK_FREQ_DEFAULT,这个默认值系统时钟就是1KHz,那么要设置其他的值我们只要改变这个默认值即可,stm32cubeide自动生成的代码里面也有相应的结构体,我们点开HAL_TickFreqTypeDef,就可以看到其他的选择了,可以设置成10Hz,100Hz以及1KHz。