一知半解学习环境:
1、CubeMX 4.23.0
2、uVision 5.14.2
3、MCU 启明 STM32F407 开发板(高配版) V3.1
一知半解学习目标:
1、掌握CubeMX下RCC以及SYS的相关配置;
2、掌握CubeMX下GPIO的相关配置;
3、掌握CubeMX下定时器常规中断的配置;
一知半解实现过程:
1、配置系统调试接口及时基时钟源;
2、配置外部高速时钟源(HSE);
3、配置定时器参数(TIM1);
4、根据原理图配置相应GPIO引脚并修改宏定义名称;
5、配置时钟树,主频168M;
6、配置管脚默认输出状态及速率;
7、配置定时器预分频及装载值,开启定时器中断;
由于此处选择的是定时器1(TIM1),该定时器挂载在APB2总线上,因此TIM1时钟为168M。为了使LED间隔0.5S翻转,需要配置TIM1的中断时间为0.5S,为了方便计算预分频值定为 16800-1,装载值为5000-1; ((168M/16800)/5000) = 2Hz,即周期为0.5S。
8、生成工程,并添加相关程序;
首先,main.c程序中添加(放置于定时器配置之后)开启 TIM1计时中断;
/* USER CODE BEGIN 2 */
/*使能定时器1中断*/
HAL_TIM_Base_Start_IT(&htim1);
/* USER CODE END 2 */
其次,在 tim.c文件中添加定时器中断完成回调函数;
/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
if (htim->Instance == TIM1){
/* Toggle LED */
HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);
HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
}
}
/* USER CODE END 1 */
一知半解套路回顾:
1、掌握CubeMX配置的常规套路,如SYS、RCC以及时钟树的配置等;
2、掌握TIM中断开启函数的使用;
3、掌握定时器中断回调函数的使用;