完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
IAR调试STM32F405VG时,一下断点就出现全局变量被覆盖的情况。
//进入该函数后,单步的时候_X这个全局变量的内容被覆盖,设置的func_triggered函数地址被改变,触发hardfault中断。 //跟踪后发现, _X这个变量的内容被串口接收的数据覆盖(疑似)。串口运行在5MHz频率,100us定时更新几十个字节的数据。接收数据在一个循环缓冲区中,跟踪发现_X被改变时,循环缓冲区首位指针正常循环变化,且首、尾指针都没有跟_X地址重叠。 //整个软件在全速运行(不下断点的情况下是可以正常运行的--使用ucprobe查看输入端口状态作为测试)。 整了很久了,就是找不到问题在哪里,请教各位大神了。。。。 具体出现问题的函数: void X_drv_set_status(unsigned long levels) { short i; for (i = 0; i < INPUTS_NUM; i++) { if (_X.level == 0) { if ((levels (1 << i)) != 0) { _X.triggered_falling = FALSE; _X.triggered_rising = TRUE; _X.level = 1; if (_X.func_triggered != NULL) { _X.func_triggered(1, (void *)0); //被改变内容后,这里的钩子函数就跑飞了,进入硬件错误中断 _X.triggered_rising = FALSE; //调用服务函数后清除触发标志 } } } else { if ((levels (1 << i)) == 0) { _X.triggered_falling = TRUE; _X.triggered_rising = FALSE; _X.level = 0; if (_X.func_triggered != NULL) { _X.func_triggered(0, (void *)0); _X.triggered_falling = FALSE; //调用服务函数后清除触发标志 } } } } } |
|
相关推荐
1个回答
|
|
在IAR调试STM32F4XX时,出现全局变量被覆盖的情况可能有以下几个原因:
1. 内存泄漏:程序中可能存在内存泄漏,导致在调试过程中,内存被错误地分配给了其他变量。 2. 堆栈溢出:如果程序中的局部变量过大或者递归调用太深,可能导致堆栈溢出,进而影响到全局变量。 3. 变量未初始化:全局变量在使用前未进行初始化,可能导致其值不确定,从而在调试过程中出现异常。 4. 调试器干扰:在调试过程中,调试器可能会对程序的执行产生影响,导致一些异常行为。 5. 中断服务例程(ISR):如果中断服务例程中存在问题,可能导致全局变量被覆盖。 针对您提到的情况,以下是一些建议: 1. 检查全局变量_X的声明和初始化,确保其在程序开始时已经正确初始化。 2. 检查串口接收数据的代码,确保没有对全局变量_X的非法访问。 3. 检查中断服务例程,确保没有对全局变量_X的非法访问。 4. 检查程序中的内存管理,确保没有内存泄漏或堆栈溢出。 5. 在调试过程中,尝试使用不同的断点设置,观察全局变量_X的变化情况。 6. 如果问题仍然存在,可以尝试使用其他调试器(如Keil MDK)进行调试,以排除IAR调试器干扰的可能性。 7. 如果问题仍然无法解决,建议对程序进行代码审查,查找可能的逻辑错误或潜在的内存问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
800 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
503 浏览 1 评论
347 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
278 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
670 浏览 2 评论
1421浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
77浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
134浏览 3评论
125浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
104浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-27 20:56 , Processed in 0.742077 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号