OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5257|回复: 11

[精英F103] 原子例程做外部中断按键实验,LED初始化放在EXTI初始化后面,不能出效果,而LED初始化放在EXTI初始化前面就能出效果。

[复制链接]

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2017-7-16
在线时间
13 小时
发表于 2017-7-16 21:41:34 | 显示全部楼层 |阅读模式
1金钱
key初始化的位置没有影响,具体代码如下:,LED初始化放在EXTI初始化后面不能出效果。(初始化函数全部是复制的例程里面的,只不过改了初始化顺序)

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2017-7-16
在线时间
13 小时
 楼主| 发表于 2017-7-18 15:37:50 | 显示全部楼层
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2017-7-16
在线时间
13 小时
 楼主| 发表于 2017-7-18 15:38:01 | 显示全部楼层
疑问了好多天了
回复

使用道具 举报

5

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2016-10-20
在线时间
63 小时
发表于 2017-7-18 15:57:14 | 显示全部楼层
在中间加延时试试一开始多加点慢慢减
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-7-19 01:39:42 | 显示全部楼层
寄存器版本试过么?
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2017-7-16
在线时间
13 小时
 楼主| 发表于 2017-7-19 10:40:53 | 显示全部楼层
正点原子 发表于 2017-7-19 01:39
寄存器版本试过么?

没用寄存器版本的,刚开始学。按理论说,这样应该可以啊,是不是那里冲突了?
回复

使用道具 举报

2

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2018-4-29
在线时间
21 小时
发表于 2018-7-17 13:58:02 | 显示全部楼层
我也发现有这个问题
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-7-18 01:50:18 | 显示全部楼层
仿真看看找下问题,是不是卡死在某个库函数代码里面了?
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2018-8-28
在线时间
4 小时
发表于 2019-7-16 10:11:35 | 显示全部楼层
同问,外部中断实验发现此问题。 别的初始化中调用delay了吗?
回复

使用道具 举报

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2019-7-20
在线时间
26 小时
发表于 2019-7-20 10:33:21 | 显示全部楼层
  1. #include "stm32f10x.h"
  2. #include "led.h"
  3. #include "key.h"
  4. #include "delay.h"


  5. void EXIT_init()
  6. {
  7.         GPIO_InitTypeDef GPIO_InitSY;
  8.         EXTI_InitTypeDef EXTI_InitSY;
  9.         NVIC_InitTypeDef NVIC_InitSY;
  10.        
  11.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);
  12.         RCC_APB1PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
  13.        
  14.         GPIO_InitSY.GPIO_Mode=GPIO_Mode_IPU;
  15.         GPIO_InitSY.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4;
  16.         GPIO_InitSY.GPIO_Speed=GPIO_Speed_50MHz;
  17.         GPIO_Init(GPIOE,&GPIO_InitSY);
  18.        
  19.        
  20.         GPIO_InitSY.GPIO_Mode=GPIO_Mode_IPD;
  21.         GPIO_InitSY.GPIO_Pin=GPIO_Pin_0;
  22.         GPIO_Init(GPIOA,&GPIO_InitSY);
  23.        
  24.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);
  25.         EXTI_InitSY.EXTI_Line=EXTI_Line3;
  26.         EXTI_InitSY.EXTI_LineCmd=ENABLE;
  27.         EXTI_InitSY.EXTI_Mode=EXTI_Mode_Interrupt;
  28.         EXTI_InitSY.EXTI_Trigger=EXTI_Trigger_Falling;
  29.        
  30.         EXTI_Init(&EXTI_InitSY);
  31.        
  32.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);
  33.         EXTI_InitSY.EXTI_Line=EXTI_Line4;
  34.         EXTI_Init(&EXTI_InitSY);
  35.        
  36.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
  37.         EXTI_InitSY.EXTI_Line=EXTI_Line0;
  38.         EXTI_InitSY.EXTI_Trigger=EXTI_Trigger_Rising;
  39.         EXTI_Init(&EXTI_InitSY);
  40.        
  41.         NVIC_InitSY.NVIC_IRQChannel=EXTI0_IRQn;
  42.         NVIC_InitSY.NVIC_IRQChannelCmd=ENABLE;
  43.         NVIC_InitSY.NVIC_IRQChannelPreemptionPriority=2;
  44.         NVIC_InitSY.NVIC_IRQChannelSubPriority=1;
  45.         NVIC_Init(&NVIC_InitSY);
  46.        
  47.         NVIC_InitSY.NVIC_IRQChannel=EXTI3_IRQn;
  48.         NVIC_InitSY.NVIC_IRQChannelCmd=ENABLE;
  49.         NVIC_InitSY.NVIC_IRQChannelPreemptionPriority=1;
  50.         NVIC_InitSY.NVIC_IRQChannelSubPriority=2;
  51.         NVIC_Init(&NVIC_InitSY);
  52.        
  53.         NVIC_InitSY.NVIC_IRQChannel=EXTI4_IRQn;
  54.         NVIC_InitSY.NVIC_IRQChannelCmd=ENABLE;
  55.         NVIC_InitSY.NVIC_IRQChannelPreemptionPriority=3;
  56.         NVIC_InitSY.NVIC_IRQChannelSubPriority=1;
  57.         NVIC_Init(&NVIC_InitSY);
  58. }


  59. void EXTI0_IRQHandler()
  60. {
  61.         delay_ms(10);
  62.         if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1)
  63.         {
  64.                 PBout(5)=~PBout(5);
  65.         }
  66.         EXTI_ClearITPendingBit(EXTI_Line0);
  67. }

  68. void EXTI3_IRQHandler()
  69. {
  70.         delay_ms(10);
  71.         if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0)
  72.         {
  73.                 PEout(5)=~PEout(5);
  74.         }
  75.         EXTI_ClearITPendingBit(EXTI_Line3);
  76. }


  77. void EXTI4_IRQHandler()
  78. {
  79.         delay_ms(10);
  80.         if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0)
  81.         {
  82.                 PEout(5)=~PEout(5);
  83.                 PBout(5)=~PBout(5);
  84.         }
  85.         EXTI_ClearITPendingBit(EXTI_Line4);
  86. }


  87.        
  88. int main(void)
  89. {
  90.        
  91.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  92.          delay_init();
  93.          led_init();
  94.         EXIT_init();
  95.        
  96.         while(1);
  97.        


  98.        
  99. }
  100. 你可能配错了哪里,前后对调了,都可,我的精英板
复制代码
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2019-7-21 03:16:55 | 显示全部楼层
不应该,你看下代码?试试寄存器版本的?
回复

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2019-7-9
在线时间
29 小时
发表于 2019-8-4 11:31:43 | 显示全部楼层
之前看原子pdf印象中有说明,你如果要弄清楚  看下初始化寄存器配置问题  没必要太纠结这这个吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 15:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表