5092|2

17

帖子

0

TA的资源

一粒金砂(中级)

TI DSP5509a串口uart程序,请教! [复制链接]

ICETEK5509A瑞泰开发板,自带UART串口例程,根据其自带例程修改串口程序。打算上位机发给dsp  V,I两个数,经过算法程序后,dsp返回上位机一个数soc。

目前问题是,屏蔽掉算法函数,可以输出V ,I 两数(即:发什么接什么可以,加入算法就不可以);加入算法函数,却输出不了soc!即执行不了算法函数。

无警告无错误,就是输出不了soc!

ps:当然,新建了个只含算法函数的工程,结果没问题,说明算法函数是没错的
下面贴上代码,望高手相助!

#include "5509.h" #include "util.h" #include "math.h" #include "stdio.h" #include "stdlib.h" #define UART_BASE_ADDR 0x400400 #define RBR *((int *)(UART_BASE_ADDR+0)) #define THR *((int *)(UART_BASE_ADDR+0)) #define IER *((int *)(UART_BASE_ADDR+1)) #define IIR *((int *)(UART_BASE_ADDR+2)) #define FCR *((int *)(UART_BASE_ADDR+2)) #define LCR *((int *)(UART_BASE_ADDR+3)) #define MCR *((int *)(UART_BASE_ADDR+4)) #define LSR *((int *)(UART_BASE_ADDR+5)) #define MSR *((int *)(UART_BASE_ADDR+6)) #define SCR *((int *)(UART_BASE_ADDR+7)) #define DLL *((int *)(UART_BASE_ADDR+0)) #define DLM *((int *)(UART_BASE_ADDR+1)) void ekfilter(double VV,double II,double Uoc,double Ro,double Cb,double Rp,double Cp,double Ck,double soc,double Ub,double Up); void trmul(double a[],double b[],int m,int n,int k,double c[]); void trmul1(double a[],double b,int m,int n,int k,double c[]); void TMCR_reset( void ); void EMIF_init(void); void wait(int nWait); char cString[17]={ "Hello PC!,Over|" },cReceive,cBuffer[17],cAnswer[16]={"Oh,you say"}; char SOCbuffer[17],VBuffer[8],IBuffer[7]; double V,I; int bReceive,nLen; double xk[3][1],p1[3][3]; //子函数中全局变量 /************************************************************************************/ main() { unsigned int uWork; int i,ii,k; double soc0,Up3,Ub3,Uoc3,Cp3,Cb3,Rp3,Ro3,Ck1; bReceive=0; soc0=0.5; Ub3=0; Up3=0; TMCR_reset(); PLL_Init(12); EMIF_init(); LCR = 0x80; DLL = 0x18; DLM = 0x00; LCR = 0x03; FCR = 0x01; MCR = 0x00; MSR = 0x00; IER = 0x00; /****************************************************************/ Uoc3=22.44444444443954*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)-71.26923076921497*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)+87.94316239314253*(soc0)*(soc0)*(soc0)*(soc0)-52.24003496502270*(soc0)*(soc0)*(soc0)+14.67607917637537*(soc0)*(soc0)-1.34452144522091*(soc0)+3.19713333333331; Ro3=-0.01388888888890*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)+0.05096153846157*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)-0.07142094017097*(soc0)*(soc0)*(soc0)*(soc0)+0.04711975524477*(soc0)*(soc0)*(soc0)-0.01323894716395*(soc0)*(soc0)-0.00547174825175*(soc0)+0.03864000000000; Cb3=-40.374671270825*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)+134.403709647570*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)-172.465991029534*(soc0)*(soc0)*(soc0)*(soc0)+106.823248423098*(soc0)*(soc0)*(soc0)-32.805016213062*(soc0)*(soc0)+4.646421951718*(soc0)-0.226964695470; Rp3=0.45138888888890*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)-0.89855769230775*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)+0.50034722222232*(soc0)*(soc0)*(soc0)*(soc0)+0.00649839743582*(soc0)*(soc0)*(soc0)-0.04295245726493*(soc0)*(soc0)-0.02928066433567*(soc0)+0.03462333333333; Cp3=-1.90333055555553*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)+4.56779621794867*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)-3.96201360042734*(soc0)*(soc0)*(soc0)*(soc0)+1.48495611217952*(soc0)*(soc0)*(soc0)-0.22097162814300*(soc0)*(soc0)+0.05096333317250*(soc0)+0.02794094200000; /******************************************************************/ for(;;) { if ( bReceive==0 ) { for ( i=0;i<16;i++ ) { do { uWork=LSR; } while ( uWork&0x040 != 0x040 ); THR=cString; wait(128); } } else { for ( i=0;i<10;i++ ) { do { uWork=LSR; } while ( uWork&0x040 != 0x040 ); THR=cAnswer; wait(128); } do { uWork=LSR; } while ( uWork&0x040 != 0x040 ); THR='\"'; /*******************以下为cBuffer[k]**********************************************************************/ /*--------加入算法-------------------*/ for(ii=0;ii<8;ii++) VBuffer[ii]=cBuffer[ii]; for(ii=8;ii<15;ii++) IBuffer[(ii-8)]=cBuffer[ii]; V=atof(VBuffer)/10; //V=strtod(VBuffer,NULL);// I=atof(IBuffer)/10 ;//I=strtod(IBuffer,NULL);// Ck1=134.66666664*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)-356.34615385*(soc0)*(soc0)*(soc0)*(soc0)+351.77264956*(soc0)*(soc0)*(soc0)-156.72010488*(soc0)*(soc0)+29.35215836*(soc0)-1.344521445-I*(-.8333333334e-1*(soc0)*(soc0)*(soc0)*(soc0)*(soc0)+.25480769230*(soc0)*(soc0)*(soc0)*(soc0)-.28568376068*(soc0)*(soc0)*(soc0)+.14135926572*(soc0)*(soc0)-.2647789432e-1*(soc0)-.5471748252e-2); ekfilter(V,I,Uoc3,Ro3,Cb3,Rp3,Cp3,Ck1,soc0,Ub3,Up3); soc0=xk[2][0];//yy(k+1)=xk(3,1); //yy里存13700个数soc Ub3=xk[0][0]; //Ub=xk(1,1); Up3=xk[1][0]; //Up=xk(2,1); sprintf(SOCbuffer, "%lf", soc0); //double变字符数组 /*****************************************************/ for ( i=0;i;//cBuffer; wait(128); } do { uWork=LSR; } while ( uWork&0x040 != 0x040 ); THR='\"'; wait(128); for ( i=9;i<16;i++ ) { do { uWork=LSR; } while ( uWork&0x040 != 0x040 ); THR=cString; wait(128); } } k=0; bReceive=0; while ( 1 ) { do { uWork=LSR; } while ( (uWork&1)==0 ); cReceive=RBR; cBuffer[k]=cReceive&0x0ff; if ( cReceive=='&' ) { cBuffer[k+1]='\0'; nLen=k+1; bReceive=1; break; } k++; k%=16; } } } [ 本帖最后由 jessicadhit 于 2012-5-11 21:26 编辑 ]

最新回复

没玩过  详情 回复 发表于 2012-5-12 21:24

回复
举报

17

帖子

0

TA的资源

一粒金砂(中级)

没人来。。。?自己顶下。。

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

没玩过

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表