KEIL4在线调试NXP LPC2XXX的单步可行,一个函数整体不行的问题

Code_DZhangTeng 2018-04-25 01:50:25
基于NXP LPC2XXX编写的一个读取扇区内容的小程序,用KEIL4在线实物仿真调试时有一个问题,执行
zt = mci_read(0x00,buffer0);//读取0扇区数据,数据放在buffer0中
zt = mci_read(0x01,buffer1);//读取1扇区数据,数据放在buffer1中
zt = mci_read(0x02,buffer2);//读取2扇区数据,数据放在buffer2中
结果读取的数据是错位的,即buffer0中的数据是正确的,但是buffer1中的数据是错误的,是对应0扇区的数据;buffer2中的数据也是错误的,是对应1扇区的数据;相当于整体错位了。
问题来了,执行这三行程序时,我跟踪进子函数,然后执行再出来,buffer0,buffer1,buffer2中的数据就与真实数据完全吻合,没有错位现象。
求大神们指点。
...全文
532 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
of123 2018-04-27
  • 打赏
  • 举报
回复
问题可能出在函数内部。 单步执行时,有足够时间让数据从介质读出。而连跑时,很可能是将 Cache 中的数据直接取回了。 你的函数中加延时试试。另外,你的接口是否有强制读介质的参数,要适当配置。
Code_DZhangTeng 2018-04-27
  • 打赏
  • 举报
回复
引用 1 楼 qq_20553613 的回复:
buffer0、buffer2、buffer3是怎么样申请内存的?数组?malloc?
这三个是数组形式
Acuity. 2018-04-26
  • 打赏
  • 举报
回复
buffer0、buffer2、buffer3是怎么样申请内存的?数组?malloc?

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