OpenEdv-开源电子网

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

关于32软件中断的问题

[复制链接]

13

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2012-1-29
在线时间
0 小时
发表于 2012-3-31 00:38:03 | 显示全部楼层 |阅读模式
如果将Line0配置给PA0作为按键触发的中断,在打开Line0的软件中断,主函数的while(1){。。。}中的语句并不是从第一句开始执行的,是什么原因?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-3-31 00:40:55 | 显示全部楼层
什么意思?没看懂?
你是说有些语句没执行吗?估计是被编译器优化掉了。
https://github.com/roxma
回复 支持 反对

使用道具 举报

13

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2012-1-29
在线时间
0 小时
 楼主| 发表于 2012-3-31 00:43:42 | 显示全部楼层
int main(void)
{
  NVIC_Configuration();

  /* 配置LED灯使用的GPIO管脚模式*/
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA, ENABLE);  /*使能LED灯使用的GPIO时钟*/

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_8 | GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);     //选择外部中断线0

  EXTI_InitStructure.EXTI_Line = EXTI_Line0;  
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
  EXTI_InitStructure.EXTI_LineCmd = ENABLE; //中断线使能
  EXTI_Init(&EXTI_InitStructure); //初始化中断   
  /* Generate software interrupt: simulate a falling edge applied on Key Button EXTI line */
  EXTI_GenerateSWInterrupt(EXTI_Line0); //EXTI_Line0中断允许 到此中断配置完成,可以写中断处理函数。    使从delay函数后面开始执行 
   flag = 0xfeff ;
 while (1)
  {  
     GPIO_Write(GPIOB, flag);
 flag<<=1;
   delay(30);
  
  
if(flag == 0xEFF0)
       flag = 0xFEFF;
  else if(flag == 0xfffe)  
  flag=0xffff;  
   sta=0;
   
  }
}

第一次运行时是直接从delay()后面开始的
回复 支持 反对

使用道具 举报

13

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2012-1-29
在线时间
0 小时
 楼主| 发表于 2012-3-31 00:47:25 | 显示全部楼层
回复【2楼】Pony279:
---------------------------------


等级:
 注册时间:
 2012/01/29 09:58 
文章: 7 
在线 


int main(void) 

  NVIC_Configuration(); 

  /* 配置LED灯使用的GPIO管脚模式*/ 
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA, ENABLE);  /*使能LED灯使用的GPIO时钟*/
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_8 | GPIO_Pin_9;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
  GPIO_Init(GPIOB, &GPIO_InitStructure); 
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);     //选择外部中断线0 

  EXTI_InitStructure.EXTI_Line = EXTI_Line0;   
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; 
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发 
  EXTI_InitStructure.EXTI_LineCmd = ENABLE; //中断线使能 
  EXTI_Init(&EXTI_InitStructure); //初始化中断    
  /* Generate software interrupt: simulate a falling edge applied on Key Button EXTI line */
   EXTI_GenerateSWInterrupt(EXTI_Line0); //EXTI_Line0中断允许 到此中断配置完成,可以写中断处理函数。    使从delay函数后面开始执行 
    flag = 0xfeff ; 
 while (1) 
  {   
     GPIO_Write(GPIOB, flag); 
 flag<<=1; 
   delay(30); 
   
   
if(flag == 0xEFF0) 
       flag = 0xFEFF; 
  else if(flag == 0xfffe)   
  flag=0xffff;   
   sta=0; 
    
  } 


第一次运行时是直接从delay()后面开始的 
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-3-31 00:55:18 | 显示全部楼层
刚刚测试了,没有你说的问题啊。。。
https://github.com/roxma
回复 支持 反对

使用道具 举报

13

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2012-1-29
在线时间
0 小时
 楼主| 发表于 2012-3-31 00:57:22 | 显示全部楼层
但是下到板子里确实有问题啊;还有那个软件延时的语句是什么作用
回复 支持 反对

使用道具 举报

13

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2012-1-29
在线时间
0 小时
 楼主| 发表于 2012-3-31 01:00:45 | 显示全部楼层
本来应该是第一个灯亮的,但只要有 EXTI_GenerateSWInterrupt(EXTI_Line0); 这句话就会直接从第二个灯开始亮,搞不懂是什么原因
回复 支持 反对

使用道具 举报

11

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2012-10-12
在线时间
3 小时
发表于 2012-11-22 09:22:06 | 显示全部楼层
回复【7楼】sosharelo:
---------------------------------
额。。。弱弱的问下上边程序里的FLAG是哪个标志位?
新人求指导~~~
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 21:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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