你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2537|回复: 4

为什么程序一直停在stm32f10x_exit.c中的判断中断程序中

[复制链接]

38

主题

70

回帖

0

蝴蝶豆

中级会员

最后登录
2020-12-1
发表于 2012-5-14 09:38:05 | 显示全部楼层 |阅读模式
触发了一次外部中断,在中断子程序中我把外部中断屏蔽了,但是 程序不退出中断子程序,一直停在判断是否发生中的的程序中(下面的程序,是在stm32f10x_exit.c中的子程序),
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
{
  ITStatus bitstatus = RESET;
  uint32_t enablestatus = 0;
  /* Check the parameters */
  assert_param(IS_GET_EXTI_LINE(EXTI_Line));
 
  enablestatus =  EXTI->IMR & EXTI_Line;
  if (((EXTI-&gtR & EXTI_Line) != (uint32_t)RESET) && (enablestatus != (uint32_t)RESET))
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  return bitstatus;
}
<
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-5-14 10:15:36 | 显示全部楼层

RE:为什么程序一直停在stm32f10x_exit.c中的判断中断程序中

你是不是没有清除中断标志位?
回复 支持 反对

使用道具 举报

38

主题

70

回帖

0

蝴蝶豆

中级会员

最后登录
2020-12-1
 楼主| 发表于 2012-5-14 10:46:45 | 显示全部楼层

RE:为什么程序一直停在stm32f10x_exit.c中的判断中断程序中

清和不清效果是一样的,我都试过了
回复 支持 反对

使用道具 举报

38

主题

70

回帖

0

蝴蝶豆

中级会员

最后登录
2020-12-1
 楼主| 发表于 2012-5-14 10:48:48 | 显示全部楼层

RE:为什么程序一直停在stm32f10x_exit.c中的判断中断程序中

下面是我的外部中断的程序
  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE);
  //启动AFIO
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
     GPIO_Init(GPIOA, &amp;GPIO_InitStructure);
  EXTI_InitTypeDef  EXTI_InitStructure;
   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
   NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;                // 抢占优先级别1
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应优先级别1
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&amp;NVIC_InitStructure);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource15);/*将EXTI线15连接到PA15*/
   EXTI_InitStructure.EXTI_Line = EXTI_Line15;  /* 将中断映射到中断/事件源Line15 */
   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; /* 中断模式 */
   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;/* 上升沿触发 */
   EXTI_InitStructure.EXTI_LineCmd = ENABLE; /* 中断使能,即开中断 */
   EXTI_Init(&amp;EXTI_InitStructure);

void EXTI15_10_IRQHandler(void)
{

if(EXTI_GetITStatus(EXTI_Line15)!=RESET)
{
    EXITFlag=1;
  
  GPIO_SetBits(GPIOB,GPIO_Pin_13);
  GPIO_SetBits(GPIOB,GPIO_Pin_12);
    EXTI_ClearITPendingBit(EXTI_Line15);
           EXTI-&gt;IMR &amp;= 0x0000;
}

}
回复 支持 反对

使用道具 举报

38

主题

70

回帖

0

蝴蝶豆

中级会员

最后登录
2020-12-1
 楼主| 发表于 2012-5-14 10:51:10 | 显示全部楼层

RE:为什么程序一直停在stm32f10x_exit.c中的判断中断程序中

麻烦安了!!!!
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版