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

STM32F103外部中断没有响应

[复制链接]
nodense 提问时间:2018-4-6 11:51 /
本帖最后由 nodense 于 2018-4-6 11:56 编辑

配置了PF5引脚作为外部中断触发源,按键按下的时候监测到管脚为低电平 串口能正常收到主函数发来的数据但是电机始终没有改变转动方向  中断函数的串口数据也没有输出到电脑上,说明中断没有进入(即使去掉了EXTI_Line5的判断,串口依然没有收到数据)  反复对比了例程   一直找不出原因。。。

  1. void KEY_Init()
  2. {
  3.         GPIO_InitTypeDef GPIO_InitStr;
  4.         EXTI_InitTypeDef EXTI_InitStr;
  5.         NVIC_InitTypeDef NVIC_InitStr;

  6.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);
  7.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
  8.         
  9.         GPIO_InitStr.GPIO_Mode = GPIO_Mode_IPU;
  10.         GPIO_InitStr.GPIO_Pin = GPIO_Pin_5;
  11.         GPIO_InitStr.GPIO_Speed = GPIO_Speed_50MHz;
  12.         GPIO_Init(GPIOF,&GPIO_InitStr);
  13.         GPIO_EXTILineConfig(GPIO_PortSourceGPIOF,GPIO_PinSource5);
  14.         
  15.         EXTI_InitStr.EXTI_Line = EXTI_Line5;
  16.         EXTI_InitStr.EXTI_LineCmd = ENABLE;
  17.         EXTI_InitStr.EXTI_Mode = EXTI_Mode_Interrupt;
  18.         EXTI_InitStr.EXTI_Trigger = EXTI_Trigger_Falling;
  19.         EXTI_Init(&EXTI_InitStr);
  20.         
  21.         NVIC_InitStr.NVIC_IRQChannel = EXTI9_5_IRQn;
  22.         NVIC_InitStr.NVIC_IRQChannelCmd=ENABLE;
  23.         NVIC_InitStr.NVIC_IRQChannelPreemptionPriority=2;
  24.         NVIC_InitStr.NVIC_IRQChannelSubPriority = 2;
  25.         NVIC_Init(&NVIC_InitStr);
  26. }

  27. volatile u8 dir=0;

  28. void EXTI9_5_IRQHandler(void)
  29. {
  30.         delay_ms(10);
  31.         if(EXTI_GetITStatus(EXTI_Line5))
  32.         {
  33.                 printf("\r\n This is External Interrupt \r\n");
  34.                 dir=!dir;
  35.         
  36.         }
  37.         EXTI_ClearITPendingBit(EXTI_Line5);
  38. }

  39. int main(void)
  40. {
  41.         
  42.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  43.         uart_init(115200);
  44.         delay_init();
  45.         KEY_Init();
  46.         MOT_Init();
  47.         while(1)
  48.         {
  49.                 if(dir)
  50.                 {
  51.                         printf("\r\n Positice DIR \r\n");
  52.                         MOT_Run(1000);
  53.                 }
  54.                 else
  55.                 {
  56.                         printf("\r\n Negative DIR \r\n");
  57.                         MOT_Run(-1000);
  58.                 }
  59.         }
  60. }

复制代码


收藏 评论8 发布时间:2018-4-6 11:51

举报

8个回答
toofree 回答时间:2018-4-6 22:49:02
前两天刚有人遇到此问题,你这也是用的原子的程序吧。
不进中断关键是少了一条指令,EXTI_InitStructure.EXTI_LineCmd = ENABLE;

请参考我的回复 。(下面两个链接不一样,都看看)
https://www.stmcu.org.cn/module/foru ... 3184&fromuid=307297

https://www.stmcu.org.cn/module/foru ... 3334&fromuid=307297

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

nodense 回答时间:2018-4-6 23:08:14
toofree 发表于 2018-4-6 22:49
前两天刚有人遇到此问题,你这也是用的原子的程序吧。
不进中断关键是少了一条指令,EXTI_InitStructure.EX ...

实际上。。我贴的代码写了。。可以回去看一看。另外,我今天把这段代码换成了别的IO口,发现可以用。
但是PF5上面也可以测出电平变化,可就是没进入中断。 我用的是RCT6,数据手册也看了,没有发现什么明显的线索,让我觉得很奇怪
就是想知道是不是PF5被什么占用了(我只在这里写了关于PF5的代码,其他地方都没有)
toofree 回答时间:2018-4-6 23:17:45
本帖最后由 toofree 于 2018-4-6 23:19 编辑
nodense 发表于 2018-4-6 23:08
实际上。。我贴的代码写了。。可以回去看一看。另外,我今天把这段代码换成了别的IO口,发现可以用。
但 ...

那你就单测PF5中断功能吧。
上面链接中有我的测试程序,把管脚改一下。
总之一句话,不要太相信非官方的程序,去试试官方的标准函数库和HAL库下的样例程序,基本你的问题大多都能解决。
nodense 回答时间:2018-4-7 21:31:39
toofree 发表于 2018-4-6 23:17
那你就单测PF5中断功能吧。
上面链接中有我的测试程序,把管脚改一下。
总之一句话,不要太相信非官方的程 ...

好的  谢谢
feixiang20 回答时间:2018-4-8 02:47:29
论坛里有很多类似的帖子可以参考啊,看看系统固件库,BitAction,时钟设置等,找找原因。
比如https://www.stmcu.org.cn/module/ ... amp;fromuid=2091055

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

xmshao 回答时间:2018-4-8 14:57:04
1, 检查下是否有其它地方跟该脚有重复定义的地方;
2、确认下你的启动文件是否用对了,尤其是从别的型号移植过来时,不然容易发生矢量表位置对应的函数张冠李戴;

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

dataozi 回答时间:2018-4-9 09:21:25
不要设置上拉输入模式,换成浮动输入模式,GPIO

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

select326 回答时间:2018-4-9 09:42:29
我看原子的程序中,都是先初始化delay_init();,再执行 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

这个会不会有什么影响呀?        

所属标签

相似问题

官网相关资源

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