打印
[技术问答]

关于F460无法进入Systick中断

[复制链接]
1441|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Hkk233|  楼主 | 2023-4-11 10:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在用F460系列的芯片,准备用Systick做一个定时,但是在配置好Systick之后,无法进入中断函数,这个时候在keil里面进debug调试,systick定时器已经在计数了,中断也已经使能了,就是无法进入中断服务函数,但是使用官方给的例程就可以,是时钟配置的不对吗?

使用特权

评论回复
沙发
wubangmi| | 2023-4-11 10:38 | 只看该作者
我觉得吧如果你时钟配置的没错误的话就是你工程建的有问题。
这个问题很好排查,时钟都不配置,直接初始化Systick看是否能进中断。

使用特权

评论回复
板凳
Hkk233|  楼主 | 2023-4-11 15:01 | 只看该作者
wubangmi 发表于 2023-4-11 10:38
我觉得吧如果你时钟配置的没错误的话就是你工程建的有问题。
这个问题很好排查,时钟都不配置,直接初始化S ...

这么邪门的吗?我尝试了一下,在官方给的例程里面按照我的来配置,进中断是没问题的,我其他功能都是好用的,就这个中断进不去。

使用特权

评论回复
地板
wubangmi| | 2023-4-11 17:59 | 只看该作者
Hkk233 发表于 2023-4-11 15:01
这么邪门的吗?我尝试了一下,在官方给的例程里面按照我的来配置,进中断是没问题的,我其他功能都是好用 ...

请用最新的3.1.0的库,老库有可能是有弱函数,你工程没加--keep=*Handler。

使用特权

评论回复
5
yang377156216| | 2023-4-17 09:36 | 只看该作者
是工程配置的问题,主要对一下 IRAM 和 IROM ,官方自带的是通过 .sct 方式的,而不是通过魔法棒中 --target 页面设置的,不注意的话就会导致无法正常进入中断服务函数。

使用特权

评论回复
6
wubangmi| | 2023-4-17 21:47 | 只看该作者
楼上说的对,看了下例程,确实是由于SystemCoreClock这个变量定义成__NO_INIT造成进入到main函数后,SystemCoreClock变量值被清空成了0.导致主频对应的值变成了0导致SysTick跑不起来。

使用特权

评论回复
7
Henryko| | 2023-5-12 23:53 | 只看该作者
是不是有弱定义啊

使用特权

评论回复
8
Estelle1999| | 2023-5-23 16:44 | 只看该作者
有可能啊,你检查排除一下

使用特权

评论回复
9
B1lanche| | 2023-5-23 17:50 | 只看该作者
如果时钟源和频率不正确,可能会导致Systick无法正确计时

使用特权

评论回复
10
Charlotte夏| | 2023-5-23 18:52 | 只看该作者
计数方式确认了么?

使用特权

评论回复
11
Alina艾| | 2023-5-23 20:02 | 只看该作者
可以在Systick配置中检查时钟源和频率是否与官方例程中的设置一致

使用特权

评论回复
12
lidi911| | 2023-5-23 20:46 | 只看该作者
那就是你自建工程是不是哪里配置没对

使用特权

评论回复
13
Carina卡| | 2023-5-23 21:09 | 只看该作者
得确保中断号是在正确的范围内

使用特权

评论回复
14
Annie556| | 2023-5-23 21:18 | 只看该作者
Systick的使能状态怎么样?

使用特权

评论回复
15
Betty996| | 2023-5-24 07:08 | 只看该作者
系统调用栈错误也会出现问题的

使用特权

评论回复
16
Charlene沙| | 2023-5-24 08:36 | 只看该作者
检查代码看哪块出现问题了,然后改过来在测试

使用特权

评论回复
17
alxd| | 2023-5-24 09:21 | 只看该作者
可能是因为你的系统中缺少相应的中断处理程序

使用特权

评论回复
18
Emily999| | 2023-5-24 12:51 | 只看该作者
用官方提供的例程还这样,那就得考虑芯片的系统是不是兼容的了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

16

帖子

0

粉丝