⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 use.c

📁 DSP的AD转换程序
💻 C
字号:
#include "DSP28_Device.h"
/*#include "DSP28_CpuTimers.h"
#include "DSP28_Ev.h"
#include "DSP28_Gpio.h"
#include "DSP28_PieCtrl.h"
#include "DSP28_PieVect.h"
#include "DSP28_SysCtrl.h"*/

void InitSysCtrl(void);
void InitGpio(void);
void InitPieCtrl(void);
void InitPieVectTable(void);
void InitCpuTimers(void);
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period);
interrupt void cpu_timer0_isr(void);

void main(void)
{
	unsigned int i=0;
	unsigned long time_stamp=0;
	int freq[8]={2219,1973,1776,1665,1480,1332,1184,1110};
	
	// 清楚CPU中断
	DINT;
	IER=0x0000;
	IFR=0x0000;
	
	// 系统初始化
	InitSysCtrl();
	
	// 通用输入输出接口GPIO配置
	InitGpio();
	
	// 初始化PIE
	InitPieCtrl();
	
	// 初始化中断向量表
	InitPieVectTable();
	
	// 定时器Timer0的中断入口向量重新映射
	EALLOW;
	PieVectTable.TINT0=&cpu_timer0_isr;
	EDIS;
	
	// 初始化定时器Timer0
	InitCputimers();
	
	// 设置定时器0周期寄存器的值
	ConfigCpuTimer(&CpuTimer0,150,50000);
	
	IER=0x0001;           // 使能中断组1
	EINT;                 // 使能全局中断
	ERTM;                 // 使能实时调试中断(优先级高)
	
	// 配置事件管理器EVA,由定时器1/定时器2的逻辑来驱动T1PWM/T2PWM
	
	EvaRegs.GPTCONA.bit.TCOMPOE=1;
	EvaRegs.GPTCONA.bit.T1PIN=1;  // 将通用定时器1的比较输出设置为低有效
	EvaRegs.T1CON.all=0x1702;     // 采用连续增计数模式,输入时钟预定标为x/128,采用内部时钟源
	                              // 使能定时器比较功能
		                              
	CpuTimer0Regs.TCR.bit.TSS=0;  // 启动定时器
	
	while(1)
	{
		if((CpuTimer0.InterruptCount-time_stamp)>10)
		{
			time_stamp=CpuTimer0.InterruptCount;
			for(i=0;i<14;i++) 
			{
				if(i<7) EvaRegs.T1PR=freq[i];
				else EvaRegs.T1PR=freq[14-i];
			}
			EvaRegs.T1CMPR=EvaRegs.T1PR/2;
			EvaRegs.T1CON.bit.TENABLE=1;
		//	if(i>=14)
		//	i=0;
		}
		
		i=0;
	}
		
	
}

interrupt void cpu_timer0_isr(void)
{
	CpuTimer0.InterruptCount++;
	PieCtrl.PIEACK.all=PIEACK_GROUP1;  // 清楚PIE分组1的中断响应位
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -