我都用过标准库和hal,也熟练使用,但是过一段时间后会忘记一些功能和代码实现的步骤,特此采写了本篇笔记!如有错误的地方,欢迎指正,本程序均经过实验并实现的!
先贴上选定好的图
首先,打开STM32CubeMX,选择定时器1,在这个mode选择内部时钟、
Clock Source -> Internal Clock
根据以下公式,比如说我定时500ms(请只借鉴公式,此公式借鉴与STM32)
那么就设定参数为这些:
𝑓 =72M/( (19999 + 1) ∗ (3599 + 1) )= 2𝐻z
并且在定时中断中设定点击 TIM1 update interrupt 进行更新中断

点击更新代码

进入代码后,打开中断文件划到最底部用户可修改的代码区域添加函数:
/**
* @brief 反转红灯,绿灯和蓝灯电平
* @param[in] none
* @retval 这个只是为了演示闪烁LED所使用的
*/
void bsp_led_toggle(void)
{
HAL_GPIO_TogglePin(LED_R_GPIO_Port, LED_R_Pin);
HAL_GPIO_TogglePin(LED_G_GPIO_Port, LED_G_Pin);
HAL_GPIO_TogglePin(LED_B_GPIO_Port, LED_B_Pin);
}
/**
* @brief 定时器周期定时回调
* @param[in] htim:定时器指针
* @retval none
*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim == &htim1)
{
//下面就添加每隔500ms做的任务
//500ms trigger
bsp_led_toggle();
}
}
在main函数里面添加开启定时中断函数:
/* 在中断模式下启动定时器 */
HAL_TIM_Base_Start_IT(&htimx);//请注意修改,x可为1、2、3、、、
到了这一步就可以下载到板子上验证了,LED的引脚请自定义,或者采用例程尝试,谢谢!。