完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位高手,我在用STM32做项目的时候,用MDK,我发现我的程序老是出一些莫名奇妙的问题,比如,编译好正确运行的程序,再加一个函数或将一些变量定义多些,再运行就会出问题!请问这是什么原因啊?网上好像说跟堆栈大小有关??求指教!
这是程序能按预期功能运行时的编译结果! 这是添加一些代码后程序编译的结果,程序运行就乱了! 可以确定的是添加的代码不会影响程序的逻辑功能。 |
|
相关推荐
8个回答
|
|
你的程序代码不大,可能是你采用默认设置的堆栈空间太小了,运行出错了,修改一下堆栈吧,最后用仿真器看看你的程序跑到什么地方了,出错在什么位置。
下面是堆栈修改的地方:在startup_XXX.s文件里面呢。 |
|
|
|
我设置了,跟上面的一样。。。木有仿真器。。。。
|
|
|
|
回复第 3 楼 于2014-03-06 10:37:42发表:
我设置了,跟上面的一样。。。木有仿真器。。。。 上面只是位置实例,这个堆栈大小对应一般的小代码运行没问题,建议你修改成 0x1000 0x400 试一下 |
|
|
|
添加的东西在哪里定义的
|
|
|
|
确实是堆栈的问题。。。
|
|
|
|
堆栈的代码有点问题啊,修改下, 看看顺序和大小有没有错
|
|
|
|
堆栈的代码有点乱还是循环没做好吗?
|
|
|
|
看着现象像是堆栈出问题了, STM32的堆栈空间有限,看看有没有这么几种问题
1、函数中有很大的局部变量; 2、函数入参是结构体,结构体占的空间很大。 这两种情况都可能导致堆栈溢出,代码跑飞 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2049 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1893 浏览 3 评论
4485 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2040 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2549 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 18:41 , Processed in 0.557386 second(s), Total 55, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号