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

版权声明:原创博客,不得用于商业用途 https://blog.csdn.net/weixin_39768579/article/details/82220806

    我从事Ti的C28x系列的DSP的开发时间不长,短短一年,使用过两种架构的DSP,主要针对资源管理有一些自己的心得。

    在工程文件的分布上,本人认为需要DSP运行的的代码应该放在一个.C文件中管理,这样整个工程的代码结构就非常清晰了,查找问题,也容易定位。这个.C我们可以称之为UsrApp.C,包含4个函数,初始化函数,主中断函数,1ms定时器中断函数,主循环函数。

代码如下:

#include "Serve.h"
#include <stdio.h>
#include <string.h>

#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) //主循环函数

猜你喜欢

转载自blog.csdn.net/weixin_39768579/article/details/82220806
dsp