STM32F103程序设计-7-引脚输入功能-按键(中断)
来源:互联网 发布:sql loader 350 编辑:程序博客网 时间:2024/05/01 06:56
AFIO时钟的打开。外部中断、重映射、复用功能?当配置AFIO六个寄存器中的值时就需要打开AFIO时钟。
void EXTI0_Config(void)
{
/* Enable GPIOA clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/* Configure PA.00 pin as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Enable AFIO clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
/* Connect EXTI0 Line to PA.00 pin */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
/* Configure EXTI0 line */
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
/* Enable and set EXTI0 Interrupt to the lowest priority */
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
复制完后发现很多错误,这时需要一一解决。其中下图的错误解决方法:LIB加两个库文件misc.c和stm32f10x_exit.c。
中断处理函数:
void EXTI3_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line3) != RESET)
{
/* Turn ON LED2 */
GPIOD->BRR |= (1<<12);
/* Clear the EXTI line 0 pending bit */
EXTI_ClearITPendingBit(EXTI_Line3);
}
EXTI3_Config( )在主程序中记得加上。另外也可以仿照官网的例程做翻转,具体实现:
把GPIOD->BRR |= (1<<12);改为GPIOD->ODR ^= GPIO_Pin_12;即可。同理可以实现KEY1中断的配置与中断处理函数。不同的是中断名和中断处理函数名要查找正确。其中断处理函数名可在启动代码中找到。
最后大家注意一下,在进行中断配置时我们把外中断设置为了上升沿触发:EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
By:霜月孤鸟
2017.2.26
CSDN博客地址:http://blog.csdn.net/ourrtems
欢迎访问、关注单片机百宝箱!
AFIO时钟的打开。外部中断、重映射、复用功能?当配置AFIO六个寄存器中的值时就需要打开AFIO时钟。
void EXTI0_Config(void)
{
/* Enable GPIOA clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/* Configure PA.00 pin as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Enable AFIO clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
/* Connect EXTI0 Line to PA.00 pin */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
/* Configure EXTI0 line */
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
/* Enable and set EXTI0 Interrupt to the lowest priority */
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
复制完后发现很多错误,这时需要一一解决。其中下图的错误解决方法:LIB加两个库文件misc.c和stm32f10x_exit.c。
中断处理函数:
void EXTI3_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line3) != RESET)
{
/* Turn ON LED2 */
GPIOD->BRR |= (1<<12);
/* Clear the EXTI line 0 pending bit */
EXTI_ClearITPendingBit(EXTI_Line3);
}
EXTI3_Config( )在主程序中记得加上。另外也可以仿照官网的例程做翻转,具体实现:
把GPIOD->BRR |= (1<<12);改为GPIOD->ODR ^= GPIO_Pin_12;即可。同理可以实现KEY1中断的配置与中断处理函数。不同的是中断名和中断处理函数名要查找正确。其中断处理函数名可在启动代码中找到。
最后大家注意一下,在进行中断配置时我们把外中断设置为了上升沿触发:EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
By:霜月孤鸟
2017.2.26
CSDN博客地址:http://blog.csdn.net/ourrtems
欢迎访问、关注单片机百宝箱!
- STM32F103程序设计-7-引脚输入功能-按键(中断)
- STM32F103程序设计-6-引脚输入功能-按键(查询)
- mini2440引脚中断输入配置
- STM32F103程序设计-5-控制引脚高低电平的实现
- stm32f103 关于引脚的7中模式
- stm32f103学习笔记(三)按键输入(IO口输入)
- ARM裸机程序设计—按键中断程序设计
- S5PV210 Linux 按键中断输入
- STM32F103C8T6按键中断功能实现
- STM32F103学习笔记(五) 外部中断
- 【stm32f103】stm32 外部中断(寄存器版)
- 【stm32f103】stm32 外部中断(寄存器版)
- STM32F103系列 PB4引脚问题
- S3C6410中断控制,基于OK6410A裸机按键中断程序设计
- STM32F103学习笔记(七) 定时器中断 (更新中断)
- 基于UC/COSII系统的STM32F103系列单片机外部中断按键的一种使用方法
- STM32f103 外部引中断
- UBOOT中断功能初步分析之----按键中断
- NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
- android 调试工具之facebook stetho介绍
- Python Opencv实战之数字识别之knn算法入门
- pat 乙级 1065 单身狗
- 线性回归损失函数为什么要用平方形式
- STM32F103程序设计-7-引脚输入功能-按键(中断)
- 三维bfs
- javascript语言精粹笔记(二)对象
- N皇后问题的两个最高效的算法
- 矩阵理论基础知识(3)--广义逆矩阵
- eclipse中 maven的配置与安装
- LeetCode(1)
- 215. Kth Largest Element in an Array
- C++实现反射(二)