标准库定时器及中断
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了标准库定时器及中断相关的知识,希望对你有一定的参考价值。
参考技术A 1.利用定时器公式计算出TIMx_ARR(计数个数(自动重载寄存器(TIMx_ARR)))和TIMx_psc(分频系数)(例如:72Mhz ARR=9999,PSC=7199)2.初始化定时器:TIM_TimeBaseInit()
3.打开时钟RCC
4.清除标志位 :TIM_ClearFlag() (时间由高电平到低电平)
5.使能定时器:TIM_Cmd() (打开定时器)
6.判断是否定时完毕:TIM_GetFlagStatus() (判断是否高电平)
例如:
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,ENABLE);//打开TIM6的外设时钟 改时钟在这里改,改成要求的时钟
TIM_TimeBaseStructure.TIM_Prescaler = 4799;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数 改计数模式在这里改 改为 TIM_CounterMode_Down 向下计数
TIM_TimeBaseStructure.TIM_Period = 1999;//秒数在这里改 0.5秒对应4999 1秒对应9999 两秒对应19999
TIM_TimeBaseInit(TIM7,&TIM_TimeBaseStructure);//这里改为对应的TIM
TIM_ClearFlag(TIM7, TIM_FLAG_Update);//这里改为对应的TIM
TIM_ITConfig(TIM7, TIM_IT_Update,ENABLE);//这里改为对应的TIM使能定时器中断
TIM_Cmd(TIM7, ENABLE);//使能或者失能TIMx外设
TIM_GetFlagStatus(TIM7, TIM_FLAG_Update);//检查指定的TIM标志位设置与否
注意:main.c文件中一定要添加头文件名 #include"stm32f10x.h"
1.设置外部中断初始化函数 :EXTI_Init()
2.打开复用功能时钟(AFIO)(AFIO属于APB2)
3.设置管脚中断函数:GPIO_EXTILineConfig()
4.设置优先级初始化函数NVIC_Config()
5.设置中断信号输入管脚初始化函数:GPIO_con()
6.编写中断服务函数
中断服务函数列表:
1.EXTI0_IRQHandler
2.EXTI2_IRQHandler
3.EXTI3_IRQHandler
4.EXTI4_IRQHandler
5.EXTI9_5_IRQHandler
1.EXTI15_10_IRQHandler
HAL库 定时器3 中断 翻转LED
开启定时器3 实现每1s翻转LED,公式 Tout = (ARR+1)*(PSC+1)/TCLK
(1)ARR : 自动重装载值 / 计数周期;
(2)PSC : 分频系数 ;
(3)TCLK : 输入时钟 72M
- 定时器介绍:
SMT32F1系列共有8个定时器:(区别)
高级定时器(TIM1、TIM8); /16位 / 可产生DMA请求 / 有捕获 和 / 比较通道 / 有互补输出 / 可用于PWM电机控制
通用定时器(TIM2、TIM3、TIM4、TIM5); / 16位 / 无捕获
基本定时器(TIM6、TIM7). / 16位 / 无捕获
1. cubeMX 开启 定时器3
2. main.c中 加入
(1) __HAL_TIM_CLEAR_IT(&htim3,TIM_IT_UPDATE); //清除TIM初始化过程中的 更新中断标志避免 一启动TIm就进去中断
(2) HAL_TIM_Base_Start_IT(&htim3); //使能 TIM3的更新中断 并启动 定时器
3. 在tim.c中 设置 溢出时间 :Tout = (ARR+1)*(PSC+1)/TCLK
4. 在 tim.c 中 添加 TIM3 中断 回调函数
(ps:过程中 对 中断服务函数:【void TIM3_IRQHandler(void) 】重复定义导致编译失败,其实void TIM3_IRQHandler本身有自己不用写)
以上是关于标准库定时器及中断的主要内容,如果未能解决你的问题,请参考以下文章
STM32F103操作DS1302时钟芯片串口显示(标准库和HAL库)
STM32F103操作DS1302时钟芯片串口显示(标准库和HAL库)
STM32F103基于标准库开发串口中断接收数据环形队列例程