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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关推荐
LCMICRO-133108477466 小时前
长芯微LPS123完全P2P替代ADP123,高性能、低压差的线性稳压器
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·线性稳压器
龙文浩_7 小时前
Attention Mechanism: From Theory to Code
人工智能·深度学习·神经网络·学习·自然语言处理
守护安静星空8 小时前
esp32开发笔记-工程搭建
笔记·单片机·嵌入式硬件·物联网·visual studio code
ACP广源盛139246256738 小时前
破局 Type‑C 切换器痛点@ACP#GSV6155+LH3828/GSV2221+LH3828 黄金方案
c语言·开发语言·网络·人工智能·嵌入式硬件·计算机外设·电脑
爱上好庆祝9 小时前
svg图片
前端·css·学习·html·css3
时空自由民.9 小时前
ST7701S 3.5寸显示屏
单片机
嵌入式小企鹅9 小时前
蓝牙学习系列(八):BLE L2CAP 协议详解
网络·学习·蓝牙·ble·协议栈·l2cap
金戈鐡馬10 小时前
BetaFlight中的定时器引脚绑定详解
stm32·单片机·嵌入式硬件·无人机
jiayong2310 小时前
第 8 课:开始引入组合式函数
前端·javascript·学习
Wave84511 小时前
FreeRTOS软件定时器详解
stm32·单片机·freertos