STM32 HAL库学习笔记之 定时器中断

所用工具:1、芯片:STM32F103ZET6

                   2、CUBEMX软件

                   3、MDK-keil软件

定时器简介:STM32F103ZET6 一共有8个定时器,其中TIM1/TIM8为高级定时器,TIM6/TIM7为基本定时器,TIM2,TIM3,TIM4,TIM5为通用定时器。

基本定时器TIM6及TIM7功能:

通用定时器TIM2~TIM5功能:

                             

高级定时器TIM1/TIM8功能:

本次学习利用基本定时器TIM6的定时技术功能,每隔1秒钟翻转GPIO指示灯。

一、设置RCC

设置高速外部时钟HSE作为时钟源。

选择Crystal/Ceramic Resonator 外部晶体/陶瓷晶振器作为时钟源。

HSE两个时钟源选项说明如下:

BYPASS Clock Source(旁路时钟源)
Crystal/Ceramic Resonator(晶体/陶瓷晶振)


 所谓HSE旁路时钟源,是指无需使用外部晶体时所需的芯片内部时钟驱动组件,直接从外界导入时钟信号。犹如芯片内部的驱动组件被旁路了。
 外部晶体/陶瓷谐振器(HSE晶体)模式该时钟源是由外部无源晶体与MCU内部时钟驱动电路共同配合形成,有一定的启动时间,精度较高。
二、设置时钟分频

1、选择外部时钟HSE 8MHz

2、系统时钟来源选择PLLCLK

3、设置HCLK为72MHz

三、定时器设置

1、选择定时器TIM6,

2、定时器使能,勾选Activated

3、设置定时器参数  ①、设置分频系数7200

                                 ②、选择向上计数模式 up

                                 ③、设置重装载值 5000

                                 ④、自动重装载使能

定时器溢出时间计算:溢出时间=重装载值×分频系数/72M

例如:分频系数7200,定时器时钟频率为72M/7200=10000Hz,重转载值5000,那么溢出时间为5000/10000=0.5s

四、使能定时器中断功能

1、选择中断功能设置

2、勾选使能TIM6定时器中断

五、配置相应的GPIO口

1、设置PB5及PE5 初始化电平高,推挽输出,无上/下拉,输出频率低。

六、配置项目文件

填写工程名称、存放路径及IDE工具选择MDK等

七、工程函数

在HAL库中,定时器产生中断时,首先进入stm32f1xx.it.c文件中的TIM6中断函数:

在TIM6-IRQHandler函数中又调用了 HAL_TIM_IRQHandler()函数,进入HAL_TIM_IRQHandler()函数的定时器更新中断代码中我们看到:

这里判断产生了中断后,清除了中断标志位,又调用了HAL_TIM_PeriodElapsedCallback(htim)函数,最后进入回调函数中,

我们只需要重写回调函数,在回调函数中编写用户代码。

1、在用户变量定义去添加变量i定义,并初始化i=0(此变量定义及初始化不能放在中断回调函数中)。

2、在main函数中添加定时器中断开启函数。

HAL_TIM_Base_Start_IT(&htim6);   //开启定时器6中断

3、在用户代码区添加定时器中断回调函数

void  HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)    //定时器中断回调函数
  {
     
     if(htim == &htim6)   //确定是定时器6产生的中断
     {
        i++;
        if(i==2)
        {
            HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
            i=0;
        }
     }
        
  }

  • 3
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值