硬汉嵌入式论坛

 找回密码
 立即注册
查看: 435|回复: 4
收起左侧

[技术讨论] STM32单片机-硬件异常中断

[复制链接]

6

主题

14

回帖

32

积分

新手上路

积分
32
发表于 2025-8-21 13:32:50 | 显示全部楼层 |阅读模式
如图片1中的代码片段,Point变量是一个指向uint32_t * 类型的指针变量, Internal_Value数组是一维结构数组,结构模板内包含19个uint32_t 类型的数据,BuffArr是个uint8_t类型的二维数组,在STM32F103ZET6芯片,keil5+AC6(V6.23)这么一个环境下跑时,只要将Point这两句相关的操作,放在if判断成立的执行代码块里(也就是花括号内),在执行到if这一语句的时候就一定会进入硬件异常中断,调试显示执行到if语句还没进入CRC8_Verify这个函数内,就会进入硬件异常中断内,但只要不将这两句放入if成立的执行代码块内就不会有这个问题,请问有大佬清楚为什么嘛?

图片1

图片1
回复

使用道具 举报

2

主题

41

回帖

47

积分

新手上路

积分
47
发表于 2025-8-21 17:01:31 | 显示全部楼层
先保证没有越界吧,至于你说的问题可以下看看你目前的优化程度,把优化等级调到最低再来分析看看
回复

使用道具 举报

6

主题

14

回帖

32

积分

新手上路

积分
32
 楼主| 发表于 2025-8-21 17:46:41 | 显示全部楼层
小梁呐 发表于 2025-8-21 17:01
先保证没有越界吧,至于你说的问题可以下看看你目前的优化程度,把优化等级调到最低再来分析看看

为了测试,是限制了Point的指向范围的,最多知道Internal_Value数组的一半,不会越界,而且就算放在花括号内,也还没执行到Point这两步操作,到if这个语句就会进中断了。优化等级一直是-O1.之前调过更低的,也一样
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2025-8-26 11:14:47 | 显示全部楼层
本帖最后由 xuzuotao 于 2025-8-26 15:15 编辑

代码可以用#pragama clang optimize off先关闭优化再仿真看
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
118312
QQ
发表于 2025-8-28 14:21:28 | 显示全部楼层
方便的话,看下你的硬件异常错误类型,也许锁定问题就方便了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-9-26 11:38 , Processed in 0.042871 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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