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

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个回答
七哥 回答时间: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的代码,其他地方都没有)
七哥 回答时间: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

查看全部评分

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

评分

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

查看全部评分

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

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

所属标签

相似问题

官网相关资源

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