STC8增强型单片机进阶开发--外部中断(EXTI)

知不足而奋进 望远山而前行


目录

文章目录

前言

目标

内容

STC8H中断外部中断

外部中断编写

外部中断测试

测试外部中断0

测试外部中断2、3或者4

PCB中断设计

总结



前言

在嵌入式系统开发中,外部中断是一种重要的事件处理机制,能够及时响应外部信号的变化。了解外部中断的触发机制、中断编写逻辑以及PCB中断设计注意事项对于开发人员来说至关重要。本次学习将重点探讨STC8H单片机中的外部中断机制,以及如何编写外部中断的代码逻辑。


目标

  1. 理解外部中断触发机制
  2. 掌握中断编写逻辑
  3. 了解PCB中断设计注意事项

内容

STC8H中断外部中断

|------|------|-------------|
| 外部中断 | 引脚 | 备注 |
| INT0 | P3.2 | 支持上升沿和下降沿中断 |
| INT1 | P3.3 | 支持上升沿和下降沿中断 |
| INT2 | P3.6 | 只支持下降沿中断 |
| INT3 | P3.7 | 只支持下降沿中断 |
| INT4 | P3.0 | 只支持下降沿中断 |

在数字电路中,信号的电平变化分为上升沿和下降沿。

上升沿指的是信号从低电平变为高电平的瞬间,下降沿指的是信号从高电平变为低电平的瞬间。

例如,当一个开关被按下时,电路中的信号从低电平变为高电平,此时发生了一个上升沿;当开关被松开时,信号从高电平变为低电平,此时发生了一个下降沿。在数字电路中,上升沿和下降沿往往会被用作时序控制和数据传输等方面的参考信号。

外部中断编写

  1. 引入外部中断库函数
    1. Exti.h``Exti.cExti_Isr.c
    2. NVIC.c NVIC.h
  1. 配置外部中断

    #include "Exti.h"
    #include "NVIC.h"

    /******************** INT配置 ********************/
    void Exti_config(void)
    {
    EXTI_InitTypeDef Exti_InitStructure; //结构定义

    复制代码
     Exti_InitStructure.EXTI_Mode      = EXT_MODE_RiseFall;//中断模式,   EXT_MODE_RiseFall,EXT_MODE_Fall
     Ext_Inilize(EXT_INT0,&Exti_InitStructure);				//初始化
     NVIC_INT0_Init(ENABLE,Priority_0);		//中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3

    }
    void ext_int0_call(void) {
    // 当中断触发时的实现逻辑
    }

  2. 调用中断触发函数

    extern void ext_int0_call();
    //========================================================================
    // 函数: INT0_ISR_Handler
    // 描述: INT0中断函数.
    // 参数: none.
    // 返回: none.
    // 版本: V1.0, 2020-09-23
    //========================================================================
    void INT0_ISR_Handler (void) interrupt INT0_VECTOR //进中断时已经清除标志
    {
    ext_int0_call();
    }

外部中断测试

测试外部中断0

测试上升沿和下降沿中断

初始化EXT_INT0,并将P32设置为准双向或HighZ高阻输入模式(不设置默认也是HighZ)。

按下核心板上的P32按钮,编写中断函数,观察上升沿和下降沿对应日志

测试外部中断2、3或者4

案例设置:

  • 准备一个引脚(例如P53暂且叫做A引脚),初始化时为输出模式,并且为低电
  • 初始化中断引脚P3.6或者P3.7(暂且叫做B引脚),配置为下降沿触发,并且实现中断事件函数
  • 通过杜邦线将A引脚和B引脚连接
  • 准备串口,通过串口工具给串口发送指令
  • 串口接收到特定指令时,将A引脚拉高或拉低
  • 在中断事件函数中进行打印,观察打印结果

测试上升沿案例会发现无效,这个由芯片内部决定的。

PCB中断设计

要了解的一些情况:

  1. 芯片引脚支持触发类型,是上升沿触发还是下降沿触发。
  2. 外部中断发送者是否是可控的,是不是能控制高低电平。
    1. 能控制最好,芯片方的引脚只需要关注是不是外部中断引脚。
    2. 不能控制,要了解对方的触发方式,寻找芯片对应的触发类型引脚。
    3. 不能控制,芯片的外部中断引脚没有对应的触发方式了,电路设计时,做上拉或者下拉电阻。

总结

通过本次学习,我们深入了解了STC8H单片机中外部中断的相关知识,包括外部中断的触发方式、中断编写逻辑以及PCB中断设计的注意事项。在实际应用中,我们可以通过配置引脚和中断响应函数来实现外部中断的处理,从而实现对外部事件的及时响应和处理。掌握外部中断的知识可以帮助开发人员更好地设计和实现嵌入式系统,在提高系统的稳定性和可靠性方面发挥重要作用。在未来的项目中,我们可以根据具体需求灵活运用外部中断技术,提升产品的性能和可靠性。

相关推荐
2301_7756023830 分钟前
STM32什么是寄存器
stm32·单片机·嵌入式硬件
国科安芯3 小时前
抗辐照MCU在卫星载荷电机控制器中的实践探索
网络·嵌入式硬件·硬件工程·智能硬件·空间计算
双古3 小时前
步进电机调试记录(先让我的步进电机转起来)
单片机·嵌入式硬件
lixzest4 小时前
STM32开发中,线程启动异常问题排查简述
stm32·嵌入式硬件
程序员JerrySUN4 小时前
全面理解 Linux 内核性能问题:分类、实战与调优策略
java·linux·运维·服务器·单片机
学习噢学个屁4 小时前
基于STM32语音识别柔光台灯
c语言·stm32·单片机·嵌入式硬件·语音识别
欢乐熊嵌入式编程7 小时前
欢乐熊大话蓝牙知识14:用 STM32 或 EFR32 实现 BLE 通信模块:从0到蓝牙,你也能搞!
stm32·单片机·嵌入式硬件
傍晚冰川7 小时前
FreeRTOS任务调度过程vTaskStartScheduler()&任务设计和划分
开发语言·笔记·stm32·单片机·嵌入式硬件·学习
SY师弟10 小时前
51单片机基础部分——矩阵按键检测
嵌入式硬件·矩阵·51单片机
Lester_110111 小时前
嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析
笔记·stm32·单片机·学习·freertos