完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
在项目程序中直接调用官方例程的FlashReadOTPword函数读取0x10地址的值得到ID号,并发送到电脑串口观察数值,多次上电接收到的数值都是一样的,排除是串口的问题。只要我修改了项目程序中其他与读ID号毫不相关的功能后,读出的ID号就跟之前不一样了,将程序改回去后,读出的ID号又和之前一样了。
我还另写了一个单独测试ID号的程序,但测试程序修改其他与读ID号不相关的功能并不会改变读出的ID值。而且在先烧录项目程序再烧录测试程序的情况下,测试程序读出的是ID值和项目程序的一样,也就是说项目程序读出的ID号变化测试程序读出的ID号也变。但一直烧测试程序读出的ID号是不会变的。 请问这是什么问题呢?另外测试程序编译后大小为1K左右,项目程序编译后大小为23K左右。 |
|
相关推荐
6个回答
|
|
你程序RAM用了多少了?是不是RAM使用太多,导致堆栈出问题,读出来的值被程序修改了。
|
|
|
|
就用了一百多而已,应该不是堆栈的问题。因为烧测试程序和项目程序读出来的值是一样的,感觉是程序没有读到ID号存放的地址而是读了程序存储区的地址。 如果是堆栈问题,那测试程序应该能读出真正的ID号。 |
|
|
|
你说修改了某一块 程序后就会导致读出的ID号发生变化,修改回去后就好了,请问这个修改的程序是哪一块程序?修改前后对RAM使用大小有造成影响吗?
|
|
|
|
不是说改回去就好了,是程序一样的话读出的ID号就一样,不能确定读出的是真的ID号。
修改的是跟读ID号无关的功能,对RAM的使用没有影响,比如说这个版本读一次ID号,另一个版本连读两次ID号,两个版本的程序得到的ID号都是不一样的。如下图: |
|
|
|
是不是读flash的地址不对?
|
|
|
|
这个问题已经解决了,读16位地址就出错,读8位地址就是正确的。
|
|
|
|
只有小组成员才能发言,加入小组>>
477 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2874 浏览 2 评论
2361 浏览 1 评论
820浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
650浏览 1评论
502浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
366浏览 1评论
643浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 15:06 , Processed in 1.221119 second(s), Total 87, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号