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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
leaves falling3 小时前
c语言-扫雷游戏
c语言·单片机·游戏
梁洪飞3 小时前
clk学习
linux·arm开发·嵌入式硬件·arm
浩瀚地学4 小时前
【Java】JDK8的一些新特性
java·开发语言·经验分享·笔记·学习
JeffDingAI4 小时前
【Datawhale学习笔记】深入大模型架构
笔记·学习
暖阳之下5 小时前
学习周报三十一
学习
eewj5 小时前
STM32中FCLK时钟信号的作用
stm32·单片机·嵌入式硬件
淘晶驰AK6 小时前
ESP32和STM32哪个更容易学?
stm32·单片机·嵌入式硬件
Master_oid6 小时前
机器学习29:增强式学习(Deep Reinforcement Learning)④
人工智能·学习·机器学习
楼田莉子7 小时前
Linux学习之磁盘与Ext系列文件
linux·运维·服务器·c语言·学习
一条闲鱼_mytube7 小时前
智能体设计模式(三)多智能体协作-记忆管理-学习与适应
人工智能·学习·设计模式