OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6960|回复: 10

外部中断实验中外部中断初始化函数位置问题

[复制链接]

3

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2021-9-27
在线时间
55 小时
发表于 2022-4-23 16:57:15 | 显示全部楼层 |阅读模式
5金钱
1.JPG
这是原子提供的外部中断实验程序(F103开发板库函数版本),程序执行没问题。

2.JPG

此时我把外部中断初始化函数直接放到中断优先级分组后面(如上图所示),就不能触发中断了。请问大佬们这是为啥??
后面我又把串口初始化,蜂鸣器初始化,led灯初始化,随便一个放到外部中断初始化函数之前,程序就能正常执行,这是为啥??

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

465

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1732
金钱
1732
注册时间
2021-4-11
在线时间
320 小时
发表于 2022-4-23 17:31:07 | 显示全部楼层
调试看一下,点击进入按键进中断的时候,看看程序运行到什么地方去了
回复

使用道具 举报

3

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2021-9-27
在线时间
55 小时
 楼主| 发表于 2022-5-3 19:34:29 | 显示全部楼层
huanan 发表于 2022-4-23 17:31
调试看一下,点击进入按键进中断的时候,看看程序运行到什么地方去了

在硬件仿真的时候,通过在外部中断处理函数处设置断点。正常情况下(也就是上面第一张图),当按下相应的按键,程序会停止在断点处,然后可以执行中断处理函数。非正常情况下(也就是上面第二张图),当按下相应的按键,程序不会停止在断点处,程序也不会停止,也就是无法进入中断处理函数。至于为什么无法进入中断处理函数就不知道了。
回复

使用道具 举报

31

主题

1953

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4462
金钱
4462
注册时间
2018-5-11
在线时间
932 小时
发表于 2022-5-4 08:44:37 | 显示全部楼层
用寄存器版本试一试。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

13

主题

202

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2012-10-27
在线时间
65 小时
发表于 2022-5-6 00:36:46 | 显示全部楼层
1、检查下“串口初始化,蜂鸣器初始化,led灯初始化,以及中断初始化”所需要的时钟配置。

2、将“中断初始化”函数的中断Enable函数拿出来,放到主函数中,放到外设初始化函数之后,调试看下效果。
回复

使用道具 举报

3

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2021-9-27
在线时间
55 小时
 楼主| 发表于 2022-5-8 10:28:13 | 显示全部楼层
warship 发表于 2022-5-4 08:44
用寄存器版本试一试。

我用寄存器版本把外部中断初始化函数提到main函数的第一条初始化语句,程序也可正常运行。但是还是不明白为啥问题中的图2就不行。
回复

使用道具 举报

3

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2021-9-27
在线时间
55 小时
 楼主| 发表于 2022-5-8 11:03:46 | 显示全部楼层
arm51avr 发表于 2022-5-6 00:36
1、检查下“串口初始化,蜂鸣器初始化,led灯初始化,以及中断初始化”所需要的时钟配置。

2、将“中断 ...

把使能外部中断通道的相关代码拿出来试了一下,不行
回复

使用道具 举报

31

主题

1953

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4462
金钱
4462
注册时间
2018-5-11
在线时间
932 小时
发表于 2022-5-8 21:24:18 | 显示全部楼层
希望能成功 发表于 2022-5-8 10:28
我用寄存器版本把外部中断初始化函数提到main函数的第一条初始化语句,程序也可正常运行。但是还是不明白 ...

我专门用库函数版本试了一下,
问题中的图2修改,
可以正常中断。
用的是战舰版。

我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

3

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2021-9-27
在线时间
55 小时
 楼主| 发表于 2022-5-14 18:51:12 | 显示全部楼层
warship 发表于 2022-5-8 21:24
我专门用库函数版本试了一下,
问题中的图2修改,
可以正常中断。

我用的是精英版,图二不行。
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2022-5-15 07:52:03 | 显示全部楼层
发程序文件啊 肯定是你初始化里把中断配置的值给改了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2022-5-15 20:09:38 | 显示全部楼层
要先使能IO时钟吧?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 04:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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