请选择 进入手机版 | 继续访问电脑版

安富莱电子论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 140|回复: 6
收起左侧

STM32F429外部中断问题

[复制链接]

1

主题

4

帖子

6

积分

新手上路

积分
6
发表于 2019-1-4 11:37:06 | 显示全部楼层 |阅读模式
大神们,请教个STM32F429的问题,使用外部中断,下降沿触发,偶尔会在中断引脚的上升沿再产生一次中断,请问有谁遇到过

中断引脚配置代码
  1. GPIO_InitStruct.Pin = GPIO_PIN_3 ;
  2. GPIO_InitStruct.Mode = GPIO_MODE_IT_INPUT;
  3. GPIO_InitStruct.Pull = GPIO_PULLUP;
  4. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  5. HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);

  6. GPIO_InitStruct.Pin = GPIO_PIN_2;
  7. GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  8. HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);

  9. HAL_NVIC_SetPriority(EXTI2_IRQn, 1,0);
  10. HAL_NVIC_EnableIRQ(EXTI2_IRQn);
复制代码
中断处理
  1. void EXTI2_IRQHandler(void)
  2. {
  3.     uint32_t mark ;
  4.        
  5.     GPIOH->ODR ^= GPIO_PIN_5 ;
  6.        
  7.     mark = EXTI->PR ;
  8.     EXTI->PR = mark ;
  9.     if ( (mark & 0x0004) && ((GPIOH->IDR & GPIO_PIN_2) == 0) )
  10.     {
  11.         EXTI2_Callback() ;
  12.     }
  13. }
复制代码


示波器抓取的电平图


`VMZ4QNZ`BB(XMKG0OTV2YQ.png
回复

使用道具 举报

21

主题

1077

帖子

1119

积分

至尊会员

积分
1119
发表于 2019-1-4 12:06:00 | 显示全部楼层
GPIO_MODE_IT_INPUT是什么鬼,F4的HAL有这种定义?

初始化的PH3和PH2,中断里面怎么搞了个PH5的操作,有点看不懂
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

1

主题

4

帖子

6

积分

新手上路

积分
6
 楼主| 发表于 2019-1-4 13:52:50 | 显示全部楼层
byccc 发表于 2019-1-4 12:06
GPIO_MODE_IT_INPUT是什么鬼,F4的HAL有这种定义?

初始化的PH3和PH2,中断里面怎么搞了个PH5的操作,有 ...

这里写错了,代码里是GPIO_MODE_IT_FALLING
进入中断翻转一次PH5,好在示波器上查看中断进入情况
回复

使用道具 举报

5275

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
42670
QQ
发表于 2019-1-5 02:00:15 | 显示全部楼层
bigtruck 发表于 2019-1-4 13:52
这里写错了,代码里是GPIO_MODE_IT_FALLING
进入中断翻转一次PH5,好在示波器上查看中断进入情况

可以直接使用标准库测试,无此问题。
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

1

主题

4

帖子

6

积分

新手上路

积分
6
 楼主| 发表于 2019-1-5 09:24:40 | 显示全部楼层
eric2013 发表于 2019-1-5 02:00
可以直接使用标准库测试,无此问题。

引脚中断配置部分是标准库
中断处理不是标准库,我看了标准库的中断处理,里面做的事情与我这是一样的
回复

使用道具 举报

1

主题

4

帖子

6

积分

新手上路

积分
6
 楼主| 发表于 2019-1-5 09:27:08 | 显示全部楼层
EXTI2_Callback()里的处理时间很短,只做了一个变量的累加
回复

使用道具 举报

5275

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
42670
QQ
发表于 2019-1-5 09:53:24 | 显示全部楼层
bigtruck 发表于 2019-1-5 09:24
引脚中断配置部分是标准库
中断处理不是标准库,我看了标准库的中断处理,里面做的事情与我这是一样的

主要是初始化部分,中断倒是没发现什么问题。

HAL库把EXTI封装到GPIO的初始化里面了,这点跟标准库还是有较大区别的。

如果还有其它问题就不清楚了,你再溜溜吧。
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|安富莱电子论坛 ( 鄂ICP备09023347号,公安机关备案号42010602000201 )

GMT+8, 2019-2-19 15:07 , Processed in 0.187700 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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