文章目录
- 前言
- 一、STM32CUBE配置修改
- 二、代码和测试
- 总结
- 参考
前言
硬件的配置由前面的工程递增,会根据目的修改部分控制代码
由于本人较懒,记录主要是过程,原理性的东西网上一大把,我就不赘述了,由于懒,主要由图片和代码加少量文字组成
源码地址https://gitcode.com/qq_36517072/stm32,第x章为cx文件夹
一、STM32CUBE配置修改
配置定时器8为使用的定时器,自动更新的时间为168M/((167+1)(999+1))=1K,即一毫秒触发一次更新中断

ctrls+generatecode
二、代码和测试
修改tim.c,使能中断
/* USER CODE BEGIN TIM8_Init 2 */
HAL_TIM_Base_Start_IT(&htim8);
/* USER CODE END TIM8_Init 2 */
修改在main.c里添加定时器8的回调函数内容
/* USER CODE BEGIN 4 */
volatile uint64_t ms_counter = 0; // 1ms 增加1的计数器
/* USER CODE END 4 */
/**
* @brief Period elapsed callback in non blocking mode
* @note This function is called when TIM1 interrupt took place, inside
* HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
* a global variable "uwTick" used as application time base.
* @param htim : TIM handle
* @retval None
*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
/* USER CODE BEGIN Callback 0 */
/* USER CODE END Callback 0 */
if (htim->Instance == TIM1)
{
HAL_IncTick();
}
/* USER CODE BEGIN Callback 1 */
if (htim->Instance == TIM8)
{
ms_counter++; // 每次中断(1ms)增加计数器
if(ms_counter%1000==0) printf("%lld s \r\n",ms_counter/1000);
}
/* USER CODE END Callback 1 */
}
烧录运行后串口每秒打印时间
总结
主要介绍了STM32 定时器中断的配置和测试