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

相关推荐
小鱼儿电子1 小时前
17-基于STM32的宠物饲养系统设计与实现
stm32·嵌入式硬件·物联网·宠物·宠物饲养系统
小莞尔2 小时前
【51单片机】【protues仿真】基于51单片机四层电梯系统
单片机·嵌入式硬件
CFZPL3 小时前
使用江科大串口发送函数发送freertos的vTaskList出现跑飞
单片机
F133168929573 小时前
WD5030A,24V降5V,15A 大电流,应用于手机、平板、笔记本充电器
stm32·单片机·嵌入式硬件·51单片机·硬件工程·pcb工艺
易享电子4 小时前
基于单片机电器断路器保护器系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·fpga开发·51单片机·proteus
爱倒腾的老唐7 小时前
01、如何学习单片机
单片机·嵌入式硬件·学习
点灯小铭7 小时前
基于单片机的夹具压力控制系统设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计
雾削木13 小时前
stm32解锁芯片
javascript·stm32·单片机·嵌入式硬件·gitee
璞致电子15 小时前
fpga开发板ZYNQ 璞致 PZ7010/7020 邮票孔核心板简介-ZYNQ7000系列小系统学习板
linux·嵌入式硬件·学习·fpga开发·fpga·fpga开发板·xilinx开发板
三佛科技-1341638421215 小时前
手持小风扇MCU方案,智能风扇方案设计开发
单片机·嵌入式硬件