DSP28335程序下载后不运行
1.现象描述:写了一段代码LCD1602显示两行字符,主函数定时器0定时2s,周期检测两路AD,做数字PID运算,通过DAC输出控制执行机构,形成闭环控制,LED小灯做提示。debug模式下正常(采用28335_RAM_lnk.cmd文件加载到RAM),后改用F28335.cmd下载到FLASH,提示LOAD完成。断开仿真器(XDS100v1),断电,然后上电,LCD1602无显示,LED不闪烁。
2.具体操作说明:F28335.cmd及28335_RAM_lnk.cmd文件均放置在DSP2833x_Libraries文件夹下,当debug模式时,右键F28335.cmd文件Exclude from project,F28335.cmd为灰色,下载到FLash时右键28335_RAM_lnk.cmd文件Exclude from project,28335_RAM_lnk.cmd灰色。debug和下载到Flash均操作图标锤子+虫子。
3.DSP2833x_Libraries文件夹如图1。
4.主函数代码:
void main()
{
float X_voltageIN=0.0;
float Y_voltageIN=0.0;
float X_voltageOUT=0.0;
float Y_voltageOUT=0.0;
unsigned char Xdata=0;
unsigned char Ydata=0;
InitSysCtrl();
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
LED_Init();
TIM0_Init(150,2000000);//2000ms
UARTa_Init(4800);
DACTLV5620_Init();
ADC_Init();
LCD1602_Init();
PIDX_init(PID_KpX,PID_TiX,PID_TdX,ADsampleTime_Ts);
PIDY_init(PID_KpY,PID_TiY,PID_TdY,ADsampleTime_Ts);
timer0_flag=0;
LCD1602_DispString(1,"Wenie,love U!");
LCD1602_DispString(2,"Haha,Good luck!");
while(1)
{
if (timer0_flag==1)
{
timer0_flag=0;
Read_ADCValueTwo();
X_voltageIN=3*(AdcRegs.ADCRESULT0>>4)/4096.0;
Y_voltageIN=3*(AdcRegs.ADCRESULT1>>4)/4096.0;
X_voltageOUT=PIDX_realize(setX_position,X_voltageIN);
Y_voltageOUT=PIDY_realize(setY_position,Y_voltageIN);
Xdata=X_voltageOUT*256/3;
Ydata=Y_voltageOUT*256/3;
DAC_SetChannelData(0,0,255); //outputA gain=2
DAC_SetChannelData(1,1,Ydata); //outputB gain=2
}
}
}
5.debug模式时时正常的,有图有真相。
请各位大神帮忙看看,问题在什么地方?折腾几天了。
|