知不足而奋进 望远山而前行
目录
前言
在嵌入式系统开发中,外部中断是一种重要的事件处理机制,能够及时响应外部信号的变化。了解外部中断的触发机制、中断编写逻辑以及PCB中断设计注意事项对于开发人员来说至关重要。本次学习将重点探讨STC8H单片机中的外部中断机制,以及如何编写外部中断的代码逻辑。
目标
- 理解外部中断触发机制
- 掌握中断编写逻辑
- 了解PCB中断设计注意事项
内容
STC8H中断外部中断
|------|------|-------------|
| 外部中断 | 引脚 | 备注 |
| INT0 | P3.2 | 支持上升沿和下降沿中断 |
| INT1 | P3.3 | 支持上升沿和下降沿中断 |
| INT2 | P3.6 | 只支持下降沿中断 |
| INT3 | P3.7 | 只支持下降沿中断 |
| INT4 | P3.0 | 只支持下降沿中断 |
在数字电路中,信号的电平变化分为上升沿和下降沿。
上升沿指的是信号从低电平变为高电平的瞬间,下降沿指的是信号从高电平变为低电平的瞬间。
例如,当一个开关被按下时,电路中的信号从低电平变为高电平,此时发生了一个上升沿;当开关被松开时,信号从高电平变为低电平,此时发生了一个下降沿。在数字电路中,上升沿和下降沿往往会被用作时序控制和数据传输等方面的参考信号。
外部中断编写
- 引入外部中断库函数
-
Exti.h``Exti.c
Exti_Isr.cNVIC.c
NVIC.h
-
配置外部中断
#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) {
// 当中断触发时的实现逻辑
} -
调用中断触发函数
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中断设计
要了解的一些情况:
- 芯片引脚支持触发类型,是上升沿触发还是下降沿触发。
- 外部中断发送者是否是可控的,是不是能控制高低电平。
-
- 能控制最好,芯片方的引脚只需要关注是不是外部中断引脚。
- 不能控制,要了解对方的触发方式,寻找芯片对应的触发类型引脚。
- 不能控制,芯片的外部中断引脚没有对应的触发方式了,电路设计时,做上拉或者下拉电阻。
总结
通过本次学习,我们深入了解了STC8H单片机中外部中断的相关知识,包括外部中断的触发方式、中断编写逻辑以及PCB中断设计的注意事项。在实际应用中,我们可以通过配置引脚和中断响应函数来实现外部中断的处理,从而实现对外部事件的及时响应和处理。掌握外部中断的知识可以帮助开发人员更好地设计和实现嵌入式系统,在提高系统的稳定性和可靠性方面发挥重要作用。在未来的项目中,我们可以根据具体需求灵活运用外部中断技术,提升产品的性能和可靠性。