嵌入式开发学习日志30——stm32之定时器中断简单项目练习

在了解了定时器中断的相关知识后,就可以来做一些简单的项目练习了,这里还是以最通俗易懂的点灯操作为例。

由定时器中断控制的点灯操作和其他中断一样,在中断产生前灯泡是不会亮的,但是一旦中断产生,中断函数就会执行,此时灯泡就会亮起。

但是值得注意的是,相比于用开关控制LED的外部中断EXTI,定时器中断每隔固定的时间就会让灯泡自动亮起,实现一个小的"自动化"操作,可谓解放双手。

下面让我们来看看定时器中断的部分怎么写。

首先还是头文件的书写,这是既定操作,不过这里的初始化函数中需要带入参数,以便根据你的需要调整定时器的参数。

首先,由于定时器时钟模块挂载在了APB1上,所以首先要开启对应的时钟。下面就是对定时器进行初始化配置。

第一个TIM_Period,需要传入的就是你需要计数的值,这个参数由你传进去的自动重载值arr决定。第二个Prescaler决定的是分频的系数,这同样由你传入的psc的数值决定。第三个就是决定计数方式的CounterMode了,这里正常选择向上计数,如果向下计数,它计数方式是从自动重载值往下减到0为止。

在初始化参数后,我们还需要对定时器触发中断的方式进行设定,毕竟它的方式有四种。这里选择计数引发的更新中断。

为了防止开启中断后立即进入中断,我们需要先将中断标志清除,要用到clearIT函数。

下面就是中断操作绕不开的NVIC初始化,具体步骤在之前详细介绍过了,这里就不多赘述,但要注意的是,定时器通道也需要通过查表来确认,不能随便写。

最后,最最重要的是,定时器使能,也就是所谓的开启定时器,否则你就干瞪眼看着灯泡啥事儿都不发生吧。

定时器中断服务函数的编写和外部中断基本差不都,也不需要在头文件中声明,同时也要注意最后清除中断标志的操作,否则会一直产生中断。

(最近一直很忙,日更的学习日志可能要变成不定期更新了,在这里对于愿意看我写的菜鸟文章的读者说声抱歉)

相关推荐
LCG元14 分钟前
STM32项目实战:基于STM32F103的智能农业监控系统
stm32·单片机·嵌入式硬件
ACP广源盛1392462567316 分钟前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
努力努力再努力FFF37 分钟前
医生对AI辅助诊断感兴趣,作为临床人员该怎么了解和学习?
人工智能·学习
一起搞IT吧2 小时前
Android性能系列专题理论之十:systrace/perfetto相关指标知识点细节含义总结
android·嵌入式硬件·智能手机·性能优化
sakiko_2 小时前
UIKit学习笔记5-使用UITableView制作聊天页面
笔记·学习·swift·uikit
Truffle7电子2 小时前
STM32CubeIDE/Programmer/Touch GFX 应用
stm32·单片机·嵌入式硬件
Alice-YUE3 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
constant_LDX3 小时前
步进电机开发(一、硬件设计)
单片机·嵌入式硬件
北山有鸟4 小时前
修改源码法和插件法
嵌入式硬件·学习
richxu202510014 小时前
嵌入式学习之路->stm32篇->(14)通用定时器(上)
stm32·单片机·嵌入式硬件·学习