Part Number:TMS320F280049

上图程序一直循环执行,DEBUG下串口会连续输出ADC的采样结果并换行,
但是程序下载到Flash后运行,串口一直输出0000并换行;
sprintf赋值好像没起作用?请问这是什么问题
sprintf是C标准库中将数字变为字符的,用来串口发送(网上找的)
Green Deng:
你好,这个问题我能联想到的就是芯片在flash下和ram下执行速度不同导致的。
工程里面有使用memcpy函数吗?
,
lujun Ren:
有的,Device_init()初始化函数里有这段代码,我在工程属性里pre_define了_FLASH;
上图是我加了验证,让GPIO翻转,有信号说明ADC有工作,另外串口收到有换行,但好像就是sprintf那行没执行;
为什么是执行速度不同,我有点不明白
还有这段代码不是把所有的程序从FLASH中迁移到RAM里么,为什么还会涉及到两者的执行速度
,
Green Deng:
执行速度不同是因为存储器介质不同,ram肯定比rom快。而我提到执行速度问题,主要是因为一般ram能运行flash不能运行,大多是因为运行速度不同引起的,也就是需要对某些程序添加memcpy将程序从flash搬运到ram运行
你看看Device_init()里面的memcpy函数是否有被启用。如果启用了还是有这个问题,那我可能要去联系一下其他工程师,看看是否跟sprintf函数有关
,
lujun Ren:
启用了,我认为应该是sprinf 函数的问题
,
Green Deng:
你好,这边工程师回复:
1、有没有试过用更长的msg?比如定义为“char msg [100]”。为了查看 sprintf 代码是否溢出了 char 数组。
2、可以尝试不使用sprintf 发送,看看是否运行正常?判断一下到底sprintf 是否真的是问题所在。
,
lujun Ren:
这样真的可以,应该也不是sprintf的问题,我按照你的提示把那个指针定义变成数组定义就可以了,这应该涉及到一些语法的问题
感谢了
,
Green Deng:
客气了,感谢反馈。
,
NickTI:
请问右边的电平图是怎么设置出来的?
,
lujun Ren:
逻辑分析仪测的,不是设置的
,
NickTI:
这样,谢谢
TI中文支持网



