【STC15库函数上手笔记】3、外部中断

发布者:数字探险家最新更新时间:2022-08-01 来源: csdn关键字:STC15  库函数  外部中断 手机看文章 扫描二维码
随时随地手机看文章

STC实验箱4

IAP15W4K58S4

Keil uVision V5.29.0.0

PK51 Prof.Developers Kit Version:9.60.0.0


硬知识

摘自《STC库函数使用参考》


外中断初始化函数

Ext_Inilize

在这里插入图片描述

EXTI_InitTypeDef的定义见于文件"Exti.H"。


typedef struct 

{

u8 EXTI_Mode; 

u8 EXTI_Polity; 

u8 EXTL_Interrupt;

} EXTI_InitTypeDef;


EXTI_Mode:设置外中断的工作模式:初始化INT0、INT1时的取值,初始化INT2,INT3.INT4时忽略,固定为下降沿中断。

在这里插入图片描述
在这里插入图片描述

EXTI_Polity:中断的优先级:初始化INT0、INT1时的取值,初始化INT2,INT3,INT4时忽略,固定为低优先级中断。

在这里插入图片描述

EXTI_Interrupt:中断允许或禁止:

在这里插入图片描述

测试

在这里插入图片描述

在这里插入图片描述

main.c

#include "./Drivers/config.h"

#include "./Drivers/delay.h"


#include "./Drivers/GPIO.h"

#include "./Drivers/Exti.h"


void GPIO_config(void)

{

GPIO_InitTypeDef GPIO_InitStructure; //结构定义

GPIO_InitStructure.Mode = GPIO_OUT_PP; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP

GPIO_InitStructure.Pin  = GPIO_Pin_6 | GPIO_Pin_7; //指定要初始化的IO, 或操作

GPIO_Inilize(GPIO_P1,&GPIO_InitStructure); //P1.6、P1.7初始化为推挽输出

GPIO_Inilize(GPIO_P4,&GPIO_InitStructure); //P4.6、P4.7初始化为推挽输出

GPIO_InitStructure.Pin  = GPIO_Pin_2 | GPIO_Pin_3; //指定要初始化的IO, 或操作

GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP

GPIO_Inilize(GPIO_P3,&GPIO_InitStructure); //P3.2、P3.3初始化为上拉输入

P32 = 1;

P33 = 1;

}


void EXTI_config(void)

{

EXTI_InitTypeDef EXTI_InitStructure; //结构定义


EXTI_InitStructure.EXTI_Mode      = EXT_MODE_Fall; //中断模式,  EXT_MODE_RiseFall, EXT_MODE_Fall

EXTI_InitStructure.EXTI_Polity    = PolityLow; //中断优先级,   PolityLow,PolityHigh

EXTI_InitStructure.EXTI_Interrupt = ENABLE; //中断允许,     ENABLE或DISABLE

Ext_Inilize(EXT_INT0,&EXTI_InitStructure); //初始化INT0 EXT_INT0,EXT_INT1,EXT_INT2,EXT_INT3,EXT_INT4

Ext_Inilize(EXT_INT1,&EXTI_InitStructure); //初始化INT0 EXT_INT0,EXT_INT1,EXT_INT2,EXT_INT3,EXT_INT4

}


bit P32_Flag = 0;

bit P33_Flag = 0;

void main(void)

{

u8 Dir_Flag = 0;

u8 LED_Port = 0;

u8 i = 0;


GPIO_config();

EXTI_config();

EA = 1;

while(1)

{

if (P32_Flag)

{

delay_ms(20);

if (P32 == 0)

{

Dir_Flag = 0;

}

while (P32 == 0);

P32_Flag = 0;

}

if (P33_Flag)

{

delay_ms(20);

if (P33 == 0)

{

Dir_Flag = 1;

}

while (P33 == 0);

P33_Flag = 0;

}

if (Dir_Flag)

{

LED_Port >>= 1;

if ((LED_Port & 0x0f) == 0x00)

LED_Port = 0x08;

}

else

{

LED_Port <<= 1;

if ((LED_Port & 0x0f) == 0x00)

LED_Port = 0x01;

}

P17 = (((~LED_Port) & 0x01) != 0);

P16 = (((~LED_Port) & 0x02) != 0);

P47 = (((~LED_Port) & 0x04) != 0);

P46 = (((~LED_Port) & 0x08) != 0);

i = 25;

while (P32 && P33 && i--)

delay_ms(20);

}

}


Exti.c

修改Exti.c中的中断服务函数:


/********************* INT0中断函数 *************************/

void Ext_INT0 (void) interrupt INT0_VECTOR //进中断时已经清除标志

{

extern bit P32_Flag;

P32_Flag = 1;

}


/********************* INT1中断函数 *************************/

void Ext_INT1 (void) interrupt INT1_VECTOR //进中断时已经清除标志

{

extern bit P33_Flag;

P33_Flag = 1;

}


实验现象同上一个实验。


关键字:STC15  库函数  外部中断 引用地址:【STC15库函数上手笔记】3、外部中断

