我从事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) //主循环函数