Part Number:TMS320F28335
DSP用CCS仿真问题,
问题一:
我定义了unsigned char table[][]=
{ "$0021,<DSP,TIME,*****,****,#",
"$0021,<DSP,DATE,*****,****,#"} ;
定义了这样的 一个指令集,当DSP每次上电运行的时候,我想把这个指令集写到一个数组里面发出去,但是发现这个数组里面的指令集是乱码,
问题二:每次上电32单片机给DSP发送数据,DSP第一次接受的数据是空,但确实进中断接受了,而且会复制其他某些全局变量一个随机值,
把程序在下载一次就不会出现以上两个问题 ,这两个问题都出现在每次给dsp上电后第一次仿真的时候。
Susan Yang:
李嘉辉 说:我想把这个指令集写到一个数组里面发出去,但是发现这个数组里面的指令集是乱码,
能给出具体的代码吗?
李嘉辉 说:把程序在下载一次就不会出现以上两个问题 ,这两个问题都出现在每次给dsp上电后第一次仿真的时候
请问32单片机和DSP是如何通信的?是否有使用示波器查看相应的时序是否正常?
,
李嘉辉:
这些都是正常的 我写了一个标识符截取函数一直用在keil软件里面没发现问题,然后就在DSP里面调用了 发现DSP不适用这个函数,我把这个函数贴出来您看看CCS为啥用不了次函数,谢谢
#define _comma_local
#include "comma.h"#include <string.h>#include <math.h>#define uchar unsigned char#define uint unsigned intuchar GetComma(uchar num,char *str,uchar CH2) //搜索标志字符函数{ uchar i,j = 0; int len=strlen(str); for(i = 0;i < len;i ++) { if(str[i] == CH2)j++; if(j == num)return i + 1; } return 0; }void Get_str(char *s,uchar CH1,char *Dest) //获取字符串{ uchar i,j; memset(Dest,'\0',strlen(Dest)); i=GetComma(1, s , CH1); i = i – 1; for(j=0;j<i;j++) { *(Dest+j)=*(s+j); }}/*功能:获取两个字符之间的数据函数描述:通过设定在原字符串中出现的开始和结束两个截取标志字符,即可截取两个字符之间的字符,但是,开始截取标志字符可以是第N次出现的,结束截取标志字符是紧接在开始截取标志字符第一次出现的参数描述:scr是源字符串,CH1开始截取标志字符,CH1_num是第N次出现的开始截取标志字符,CH2是结束截取标志字符Dest 目的字符串,即截取完成的返回值:Dest是的地址
*/void GetDestString(char *scr,char CH1,unsigned char CH1_num,char CH2,char *Dest){ unsigned char i; i=GetComma(CH1_num,scr,CH1); Get_str(scr+i,CH2,Dest);}
,
李嘉辉:
调试发现第一次对DSP上电后执行这一个函数后会出现以上我说的两个问题,不调用次截取函数,就没有问题