【STC15库函数上手笔记】3、外部中断
目录
- 硬知识
- 外中断初始化函数
- 测试
- 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、外部中断相关推荐
- 【STC15库函数上手笔记】8、比较器
目录 库函数 compare.c compare.h STC15Fxxxx.H 测试程序 main.c STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 ...
- 【STC15库函数上手笔记】7、PCA与PWM
目录 硬知识 硬件知识 CCP/PWM/PCA模块的结构 软件知识 PCA初始化函数 PWM更新占空比函数 测试程序 PWM模式产生PWM信号 main.c 实验现象 16位软件定时器模式模式产生PW ...
- 【STC15库函数上手笔记】9、硬件SPI
目录 硬件知识 库函数 spi.c spi.h 测试 main.c 实验现象 STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Develop ...
- 【STC15库函数上手笔记】6、ADC
目录 硬知识 ADC初始化函数 ADC电源控制函数 ADC查询转换函数 测试 main.c 实验现象 STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 ...
- 【STC15库函数上手笔记】5、定时器
目录 硬知识 定时器初始化函数 测试 基本功能测试 main.c 中断服务函数 实验现象 模拟PWM信号 main.c 实验现象 STC实验箱4 IAP15W4K58S4 Keil uVision V ...
- 【STC15库函数上手笔记】10、EEPROM
目录 硬件知识 基本介绍 软件知识 EEPROM多字节读函数 EEPROM多字节写函数 EEPROM扇区擦除函数函数 测试 main.c 实验现象 STC实验箱4 IAP15W4K58S4 Keil ...
- 【STC15库函数上手笔记】4、USART串口
目录 硬知识 串口初始化函数 串口1写缓冲函数 串口2写缓冲函数 串口1写数据块函数 串口2写数据块函数 模拟串口字节发送函数 模拟串口写数据块函数 测试 硬件串口 模拟串口 soft_uart.c ...
- 【STC15库函数上手笔记】1、建立工程
目录 新建工程 添加文件到工程中 main.c 时钟 STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Vers ...
- 【STC15库函数上手笔记】2、GPIO
目录 硬知识 IO口初始化函数 测试 main.c 实验现象 STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit ...
最新文章
- MyEclipse中的web项目之前有个感叹号
- oracle迁移到mysql工具_oracle数据库想迁移到mysql上 有什么方法或者工具吗
- javascript-04 引用类型
- 征途手游2新开区服务器维护多久,《征途2手游》开启新服“星火燎原”
- SEO技巧--代码优化
- 51Nod-1001 数组中和等于K的数对【排序+二分查找】
- ScreenFlow for mac(屏幕录像软件)
- Android成长日记-仿跑马灯的TextView
- vue拖拽辅助线+改变元素大小组件
- Android中判断应用是否第一次打开
- so文件的编译与使用
- java实现QQ微信扫码登录
- 归并排序 - 维基百科,自由的百科全书
- 【前端】实际开发案例
- 西南知识产权大数据中心落地成都
- Docker下载镜像及运行容器
- 四年开发,最重要的是战略,把目标告诉一个你信赖的人,让他保管
- (ICCV-2017)可变形卷积网络
- android-GooglePlay安装来源追踪PlayInstallReferrer
- fti forming suite 2021介绍(附教程)