STM32G474之TIM1更新中断详解
创作时间:
作者:
@小白创作中心
STM32G474之TIM1更新中断详解
引用
CSDN
1.
https://blog.csdn.net/weixin_42550185/article/details/141715003
STM32G474的TIM1定时器可以产生多种中断,包括:
- 捕获比较1个事件(Capture compare 1 event)
- 用于获取“捕获输入脉冲的时间”,也可用于输出“比较输出波形”。
- 捕获比较2个事件(Capture compare 2 event)
- 捕获比较3个事件(Capture compare 3 event)
- 捕获比较4个事件(Capture compare 4 event)
- TIM更新事件(TIM Update event)
- 当定时器计数器溢出时产生更新事件。
- TIM刹车输入事件(TIM Break input event)
- 当刹车信号到达时产生刹车输入事件。
- TIM刹车2输入事件(TIM Break2 input event)
- TIM触发器检测事件(TIM Trigger detection event)
- TIM换向事件(TIM commutation event)
- TIM编码器索引事件(TIM Encoder index event)
- TIM方向更改事件(TIM Direction change event)
- TIM索引错误事件(TIM Index error event)
- TIM转换错误事件(TIM Transition error event)
定时器的功能非常丰富,我们从最基础的定时器计数器溢出产生中断开始学习,因为这个功能最为常用。
测试程序
#include "Timer1.h"
#include "LED.h"
#include "stm32g4xx_hal.h"
void Timer1_Init(void);
void Timer1_Init(void)
{
TIM_HandleTypeDef htim1; //TIM1句柄
RCC_ClkInitTypeDef clkconfig;
uint32_t uwTimclock = 0;
uint32_t pFLatency;
uint32_t uwPrescalerValue = 0;
__HAL_RCC_TIM1_CLK_ENABLE();//使能“定时器1”的时钟,Enable TIM1 clock
HAL_RCC_GetClockConfig(&clkconfig, &pFLatency);//Get clock configuration
uwTimclock = HAL_RCC_GetPCLK2Freq();
//读取PCLK2的时钟频率,Return the PCLK2 frequency
//若PCLK2的分频器值为1,则和SystemCoreClock的值相等
//uwTimclock=170000000Hz
uwPrescalerValue = (uint32_t) ((uwTimclock / 10000U) - 1U);
//uwPrescalerValue=17000
htim1.Instance = TIM1;
htim1.Init.Period = (1000000U / 1000U) - 1U;
//定时器周期999
htim1.Init.Prescaler = uwPrescalerValue;
//设置TIM1预分频器为uwPrescalerValue
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
//设置时钟分频系数,TIM1_CR1中的CKD[9:8]=00b,tDTS=ttim_ker_ck;
//溢出时间为(990+1)*1*17000/170000000/1=0.1秒
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.RepetitionCounter = 0;//重复计数(1-0)次,产生1次中断,比较重要
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
//使能“自动重装载”
HAL_TIM_Base_Init(&htim1);
HAL_TIM_Base_Start_IT(&htim1);
HAL_NVIC_EnableIRQ(TIM1_UP_TIM16_IRQn);//使能TIM1产生中断
HAL_NVIC_SetPriority(TIM1_UP_TIM16_IRQn, 5, 0U);
//设置NVIC中断分组4:4位抢占优先级,0位响应优先级
//选择中断优先级组4,即抢占优先级为4位,取值为0~15,响应优先级组为0位,取值为0
//这里设置TIM1中断优先级为5
}
//TIM1“更新中断”和TIM16中断,共用一个中断源, TIM1每0.1秒中断一次
void TIM1_UP_TIM16_IRQHandler(void)
{
if( (TIM1->SR & TIM_FLAG_UPDATE) == TIM_FLAG_UPDATE)
{//读取TIM1状态寄存器TIMx_SR的bit0(UIF),UIF=1表示产生了“TIM1更新事件”
if( (TIM1->DIER & TIM_IT_UPDATE) == TIM_IT_UPDATE )
{//读取TIM1中断使能寄存器TIMx_DIER的bot0(UIE),查看UIE=1?
TIM1->SR = ~(TIM_IT_UPDATE);
LED1_Toggle(); //LED1引脚输出电平翻转
}
}
}
测试结果
热门推荐
高邮K28路:高铁站接驳的便捷之选
新冠后味觉嗅觉减退?这样恢复更有效
专家建议:新冠康复期如何通过饮食恢复味觉?
怎样选择适合自己肤质的护肤品?
王宏才推荐:中医养生法助你轻松减压
4种花就是“醋罐子”,浇点“酸水”,花比叶还多,太漂亮了
“酸蓝碱红”,绣球花是这样变色的!
冥打坐:职场人的减压神器?
UFC 311重磅来袭!马哈切夫VS萨鲁基安领衔轻量级冠军战
钢化玻璃贴膜:拯救你的手机屏幕!
低血压食疗:猪肝真的靠谱吗?
老中医教你如何调理低血压偏高
福建泉州时隔20年重启民俗踩街 线下参与人数逾30万
盘点年味十足的地区,第四站:广东潮汕新年风俗
研究发现:中药黄连素能抗癌,但口服效果较差
绍兴府横街变身"小吃一条街",国庆前三天接待2.7万人次
2024金融街论坛热议:中日经贸合作迎来绿色新机遇
中日学者齐聚北京 研讨战后现代化进程与合作前景
鉴真东渡精神传承:2024中日文化年亮点前瞻
近30年最好看的10部历史剧,你看过几部呢?
AKB48转型之路:从总选举到新起点
AKB48总选举:日本偶像文化的十年变迁
从优良设计大奖看AKB48:新旧偶像模式的碰撞与启示
“百县千碗,寻味丽水” 来一场因“食”而动的“味蕾游”
游房山美丽乡村路 品浓郁乡土年味
比亚迪、吉利力推48V电动车技术,2025年将占混动车70%以上
48V起动发电机:汽车电气化转型的关键技术
爱玛48V锂电车电池保养秘籍:让电池更耐用的实用指南
歼-20隐身技术新突破,美军雷达失明?
揭秘中国白菜价隐身涂层背后的黑科技