background image

摘要:目前很多嵌入式系统以 DSP 为核心构建,但是,采用汇编语言开发 DSP 系统存在

开发难度大、开发周期长、维护性差等缺点,应用 C 语言开发 DSP 系统是广大嵌入式开发

者的迫切要求。有关单片机的 C 语言开发有相当多的资料可以参考,而 DSP 系统的 C 语

言开发却很少见。本文以 TI 公司的 DSP 器件 TMS320F24X 系列为例,讲述怎样用 C 语言

开发一个完整的 DSP 嵌入式系统。

       大家在开发嵌入式产品时首先会想到用控制器的汇编语言编写*程序,主要原因是:

一、汇编语言生成的程序对应的二进制代码少,程序执行要比高级语言生成的程序快。

二、控制器刚问世时,没有相应的高级语言可供使用。

三、存储器的价格问题和寻址空间的限制。

       以上所述问题目前都基本上解决了,在这就不阐述了。实际情况是:在单片机的应

用领域,开发者开始使用 C 语言进行开发了。大家发现用高级语言开发嵌入式产品是如此

轻松,并且 C 语言程序编译后的二进制代码也非常短小精练。

        目前使用最多的数字信号处理器(DSP)是美国 TI 公司的 TMS320 家族,而工业控

制上用的最多的又是 TMS320F2XX 系列,TI 公司为每一个 DSP 芯片提供了汇编语言和 C

语言供开发者选用,本人一直使用 C 语言进行产品开发,而目前很少见到这方面的介绍,

所以特撰此文以 TMS320F240 为例,向各位同行推荐用 C 语言开发 DSP 嵌入式系统。

1、DSP 的 C 语言的特殊性

       大家在使用 51 系列 C 语言时已经注意到,控制器的 C 语言和 PC 机上使用的 C 有一

个显著的特点:经常要对硬件操作,程序中有大量针对控制器内部资源进行操作的语句。

所以,开发者要明白怎样用 C 语言来操纵控制器的内部资源,既怎样用 C 语句操作寄存

器和内部存储器等。

举个例子,在 51

 

汇编中我们写 MOV A,#20H,汇编程序能够识别 A 是指累加器,而在

51 C

 

程序中我们写 ACC=32;,编译器能够识别 ACC 是指累加器而不是一般的变量。即

每一个寄存器都有一个专有名字供开发者使用,它们定义在一个头文件 reg51.h 中,程序

员只需在程序的开始部分用#include“reg51.h”语句将该文件包含进来即可。注意:这些寄

存器的名字不能用做变量名。

同样,在 TMS320F240 的 C 语言中也有一个头文件 C240.H 定义各个寄存器的名称,这里

摘录几条语句进行介绍。