上一篇:【STC15库函数上手笔记】4、USART串口
下一篇:【STC15库函数上手笔记】2、GPIO

推荐阅读最新更新时间:2024-11-08 10:28

单片机外部中断线的作用
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。图中的蓝色虚线箭头,标出了外部中断信号的传输路径。 首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。 接下来是编号3的或门,这个或门的另一个输入是软件中断/事件寄存器,
[单片机]
单片机<font color='red'>外部中断</font>线的作用
单片机外部中断的电平触发和边沿触发程序
折腾了一上午,没有人带只能自己摸索了........ 接法:JP10接J12;JP8接JP16;P3^2接GND;P2^0接LED; 只有打开全局开关,其它各位的开关才可以开启。 所有开关赋值为1则开,赋值为0则关。 位序号 D0 D1 D2 D3 D4 D5 D6 D7 说明 外部中断0 定时/计数0 外部中断1 定时/计数1 串行口中断 定时/计数2 (52单片机) 无效位
[单片机]
单片机<font color='red'>外部中断</font>的电平触发和边沿触发程序
单片机外部中断源的扩展
设计一个五个外部中断源系统。其中最高级的外部中断源连接到INT0脚,其余中断源连接到INT1脚。画出系统电路原理图,并写出外部中断1的中断服务程序。 案例分析: 中断与查询相结合的方法是把系统中多个外部中断源按它们的重要程度进行排序,把其中最高级别的中断源接到MCS-51的一个外部中断源输入端(例如接到 脚),其余的中断源用线 或 的方法连接到另一个外部中断输入端( ),并同时接到一个I/O口,如图3中所示接到P1口。中断请求由硬件电路产生,而中断源的识别由程序查询来处理,查询顺序由中断源的优先级决定。图3为五个外部中断源的连接电路,其中设备1~4经OC门与 连接,并连接到P1.0~P1.3,均采用电平触发方式。设备0为最高级
[单片机]
单片机<font color='red'>外部中断</font>源的扩展
STC15单片机利用ESP8266控制LED 源程序
输入ESPKLED,LED灯亮,输入ESPGLED,灯灭 单片机源程序如下: /************************************************** * * 平台:keil5 + STC154K58S * 功能:输入ESPKLED,LED灯亮,输入ESPGLED,灯灭 * 日期:2020年7月22日 * ***************************************************/ # include config.h # include GPIO.h # include delay.h # include USART.h # include stri
[单片机]
STM32F1库函数初始化系列:定时器中断
1 static void TIM3_Configuration(void) //10ms 2 { 3 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; 4 NVIC_InitTypeDef NVIC_InitStructure; 5 6 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // RCC_APB1为72M频率 7 8 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //选择中断分组 9 10 NVIC_InitSt
[单片机]
51单片机——外部中断
一、外部中断 1.1 中断 关于中断的概念在上一篇博客中已经提到了。(传送门:51单片机入门教程(5)——定时器中断) 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。 51单片机的中断源优先级与向量号如下表: 1.2 外部中断 除了定时器中断外,51单片机还有两个外部中断源——外部中断0、外部中断1。分别由单片机的12号引脚(INT0/P3.2)、13号(INT1/P3.3)引脚的低电平/负跳变触发。 和定时器中断一样,要使用这两个外部中断,首先要进行初始化操作,即写入相关的寄存器。初始化外部中断需要写入下面两
[单片机]
51单片机——<font color='red'>外部中断</font>
STM32库函数EXTI_GetFlagStatus和EXTI_GetIT
一个是获取状态的,一个是获取中断的。 EXTI_GetFlagStatus只是纯粹读取中断标志位的状态,但是不一定会响应中断(EXT_IMR寄存器对该中断进行屏蔽);而EXTI_GetITStatus除了读取中断标志位,还查看EXT_IMR寄存器是否对该中断进行屏蔽,在中断挂起&没有屏蔽的情况下就会响应中断。仔细看看代码就知道区别了 FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line) { FlagStatus bitstatus = RESET; assert_param(IS_GET_EXTI_LINE(EXTI_Line)); if ((EXTI- PR &
[单片机]
基于ARM微处理器的嵌入式以太网接口设计
    电子设备日趋网络化的背景下,作为目前广泛使用的以太网以及TCP/IP 协议已经成为事实上最常用的网络标准之一,它以高速、可靠、分层以及可扩充性使得它在各个领域的应用越来越灵活,很多情况下运用以太网和TCP/IP,能够简化结构和降低成本。但是,目前关于嵌入式以太网的设计方案不是很多,在这不多的方案中,大多是基于单片机或DSP 的。两者都存在要外扩很多外设的问题,并且前者速度太慢,后者成本又太高,这在一些对设备尺寸要求很小的场合是不行的。   本设计中,采用了基于ARM内核的微处理器S3C44BOX为基础的嵌入式系统与10MB 以太网控制芯片RTL8019AS 的接口电路和实现方法。   S3C44BOX芯片的介绍S3C4
[单片机]
基于ARM微处理器的嵌入式以太网接口设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved