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

F103外部中断不能执行

[复制链接]
wanyisq 提问时间:2016-5-4 09:46 /
接触32没多久,昨天写了一个外部中断的实验,怎么调试都不能执行中断,看了书上的例程,是一样的。不知道问题在哪,求助
  1. void GPIO_EXIT_Init(void)
  2. {
  3.         
  4.         GPIO_InitTypeDef GPIO_InitStructure;
  5.         EXTI_InitTypeDef EXTI_InitStructure;
  6.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE);  //PA8-KEY
  7.         
  8.                 NVIC_InitTypeDef NVIC_InitStructure;
  9.                 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  10.                 NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;
  11.                 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
  12.                 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
  13.                 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  14.                 NVIC_Init(&NVIC_InitStructure);
  15.         
  16.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
  17.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_IPU;
  18.         GPIO_Init(GPIOA, &GPIO_InitStructure);        
  19.         
  20.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource8);
  21.         EXTI_InitStructure.EXTI_Line = EXTI_Line8;
  22.         EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  23.         EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  24.         EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  25.         EXTI_Init(&EXTI_InitStructure);
  26.         
  27.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9 | GPIO_Pin_8;   //PD8、9--LED
  28.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  29.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  30.         GPIO_Init(GPIOD, &GPIO_InitStructure);

  31. }

  32. int main(void)
  33. {
  34.         
  35.         GPIO_EXIT_Init();
  36.         GPIO_SetBits(GPIOD, GPIO_Pin_8);
  37.         while(1)
  38.         {
  39.                 GPIO_SetBits(GPIOD, GPIO_Pin_8);
  40.         }
  41. }

  42. void EXIT9_5_IRQHandler(void)
  43. {
  44.         if(EXTI_GetITStatus(EXTI_Line8)!=RESET)
  45.         {
  46. //                GPIO_WriteBit(GPIOD,GPIO_Pin_8,
  47. //                        (BitAction)(1-GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_8)));
  48.                 GPIO_WriteBit(GPIOD, GPIO_Pin_9, (BitAction)((1-GPIO_ReadOutputDataBit(GPIOD, GPIO_Pin_9))));
  49.                 EXTI_ClearITPendingBit(EXTI_Line8);
  50.                
  51.         }
  52. }
复制代码


收藏 评论9 发布时间:2016-5-4 09:46

举报

9个回答
mark0668 回答时间:2016-5-4 12:48:42
没开内核中断.
wanyisq 回答时间:2016-5-4 12:54:29

什么是内核中断,怎么开启
mark0668 回答时间:2016-5-4 13:10:38
wanyisq 发表于 2016-5-4 12:54
什么是内核中断,怎么开启

不好意思,看错了.
wozaihuayu 回答时间:2016-5-4 15:51:40
怎么看的main函数中没有系统初始化?中断向量也没有设置?main函数一开始加上这两句试试

        SystemInit();          //初始化系统时钟       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
riansum 回答时间:2016-5-4 20:04:48
系统时钟,都没有写
wanyisq 回答时间:2016-5-4 21:16:39
wozaihuayu 发表于 2016-5-4 15:51
怎么看的main函数中没有系统初始化?中断向量也没有设置?main函数一开始加上这两句试试

        SystemInit();    ...

。。。。。。
时钟没设置是因为有默认的,内部时钟,
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  优先级也设置了
wanyisq 回答时间:2016-5-4 21:17:27
riansum 发表于 2016-5-4 20:04
系统时钟,都没有写

我看你比我这个新手还新手啊,这些高级点的芯片都有内部默认的时钟的
xmshao 回答时间:2016-5-4 23:15:15
STM32固件库里有现存的EXTI中断工程,看看人家怎么写的。
将流程比对下。

wanyisq 回答时间:2016-5-5 20:05:15
问题解决了  BitAction去掉就好了。。。。。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版