STM32外部中断设置
来源:互联网 发布:乐陵淘宝客服打包 编辑:程序博客网 时间:2024/06/08 19:39
http://www.cnblogs.com/zjgtan/archive/2013/02/23/2923482.html
硬件情况:采用PA11管脚
需要明确的是,PxN管脚共用外部中断线EXTIN和外部中断向量EXTIN_IRQn和中断服务程序入口EXTIN_IRQHandler,但是需要注意的是[9...5]共用EXTI9_5_IRQn和EXTI9_5_IRQHandler、[15...10]共用EXTI15_10_IRQn和EXTI15_10_IRQHandler
基本过程:
1、设置时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
注意需要打开AFIO时钟
2、配置GPIO
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
采用模拟输入方式
3、将GPIO管脚与外部中断线连接
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource11);
相当重要
4、配置EXTI
EXTI_InitStructure.EXTI_Line = EXTI_Line11;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);
包括触发方式等等
6、配置NVIC
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
//PPP外部中断线
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
7、写中断服务程序
void
EXTI15_10_IRQHandler(
void
)
{
if
(EXTI_GetITStatus(EXTI_Line11) != RESET)
{
EXTI_ClearITPendingBit(EXTI_Line11);
//清除标志
...
}
}
另外,简单的滤波方法可以在主逻辑中实现
0 0
- STM32外部中断设置
- STM32外部中断设置
- STM32外部中断测试
- STM32外部中断测试
- STM32外部中断总结
- STM32外部中断
- STM32外部中断
- STM32外部中断
- STM32外部中断详解
- STM32外部中断详解
- STM32外部中断
- STM32外部中断详解
- STM32 外部中断
- 关于STM32外部中断
- STM32外部中断
- STM32 外部中断
- STM32 外部中断
- stm32外部中断
- 让生活给我一颗勇敢的心
- SQL编程
- Flink运行时之基于Netty的网络通信上
- 电路和电子学
- SKB 的分配细节.
- STM32外部中断设置
- CSS实现网页遮罩层功能
- PopupWindow的使用
- IOS 保存图片至相册
- MYeclipse使用theme
- Java内部类详解
- Eclipse的Java Working set使用方法
- Android VPN编程
- 关于中文命名静态资源导致乱码或者不读取的解决办法