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.cstm32f10x_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.cstm32f10x_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

欢迎访问、关注单片机百宝箱!


1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑被入侵挖矿怎么办 我把exe删除了怎么办 大学图书馆借书超过期限了怎么办 win10更新完鼠标没有了怎么办 打开软件提示运行出错怎么办 电脑中了u盘病毒怎么办 电脑中病毒自动重启怎么办 病毒软件不断发信息买服务怎么办 qq被腾讯屏蔽了怎么办 电脑被u盘中毒怎么办 电脑一分钟重启怎么办 创维电视音量小怎么办 捷豹pin码忘记了怎么办 华为手机版本更新下载不了怎么办? 微信钱包没有钱怎么办 微信钱包里没有钱怎么办 微信没有收到退款怎么办 微信转账退款没有收到怎么办 礼物跟人家送重复怎么办 你已被steam封禁怎么办 武装突袭3被锁定怎么办 绝地求生右下角小地图变大怎么办 ctrl z 误删了怎么办 武装突袭3渴了怎么办 武装突袭3枪卡壳怎么办 玩武装突袭3CPU不好怎么办? 户户通001信号中断怎么办 电脑运行速度特别慢怎么办 win8.1电脑太卡怎么办 电线厂非法战地没拆够怎么办 久笔记本电脑玩彩虹六号卡怎么办 彩虹六号一直建立小队进不去怎么办 小佩喂食器离线怎么办 手机打游戏掉帧怎么办 电脑打游戏掉帧怎么办 武装突袭3太卡怎么办 英语b级考不过怎么办 绝地求生被燃烧瓶烧了怎么办 搜狗输入法打字出现问好怎么办 全民k歌解码失败怎么办 视频声音小怎么办调大