完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在官网下载“rtthread-nano-master”安装后,选择bsp中的“STM32f103-blink”项目,在main.c中屏蔽其它代码,输入以下代码即可复现上面描述的问题,即数组变量不能正常读写!
若不方便用硬件开发板的话,建议用单步软仿真进行测试 rt_uint8_t test_array[5] = {1,2,3,4,5}; rt_uint8_t test_data; int main(void) { test_data = test_array[0]; test_array[0] = 0x55; test_data = test_array[0]; test_array[0] = 0xaa; test_data = test_array[0]; test_data = 1; } |
|
相关推荐
1个回答
|
|
你好!大佬aozima说的是对的。并不是说你开了O0就不做优化了。MDK把你前几条语句都优化掉了,虽然MAP文件中有数组,分配了地址,但是C语言的读写给你优化掉了。
你的提问中,只说了问题,但是没有提供更多的信息。建议贴好图,准确说明存在问题,这样大家参与进来更容易。 测试环境:MDK 5.18 仿真设置: 如下图的汇编代码和C的执行过程所示,编译器优化了你的前三条语句。 如果纠结这个事情,那你的程序简单变化一下即可: volatile rt_uint8_t test_array[5] = {1,2,3,4,5}; volatile rt_uint8_t test_data; int main(void) { test_data = test_array[0]; test_array[0] = 0x55; test_data = test_array[0]; test_array[0] = 0xaa; test_data = test_array[0]; test_data = 1; } 再次运行结果,符合你的预期。这个和RTT没关系的,如果你要每一步操作都OK,请添加关键词volatile。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1056 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3545 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1482 浏览 0 评论
2181 浏览 0 评论
1663 浏览 0 评论
75416 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 10:29 , Processed in 0.454281 second(s), Total 69, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号