STM32CubeMX笔记(5)--定时器中断


1、STM32CubeMX引脚设置和代码生成

1.相关定时器的知识点:

STM32F1系列中APB1和APB2控制对应表
APB1操作速度限于36MHz
APB2操作于全速(最高72MHz)

APB1(低速外设):DA,USB,SPI,I2C,CAN,串口2345,普通TIM
APB2(高速外设):AD,I/O,高级TIM,串口1

2.外部时钟晶振选择:

STM32CubeMX软件中,配置相对应模式,选择RCC进行配置相关的晶振选择及电路时钟选择。选择高速时钟HSE,然后选择第三项的外部晶振源

3.时钟配置选择:

STM32CubeMX软件上侧,选择Clock Configuration时钟设置项,根据下图进行配置相对应的时钟选项设置。

4.定时器相关参数选择:

STM32CubeMX软件右侧:
1)选择Times定时器设置项,根据下图进行配置相对应的定时器相关参数的设置。
(选择内部时钟源、设置预分频、计数值、打开定时器中断使能)

定时器频率=时钟频率/(预分频*计数值)

T i m e s ( H z ) = I n t e r n e l C l o c k ( M H z ) P S C ∗ C o u n t e r . Times(Hz) = \frac{InternelClock(MHz)}{PSC*Counter}. Times(Hz)=PSCCounterInternelClock(MHz).

例如:下面图中设置的定时器3中断的频率为1Hz

其中内部时钟频率为APB1(InternelClock)频率为72MHz(根据时钟树看出)
预分频(PSC):7200-1; 计数值(Counter):10000-1;(计数从0开始,所以要减1)

定 时 器 3 中 断 频 率 = 72000000 7200 ∗ 10000 = 1 H z 定时器3中断频率= \frac{72000000}{7200*10000}=1Hz 3=72001000072000000=1Hz

2)选择System Core项,点击NVIC项,设置定时器中断优先等级使能,避免中断过高产生不必要的抢占。
根据下图进行配置相对应的定时器相关参数的设置

5.在STM32CubeMX软件右上角,点击GEBERATE CODE项,生成代码。


外部晶振选择:
在这里插入图片描述
在这里插入图片描述

相对应的时钟设置:
在这里插入图片描述

设置定时器3的参数设置:
在这里插入图片描述
在这里插入图片描述

定时器3中断优先等级设置:
在这里插入图片描述


2、编写相关中断的C文件

1.相关中断函数:

相关的中断函数在stm32f1xx_hal_tim.c文件中可以查看得到。
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)这个函数中,我们可以看到相关中断函数的处理。该函数必须在main.c函数中进行开启使用,这样才能开启定时器中断软件使能。

相关的中断函数在stm32f1xx_it.c文件中可以查看得到。
void TIM3_IRQHandler(void)这个函数中,我们可以看到相关中断函数的处理。

相关的定时器中断函数在stm32f1xx_hal_tim.c文件中可以查看得到。
HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)这个函数中,相关的中断函数的处理将会在该函数中执行。
在这里插入图片描述
在这里插入图片描述


2.相关中断函数的编写:

1)添加定时器3中断开启使能函数,放置于到main.c中的用户代码区

/* USER CODE BEGIN 2 */
	HAL_TIM_Base_Start_IT(&htim3);
	
/* USER CODE END 2 */

2)将相关的HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)复制到main.c中的用户代码区进行编写,当然也可以建立相关的time3_ti.htime3_ti.c相关定时器3中断函数处理c文件。

注释:该函数会在计数器溢出时进行执行。

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    
    
  if(htim->Instance == TIM3)
	{
    
    
		LED0_Toggle;
		LED1_Toggle;
	}
}

/* USER CODE END 4 */

3、编译工程文件,使用ST-Link烧录,测试定时器中断

两盏LED灯会根据定时器3中断时间进行闪烁,定时器3中断的频率为1Hz,也就是一秒钟LED灯会闪烁一次。

Guess you like

Origin blog.csdn.net/weixin_44444810/article/details/120450692