📄 main.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 + -