STMCU小助手
发布时间:2022-6-21 17:24
|
中断是一种机制,通过这种机制,I/O或指令可以暂停处理器的正常执行,并像具有最高优先级一样先执行自己的任务。也就是说,当外部中断发生时(比如来自某个传感器),处理器暂停其正在执行,首先提供中断服务,然后继续其正常执行。 为了了解 STM32F103C8 中的中断,我们将使用按钮作为外部中断。在这里,我们让从一个变量从 0 开始每秒增1,并将其显示在16x2 LCD上,当按下按钮时,LED亮起,LCD 显示屏会显示 INTERRUPT,松开按钮LED熄灭。 中断类型和 ISR(中断服务程序) 中断大致可以分为两类: 硬件中断: 如果到处理器的信号来自某些外部设备,例如按钮或传感器,或者来自其他信号并告诉处理器执行 ISR 中存在的特定任务的硬件设备,则称为硬件中断。 软件中断:由软件指令产生的中断。 中断服务程序:中断服务程序或中断处理程序是其中包含少量指令的事件,当发生中断时,处理器首先执行 ISR 中的这些代码,然后再继续执行中断之前正在执行的任务。 STM32中的中断语法 在Arduino IDE中,启用ISR具有以下语法attachInterrupt (digitalPinToInterrupt(pin), ISR, mode),同样可以在 STM32 中使用,因为本文正是使用 arduino IDE 上传代码。 digitalPinToInterrupt(pin):就像在Arduino board Uno中,我们有引脚2,3,而在mega中,我们有2,3,18,19,20,21用于中断。在STM32F103C8中,我们也有中断引脚,任何GPIO引脚都可以用于中断。我们只需要指定用于中断的输入引脚。但是,当同时使用多个中断时,我们可能需要遵循一些限制。 ISR:它是一个在发生外部中断时调用的中断处理函数。它没有参数和返回值。 mode:触发中断的方式条件 上升沿:当引脚从 低电平变为 高电平时触发中断。 下降沿:当引脚从 高电平变为 低电平时触发中断。 双边沿触发(CHANGE):当引脚从 低电平变为 高电平或 高电平变为 低电平时触发中断(即,当引脚电平发生变化时)。 使用中断注意事项 中断服务程序功能 (ISR) 必须尽可能短。 避免在ISR中使用delay函数。 电路图和连接说明
按钮引脚的一侧连接到 STM32 的 3.3V,另一侧通过下拉电阻连接到 STM32 的输入引脚(PA0)。 关于使用下拉电阻器,当按下或释放按钮时,微控制器只会在其输入端获得高电平或低电平。如果没有下拉电阻,按钮没有按下,输入端状态不确定(不是高也不是低),并且容易受外界影响,输入端电平可能是浮动随机值(忽高忽低)。
STM32F103C8与LCD的连接 下表显示了 LCD (1602) 和 STM32F103C8 微控制器之间的引脚连接。
STM32F103C8中断编程 程序很简单,使用Arduino IDE编程。 我们将一个变量从 0 开始每秒自增1并将其显示在 1602 LCD 上,每当按下按钮时,LED亮起,LCD 显示屏会显示“Interrupt”,松开按钮LED熄灭。
|
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
【经验分享】STM32CubeIDE汉化
手把手教你VSCode搭建STM32开发环境
RTOS在STM32中的应用
微信公众号
手机版