目录

  • 硬知识
    • 外中断初始化函数
  • 测试
    • main.c
    • Exti.c

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_PPGPIO_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_PPGPIO_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_FallEXTI_InitStructure.EXTI_Polity    = PolityLow;         //中断优先级,   PolityLow,PolityHighEXTI_InitStructure.EXTI_Interrupt = ENABLE;             //中断允许,     ENABLE或DISABLEExt_Inilize(EXT_INT0,&EXTI_InitStructure);                //初始化INT0   EXT_INT0,EXT_INT1,EXT_INT2,EXT_INT3,EXT_INT4Ext_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库函数上手笔记】3、外部中断相关推荐

  1. 【STC15库函数上手笔记】8、比较器

    目录 库函数 compare.c compare.h STC15Fxxxx.H 测试程序 main.c STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 ...

  2. 【STC15库函数上手笔记】7、PCA与PWM

    目录 硬知识 硬件知识 CCP/PWM/PCA模块的结构 软件知识 PCA初始化函数 PWM更新占空比函数 测试程序 PWM模式产生PWM信号 main.c 实验现象 16位软件定时器模式模式产生PW ...

  3. 【STC15库函数上手笔记】9、硬件SPI

    目录 硬件知识 库函数 spi.c spi.h 测试 main.c 实验现象 STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Develop ...

  4. 【STC15库函数上手笔记】6、ADC

    目录 硬知识 ADC初始化函数 ADC电源控制函数 ADC查询转换函数 测试 main.c 实验现象 STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 ...

  5. 【STC15库函数上手笔记】5、定时器

    目录 硬知识 定时器初始化函数 测试 基本功能测试 main.c 中断服务函数 实验现象 模拟PWM信号 main.c 实验现象 STC实验箱4 IAP15W4K58S4 Keil uVision V ...

  6. 【STC15库函数上手笔记】10、EEPROM

    目录 硬件知识 基本介绍 软件知识 EEPROM多字节读函数 EEPROM多字节写函数 EEPROM扇区擦除函数函数 测试 main.c 实验现象 STC实验箱4 IAP15W4K58S4 Keil ...

  7. 【STC15库函数上手笔记】4、USART串口

    目录 硬知识 串口初始化函数 串口1写缓冲函数 串口2写缓冲函数 串口1写数据块函数 串口2写数据块函数 模拟串口字节发送函数 模拟串口写数据块函数 测试 硬件串口 模拟串口 soft_uart.c ...

  8. 【STC15库函数上手笔记】1、建立工程

    目录 新建工程 添加文件到工程中 main.c 时钟 STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Vers ...

  9. 【STC15库函数上手笔记】2、GPIO

    目录 硬知识 IO口初始化函数 测试 main.c 实验现象 STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit ...

最新文章

  1. MyEclipse中的web项目之前有个感叹号
  2. oracle迁移到mysql工具_oracle数据库想迁移到mysql上 有什么方法或者工具吗
  3. javascript-04 引用类型
  4. 征途手游2新开区服务器维护多久,《征途2手游》开启新服“星火燎原”
  5. SEO技巧--代码优化
  6. 51Nod-1001 数组中和等于K的数对【排序+二分查找】
  7. ScreenFlow for mac(屏幕录像软件)
  8. Android成长日记-仿跑马灯的TextView
  9. vue拖拽辅助线+改变元素大小组件
  10. Android中判断应用是否第一次打开
  11. so文件的编译与使用
  12. java实现QQ微信扫码登录
  13. 归并排序 - 维基百科,自由的百科全书
  14. 【前端】实际开发案例
  15. 西南知识产权大数据中心落地成都
  16. Docker下载镜像及运行容器
  17. 四年开发,最重要的是战略,把目标告诉一个你信赖的人,让他保管
  18. (ICCV-2017)可变形卷积网络
  19. android-GooglePlay安装来源追踪PlayInstallReferrer
  20. fti forming suite 2021介绍(附教程)

热门文章

  1. Android ANR
  2. smarty二维foreach示例[顺代一维数组],再次加强版
  3. symantec backup exec 2010 基本错误总结
  4. php 获取当天到23 59,js 获取当天23点59分59秒 时间戳 (最简单的方法)
  5. leetcode201. 数字范围按位与
  6. python练习_如何使用Logzero在Python中练习记录
  7. 如何构建自己的免费无服务器评论框
  8. 周末想找个地方敲代码_观看我们的代码游戏,全周末直播
  9. 正则表达式的一些规则
  10. 判断请求来自手机还是PC