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

📄 main.c

📁 DSP2812串口通信用来控制小灯的亮度
💻 C
字号:
//DSP2812 串口通信控制小灯的亮度
#include "DSP281x_Device.h"


void ConfigureGpio(void); //配置IO口
void InitSystem(void); //初始化内核寄存器
void SCI_Init(void);//SCI模块初始化
interrupt void SCI_RX_isr(void);//SCI接受中断服务程序
interrupt void SCI_TX_isr(void);//SCI发送中断服务程序
interrupt void cpu_timer0_isr(void); //cpu定时器中断
interrupt void adc_isr(void);//adc中断函数

char message[1]={"K"};//发送到电脑的字符
char buffer[1];//接受从电脑发送过来的字符
int adcInput[1024]; //ADC采样数据保存
unsigned int adcCount=0; //ADC采样计数


void main(void)
{
	int i;
	for(i=0;i<64;i++)
	{
		adcInput[i]=0;
	}
	InitSystem();  //初始化内核寄存器
	ConfigureGpio();  //配置IO口
	InitPieCtrl();  //PIE控制单元初始化
	InitPieVectTable(); //PIE向量表初始化函数
	InitAdc(); //
	
	EALLOW;
 	PieVectTable.TXAINT=&SCI_TX_isr;//对SCI发送和接收中断的入口地址重新进行映射
 	PieVectTable.RXAINT=&SCI_RX_isr; //
 	PieVectTable.TINT0=&cpu_timer0_isr; //定时器中断的入口地址重新进行映射
 	PieVectTable.ADCINT=&adc_isr; //
 	EDIS;
	
//	InitCpuTimers();  //定时器中断配置
//	ConfigCpuTimer(&CpuTimer0,150,50000); //
//	PieCtrlRegs.PIEIER1.bit.INTx7=1; //

//	PieCtrlRegs.PIEIER9.bit.INTx2=1;//使能PIE中的SCI发送中断
// 	PieCtrlRegs.PIEIER9.bit.INTx1=1; //使能PIE中的SCI接受中断
 	PieCtrlRegs.PIEIER1.bit.INTx6 =1;//
 	
 	
// 	IER|=0x0100;//使能CPU级中断,SCI
 	IER|=0x0001;//使能CPU级中断,T1
 	EINT;//使能全局中断
 	ERTM;//使能实时调试中断

//	SCI_Init();
	
//	EvaRegs.GPTCONA.bit.TCMPOE=1; //由定时器1驱动T1PWM输出有效
//	EvaRegs.GPTCONA.bit.T1PIN =1; //通用定时器1的比较输出设置为低电平有效
	
//	EvaRegs.T1CON.all =0x1702;   //定时器1工作在连续增计数模式
//	CpuTimer0Regs.TCR.bit.TSS=0;
	
//	EvaRegs.T1PR =2219; //配置T1周期寄存器
//	EvaRegs.T1CMPR=1; //配置T1比较寄存器
//	EvaRegs.T1CON.bit.TENABLE=1;  //比较操作时能
	
	
	AdcRegs.ADCTRL1.bit.SEQ_CASC=0;//双序列发生器模式
 	AdcRegs.ADCTRL1.bit.CONT_RUN=0;//启停转换方式
 	AdcRegs.ADCTRL1.bit.CPS=0;//预定标器的分频系数为1
 	AdcRegs.ADCMAXCONV.all=0x0000;//SEQ1中有1个转换
 
 	AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x08;//将ADCINA0 设置为SEQ1的第一个转换通道
 	AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;//允许通过EVA来启动SEQ1
 	AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;//使能SEQ1中断
 	AdcRegs.ADCTRL3.bit.ADCCLKPS=2;//使ADC模块的核心时钟频率=HSPCLK/4
 
 	EvaRegs.GPTCONA.bit.TCMPOE=0;//禁止定时器的比较输出
 	EvaRegs.GPTCONA.bit.T1PIN=0;//将定时器1的比较输出极性设置为强制低
 	EvaRegs.GPTCONA.bit.T1TOADC=2;//利用定时器1来启动ADC模块
 
 	EvaRegs.T1CON.bit.FREE=0;//仿真挂起时立即停止工作
 	EvaRegs.T1CON.bit.SOFT=0;
 	EvaRegs.T1CON.bit.TMODE=2;//配置成连续增计数模式
 	EvaRegs.T1CON.bit.TPS=7;//定时器1的输入时钟预定标系数为128
 	EvaRegs.T1CON.bit.TENABLE=1;//使能通用定时器1的操作
 	EvaRegs.T1CON.bit.TCLKS10=0;//定时器使用内部时钟源
 	EvaRegs.T1CON.bit.TCLD10=0;//当计数器为0时,重载定时器的比较寄存器
 	EvaRegs.T1CON.bit.TECMPR=0;//禁止定时器的比较操作
 
 	EvaRegs.T1PR=5860;//定时器的周期为5860迹

⌨️ 快捷键说明

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