STM32-TIM定时器与内部中断

. 什么是定时器
TIM ( timer )定时器。
在此之前的时钟系统的使用上,已经学过第一个最简单的定时器(滴答定时器)。
系统定时器:

SysTick_Config(SystemCoreClock / 100);
void SysTick_Handler(void)
{
}


系统定时器的原理分别是 LOAD 寄存器, VAL 寄存器, CTRL 寄存器。我当时说
过 " 理解上面滴答定时器的原理 " 。这个原理我们今也用啊。
定时器总的来讲:可以分为四类。系统定时器,基本定时器,通用定时器,高级
定时器。
滴答定时器:计数方式:向下计数。时钟选择: 168Mhz 或者 168Mhz 的八分钟
一( 21Mhz ) .
通俗的来看:固定周期会触发一次中断。
基本定时器:计数方式:向上计数。时钟选择: 168Mhz~(168/65535Mhz).
通俗的来看:(滴答定时器的 + 时钟分频功能 = 基本定时器。)
通用定时器:
通俗的来看:(基本定时器 + 捕获通道 = 通用定时器)
高级定时器:
通俗的来看:(基本定时器 + 互补输出功能 = 高级定时器)
参开如图:

二 定时器的中断使用
2.1 定时器工作示意图:

从上图一眼看出:
接入定时器的时钟频率( TIM1,TIM8,TIM9,TIM10,TIM11 ) 168Mhz, 会经过分频
系数进行降低频率,然后进入计数单元作为实际的运算速率,我们要确认时钟频
率降低多少倍。第二呢,计数单元需要我们确认到向上计数 / 向下计数。还需要
确定计数的大小。
得到结论:定时器至少需要配置分频系数,计数方式,计数大小 3 个参数。完成
这三个参数,定时器就可以周期性的调用中断函数了
代码流程图





三 定时器的深化和硬件特性
特点:中断服务程序的 快进快出,短小精悍 。这四个字很重要。他的本质:不能
中断服务程序长时间占用 CPU 。
3.1. 开发任务:
任务 1 :中断服务程序承担的任务本身比较复杂,涉及的数据处理非常复杂。这
样你的中断服务程序代码行数量肯定多。这样不符合 " 短小精悍 " 的特点,你该如
何解决?
方案展示:使用变量 i 作为 FLAG, 中断函数仅仅承担修改 FLAG 的数值。具体操作
的复杂代码,可以放在main函数里面去。减轻中断服务程序负担。
任务 2 :在任务 1 的开发背景下,我们遇到了新要求,第一次中断产生,中断服务
退出后。 main 函数处理数据过程非常缓慢(数据处理和校准算法慢,这块已经
无法优化)。导致紧接着的第二次同一中断产生,不能及时响应。测试现场表现
为:概率性未能响应中断任务的 BUG 。请提出解决方案。
方案展示:第二次中断产生,说明现场环境已经改变,第一次中断的数据已经失
效,加工处理第一次中断的数据,已经丧失意义。直接暂停或抛弃第一次的数
据。响应第二次中断。

相关推荐
三佛科技-134163842123 分钟前
FT8353系列(FT8353A/B/C/CD/DD/K/KD/PD)隔离型LED恒流驱动IC芯片 典型应用电路
单片机·物联网·智能家居·pcb工艺
无人装备硬件开发爱好者1 小时前
深度解析:STM32 MDK 工程 HEX 文件转 BIN 文件 —— 原理、方法、优缺点与实战指南(中)
stm32·嵌入式软件·hex2bin
阿拉斯攀登1 小时前
嵌入式-硬件基础:了解三极管
单片机·嵌入式硬件·三极管
逐步前行1 小时前
C51_74HC165并口转串口
单片机·51单片机
HarrySunCn2 小时前
如何使用VSCode开发Arduino项目
ide·vscode·单片机·编辑器
嵌入式的飞鱼2 小时前
SD NAND 焊接避坑指南:LGA-8 封装手工焊接技巧与常见错误
人工智能·stm32·单片机·嵌入式硬件·tf卡
三佛科技-134163842123 小时前
LN8K05A/B/C_5V非隔离AC-DC电源芯片 典型应用场景、典型电路、与阻容降压的对比分析
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
ACP广源盛139246256733 小时前
GSV6155@ACP#6155产品规格详解及产品应用分享
嵌入式硬件·计算机外设·音视频
大唐荣华3 小时前
灵巧手 - 绳驱(钢丝/绳索驱动)、连杆(Linkage)和直驱(Direct Drive)的技术对比
嵌入式硬件·机械·灵巧手
阿拉斯攀登3 小时前
51单片机:点灯程序的底层拆解
单片机·嵌入式硬件·51单片机