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中断设计的注意事项。在实际应用中,我们可以通过配置引脚和中断响应函数来实现外部中断的处理,从而实现对外部事件的及时响应和处理。掌握外部中断的知识可以帮助开发人员更好地设计和实现嵌入式系统,在提高系统的稳定性和可靠性方面发挥重要作用。在未来的项目中,我们可以根据具体需求灵活运用外部中断技术,提升产品的性能和可靠性。

相关推荐
Yesheldon几秒前
Cadence 高速系统设计流程及工具使用三
嵌入式硬件·fpga开发·硬件架构·硬件工程·智能硬件
inputA1 小时前
【LwIP源码学习6】UDP部分源码分析
c语言·stm32·单片机·嵌入式硬件·网络协议·学习·udp
思考的味道1 小时前
SVM在医疗设备故障维修服务决策中的应用:策略、技术与实践
嵌入式硬件
真的想上岸啊2 小时前
学习51单片机01(安装开发环境)
嵌入式硬件·学习·51单片机
7yewh3 小时前
MCU程序加密保护(二)ID 验证法 加密与解密
单片机·嵌入式硬件·安全
YOYO--小天3 小时前
RS485和RS232 通信配置
linux·嵌入式硬件
小_楠_天_问3 小时前
第二课:ESP32 使用 PWM 渐变控制——实现模拟呼吸灯或音调变化
c语言·嵌入式硬件·mcu·esp32·arduino·pwm·esp32-s3
欢乐熊嵌入式编程4 小时前
智能手表项目风险评估与应对计划书
嵌入式硬件·物联网·目标跟踪·智能手表
JANYI20185 小时前
TTL、RS-232、RS-485电平转换详解
单片机·嵌入式硬件
平凡灵感码头5 小时前
基于智能家居项目 解析DHT11温湿度传感器
单片机·智能家居