STM32F103 GPIO的外部中断的使用例子。
来源:互联网 发布:天津大学网络教学 编辑:程序博客网 时间:2024/04/28 03:23
STM32的GPIO可以作为中断输入使用,这样增强了实时检测性,可以用于外部按键或是触控等使用。如果使用,其实不难,这里使用标准的固件库,加入外部中断的库文件:stm32f10x_exti.c
在stm32f10x_conf.h 中,打开 #include "stm32f10x_exti.h"
这里通过外部触控的方式,点亮或是关闭一个LED灯的例子,熟悉一下STM32F103 系列外部中断的使用。
我这里使用的GPIO为:PC11,头文件的GPIO宏定义为:
/**** EXTI Control ****/void EXTI_GPIO_Init(void);#define RCC_TOUCHOUTRCC_APB2Periph_GPIOC#define TOUCHOUT_PORT GPIOC#define TOUCHOUT_PINS GPIO_Pin_11#defineTouchOut() GPIO_ReadInputDataBit(TOUCHOUT_PORT,TOUCHOUT_PINS)
外部中断函数实现如下:
void EXTI_GPIO_Init(void){NVIC_InitTypeDef NVIC_InitStructure;EXTI_InitTypeDef EXTI_InitStructure;GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_TOUCHOUT|RCC_APB2Periph_AFIO, ENABLE);//打开GPIO AFIO的时钟GPIO_InitStructure.GPIO_Pin = TOUCHOUT_PINS; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_Init(TOUCHOUT_PORT, &GPIO_InitStructure); EXTI_ClearITPendingBit(EXTI_Line11);GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource11);//PC11 为GPIOC的PIN11EXTI_InitStructure.EXTI_Line= EXTI_Line11; //PC11,为:EXTI_Line11EXTI_InitStructure.EXTI_Mode= EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger= EXTI_Trigger_Rising_Falling; //中断方式为上升与下降沿EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //NVICNVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority= 2; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);}
下面为中断函数的实现方式:
void EXTI15_10_IRQHandler(void)//这里为:EXTI15_10 (外部中断号的10~15都在这里实现){ if(EXTI_GetITStatus(EXTI_Line11) != RESET)//这里为判断相应的中断号是否进入中断,如果有多个中断的话。 { EXTI_ClearITPendingBit(EXTI_Line11);//清中断 if(Change_Flag!=TouchOut())LED(ON); elseLED(OFF); }}
因此,就实现了外部中断的控制。按键,如果只有一两个,不想用轮循扫描的方式,就可以用外部中断的方式判断。这样可以增强实时性,也不过多占用CPU资源。
1 0
- STM32F103 GPIO的外部中断的使用例子。
- STM32之中断与事件---一个使用GPIO作为外部中断的示例
- STM32F103的GPIO 模式区分
- STM32F103的GPIO配置方式
- 外部中断的使用~~
- 外部中断的使用
- STM32f103 外部引中断
- 基于UC/COSII系统的STM32F103系列单片机外部中断按键的一种使用方法
- STM32外部中断的使用
- LPC2478的外部中断使用
- STM32外部中断的使用
- STM32F1外部中断的使用
- linux GPIO中断的使用笔记
- 关于ESP8266 GPIO中断使用的总结
- 关于ESP8266 GPIO中断使用的总结
- at91sam926X的GPIO中断
- 使用gpiolib的GPIO应用例子
- 使用gpiolib的GPIO应用例子
- UVA - 657 The die is cast
- PAT 1010. Radix
- C/C++的class和struct的区别
- 在一个排序数组中,输出给定数字出现的次数
- JQuery DomLazyLoad插件
- STM32F103 GPIO的外部中断的使用例子。
- UVA - 784 Maze Exploration
- C++中的显示转换
- Spring 整合 Apache Shiro 实现各等级的权限管理
- JS去重函数的扩展应用
- iOS开发网络篇—数据缓存
- 机器学习-随机森林
- node2vec: 网络结构特征提取
- ORACLE 学习 一 之 表集合操作