网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: TI德州中文网 >> 技术文库 >> C6000文章 >> C64X >> 正文
  DSP5402程序注释           ★★★ 【字体:
DSP5402程序注释
作者:互联网    文章来源:本站原创    点击数:    更新时间:2006-12-1    
实验一
关于本程序的整体说明:
本程序的目的是利用5402进行处理,在屏幕上显示“hello,world!”
其中使用了 #ifdef FILEIO 来选择是否输入字符串。
流程图如下: 

定义了 FILEIO 么?
|
/ \
Y / \ N
输出“hello,world!” 输出“hello,world!”
| |
要求输入字符串 OVER
|
输出读入字符串大小
|
OVER

/* ======= hello.h ========== 头函数 
struct PARMS { /*头函数中仅定义了一个结构体 PARMS*/
int Beta;
int EchoPower;
int ErrorPower;
int Ratio;
struct PARMS *Link;
};
======================= */
/* ======== hello.c ======== */
#include <stdio.h>
#include "hello.h"
#define BUFSIZE 30 /*定义BUFSIZE(缓冲空间)为30*/
struct PARMS str = /*全局变量是一个结构体 str*/
{
2934, /*Beta = 2934*/
9432, /*EchoPower = 9432*/
213, /*ErrorPower = 213*/
9432, /*Ratio = 9432*/
&str /*Link 是指向str自己的指针。本程序中并未使用*/
}; /*PARAMS是在hello.h中定义的结构类型*/
/* 
* ======== main ======== 主函数
*/
void main()
{
#ifdef FILEIO /*第一次运行程序时,FILEIO没有定义,此处不执行,只执行puts()一句。*/
int i;
char scanStr[BUFSIZE]; /*输入字符存入scanStr数组中*/
char fileStr[BUFSIZE]; /*存储从文件中读出的内容*/
size_t readSize; /* size_t 是在stdio.h中定义的无符号整型,用来存储输入字符数目*/
FILE fptr; /*FILE是在stdio.h中定义的一结构变量,用来记录控制输入输出流的所有信息,fprt是文件指针*/
#endif
/* 向标准输出设备写一字符串*/
puts("hello world!\n");

#ifdef FILEIO
/*清除字符型数组*/
for (i = 0; i < BUFSIZE; i++) {
scanStr[i] = 0 /* 预置的语法错误(少一个“;”)*/
fileStr[i] = 0;
}

/* 从输入设备读入一字符串,并存入scanStr数组中 */
scanf("%s", scanStr);

/*在主机上打开一文件,然后向文件写入刚才的字符串 */
fptr = fopen("file.txt", "w");
fprintf(fptr, "%s", scanStr);
fclose(fptr);

/* 在主机打开一文件,然后从中读入字符串 */
fptr = fopen("file.txt", "r");
fseek(fptr, 0L, SEEK_SET); /*SEEK_SET是stdio.h中通过宏定义定义的常量0x0000*/
/*此句如果没有,运行结果不改变,此处为了保证程序的规范(修改方便)*/
readSize = fread(fileStr, sizeof(char), BUFSIZE, fptr); /*获取文件大小,即输入字符数目*/
printf("Read a %d byte char array: %s \n", readSize, fileStr); /*输出“Read a ??(数字) byte char array: ??????(字符串)”*/
fclose(fptr); /*关闭文件*/
#endif
}

实验二
/* ======== hello.c ======== */

/* DSP/BIOS 头文件*/
#include <std.h>
#include <log.h>

/* 被配置工具创建的对象*/
extern far LOG_Obj trace;

/* ======== main ======== */
Void main()
{
LOG_printf(&trace, "hello world!"); /*本程序简单,仅有一句话意思很明了了。*/

/* 返回后进入DSP/BIOS闲置循环 */
return;
}
实验三

/* ======== volume.h ======== */
#ifndef __VOLUME_H
#define __VOLUME_H#ifndef TRUE
#define TRUE 1
#endif
#define BUFSIZE 0x64
#define FRAMESPERBUFFER 10
#define MINGAIN 1
#define MAXGAIN 10
#define MINCONTROL 0
#define MAXCONTROL 19
#define BASELOAD 1
#endif /* __VOLUME_H */
/*一些宏定义,定义了一些常量*/

#include <stdio.h>
#include "volume.h"

/*定义全局变量 */
int inp_buffer[BUFSIZE]; /* 设置输入输出数据缓冲区 inp_buffer 和 out_buffer 大小为 0x64*/
int out_buffer[BUFSIZE];
int gain = MINGAIN; /* 增益设置,MINGAIN代表1,在volume.h中定义的 */
unsigned int processingLoad = BASELOAD; /*BASELOAD大小为1,也是在volume.h中定义的*/
extern void load(unsigned int loadvalue); /*该函数是一个汇编的处理函数,具体分析见后文*/
static int processing(int *input, int *output);
static void dataIO(void); /*定义了三个函数load、processing、dataIO*/

/* ======== main ======== */

void main()
{
int *input = &inp_buffer[0]; /*指针赋初值*/
int *output = &out_buffer[0];
puts("volume example started\n"); /*输出一句话*/
/* 下面是一个无限循环 */
while(TRUE)
{
/* 使用探测器来连接住机上的文件. */
dataIO(); /*调用dataIO函数,实际上,dataIO是一个空函数。*/
processing(input, output); /*调用processing函数*/
} /*dataIO是一个空函数,实际上主函数完成的是对processing函数的无限次调用。*/
}

/* ======== processing ======== *

对输入信号进行数字信号处理变换.
参数:输入输出缓冲区的地址 */
static int processing(int *input, int *output) /*函数processing*/
{
int size = BUFSIZE;

while(size--){
*output++ = *input++ * gain;
} /*根据输入信号和gain大小,对输出信号进行赋值*/

/* load辅助程序*/
load(processingLoad);

return(TRUE);
}

/* ======== dataIO ======== *
读入输入信号,写输出信号 */
static void dataIO()
{
return;
}

;load函数,是一个保存在load.asm中的汇编函数。这里,就涉及到混编。DSP处理程序的一般形式在这里就看到了。过程的控制,使用C语言,利用高级语言较强的逻辑功能。处理的过程,则使用汇编语言,以提高处理速度,达到实时信号处理的要求。简单介绍一下load函数,这里不讲汇编语言的语言及其格式了,只说明一下这个函数的作用。该函数通过执行N*loadvalue来模仿在DSP上的一个负载。

欢迎点击进入:"61IC中国电子在线"官方网站     文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    DSP5402读写SST39VF400A之C+
    DSP5402读写K9F1G08之C++源代
    波特率自适应技术在DSP5402上
    波特率自适应技术在DSP5402上
    DSP5402之硬件SPI配置
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:TC 湘ICP备06016957号