STM32-TIM定时器与内部中断

本文介绍了定时器的基本概念,包括滴答定时器、系统定时器、基本定时器、通用定时器和高级定时器的区别。重点讲解了定时器的中断使用,以及如何配置分频系数、计数方式和计数大小。还探讨了中断服务程序的快进快出原则及其在复杂任务中的应用和优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.什么是定时器
TIMtimer)定时器。
在此之前的时钟系统的使用上,已经学过第一个最简单的定时器(滴答定时器)。
系统定时器:
SysTick_Config(SystemCoreClock / 100);
void SysTick_Handler(void)
{
}

 

系统定时器的原理分别是LOAD寄存器,VAL寄存器,CTRL寄存器。我当时说
理解上面滴答定时器的原理。这个原理我们今也用啊。
定时器总的来讲:可以分为四类。系统定时器,基本定时器,通用定时器,高级
定时器。
滴答定时器:计数方式:向下计数。时钟选择:168Mhz或者168Mhz的八分钟
一(21Mhz.
通俗的来看:固定周期会触发一次中断。
基本定时器:计数方式:向上计数。时钟选择:168Mhz~(168/65535Mhz).
通俗的来看:(滴答定时器的+时钟分频功能 = 基本定时器。)
通用定时器:
通俗的来看:(基本定时器+捕获通道 = 通用定时器)
高级定时器:
通俗的来看:(基本定时器+互补输出功能 = 高级定时器)
参开如图:
二 定时器的中断使用
2.1 定时器工作示意图:
从上图一眼看出:
接入定时器的时钟频率(TIM1,TIM8,TIM9,TIM10,TIM11168Mhz,会经过分频
系数进行降低频率,然后进入计数单元作为实际的运算速率,我们要确认时钟频
率降低多少倍。第二呢,计数单元需要我们确认到向上计数/向下计数。还需要
确定计数的大小。
得到结论:定时器至少需要配置分频系数,计数方式,计数大小3个参数。完成
这三个参数,定时器就可以周期性的调用中断函数了
代码流程图
  
三 定时器的深化和硬件特性
特点:中断服务程序的快进快出,短小精悍。这四个字很重要。他的本质:不能
中断服务程序长时间占用CPU
3.1.开发任务:
任务1:中断服务程序承担的任务本身比较复杂,涉及的数据处理非常复杂。这
样你的中断服务程序代码行数量肯定多。这样不符合短小精悍的特点,你该如
何解决?
方案展示:使用变量i作为FLAG,中断函数仅仅承担修改FLAG的数值。具体操作
的复杂代码,可以放在main函数里面去。减轻中断服务程序负担。
任务2:在任务1的开发背景下,我们遇到了新要求,第一次中断产生,中断服务
退出后。main函数处理数据过程非常缓慢(数据处理和校准算法慢,这块已经
无法优化)。导致紧接着的第二次同一中断产生,不能及时响应。测试现场表现
为:概率性未能响应中断任务的BUG。请提出解决方案。
方案展示:第二次中断产生,说明现场环境已经改变,第一次中断的数据已经失
效,加工处理第一次中断的数据,已经丧失意义。直接暂停或抛弃第一次的数
据。响应第二次中断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值