DSP

Ti的C28x系列的DSP使用经验,如何整合DSP中运行的函数。

2019-07-13 12:20发布

    我从事Ti的C28x系列的DSP的开发时间不长,短短一年,使用过两种架构的DSP,主要针对资源管理有一些自己的心得。     在工程文件的分布上,本人认为需要DSP运行的的代码应该放在一个.C文件中管理,这样整个工程的代码结构就非常清晰了,查找问题,也容易定位。这个.C我们可以称之为UsrApp.C,包含4个函数,初始化函数,主中断函数,1ms定时器中断函数,主循环函数。 代码如下: #include "Serve.h" #include #include #ifdef FLASH #pragma CODE_SECTION(MainInt,"ramfuncs") #pragma CODE_SECTION(StdLoop,"ramfuncs") #endif void UsrAppInit(void) //初始化函数 { } void MainInt(void) //主中断函数 { } void StdLoop(void) //1ms定时器函数 { } void MainLoop(void) //主循环函数 { } 这样在其他.c文件中的函数直接extern,按照需求塞到这四个函数里就可以了。 1、初始化函数没啥好说的。 void UsrAppInit(void) //初始化函数 2、主中断函数 一般用PWM的CMPC触发的中断,中断频率为PWM的频率,还有一种我习惯用的,PWM启动ADC转换,ADC转换完成后再触发一个中断,这个主中断的频率也是PWM频率。 这个主中断函数,一般放实时性要求比较高的函数,我做电力电子行业的,一般会将数据采集、故障保护、算法、PWM释放等函数放在这里面。 void MainInt(void) //主中断函数 3、1ms定时器中断函数 这个函数是由定时器触发的,一般里面放通讯函数,这类通讯函数,一般是轮询的,每隔一定时间轮询,查看是否接收数据,或者发送数据。 void StdLoop(void) //1ms定时器函数 4、主循环函数 一般放一些参数配置,或者显示之类等实时性要求不高的函数。 void MainLoop(void) //主循环函数