📄 main.c
字号:
#include "F281X.h"
#include "Macro.h"
extern cregister volatile Uint16 IFR;
extern cregister volatile Uint16 IER;
Uint16 ADC_data[200];
Uint16 ADC_num = 0;
void initsys(void);
void initadc(void);
interrupt void adc_int(void);
main()
{
initsys();
initadc();
while(1);
}
void initsys(void)
{
DINT;
EALLOW;
IER = 0x0000;
IFR = 0x0000;
PLLCR=0x0009; // 135M 30M*9/2
WDCR= 0x0068; //Disable
asm(" C28OBJ");
PCLKCR = BIT3_16; //ADC clk enable
SetBit0_16(PIECTRL); //enable PIE vector
// Clear all PIEIER registers:
PIEIER1 = 0;
PIEIER2 = 0;
PIEIER3 = 0;
PIEIER4 = 0;
PIEIER5 = 0;
PIEIER6 = 0;
PIEIER7 = 0;
PIEIER8 = 0;
PIEIER9 = 0;
PIEIER10 = 0;
PIEIER11 = 0;
PIEIER12 = 0;
// Clear all PIEIFR registers:
PIEIFR1 = 0;
PIEIFR2 = 0;
PIEIFR3 = 0;
PIEIFR4 = 0;
PIEIFR5 = 0;
PIEIFR6 = 0;
PIEIFR7 = 0;
PIEIFR8 = 0;
PIEIFR9 = 0;
PIEIFR10 = 0;
PIEIFR11 = 0;
PIEIFR12 = 0;
SetBit5_16(PIEIER1); //ADC INT
SetBit0_16(IER);
ADCINT_ISR=(unsigned long)&adc_int;
EDIS;
EINT;
}
void initadc(void)
{
Uint16 i;
DINT;
EALLOW;
SetBit3_16(PCLKCR); //ADC的高速时钟使能
HISPCP=0x0007; //高速时钟预定标,sysclock/n*2,n!=0,n默认为1。n=7max
SetBit14_16(ADCTRL1); //ADC软件复位并延时.最小可一个NOP延时
// for(i=0;i<0x10;i++);
nop;
ADCTRL1=0x08d0; //0000|1000|1|1|01|0000,
//--|S/H wide|HISPCP/2|RUN=1连续转换|禁止绕回|级联
SetBit14_16(ADCTRL2);
ADCTRL2=0x0800;
// ADCTRL2=0x2800; //0010:非级联;复位到0向量,此处不起作用;软件写1启动;rev
//1000:SQ1中断使能;中断方式,每个SQ1结束产生中断;rev;禁止EVA启动
//0000:禁止外部启动;复位SQ2;SQ2启动位;rev
//0000:同SQ1
ADCTRL3=0x00de; //0000 0000 rev.11:带隙和基准加电; 00de
//0:核掉电;1111:clk/30;0:连续采样.
//AD最终速度:135/(7*2)/2/(15*2)=160k
for(i=0;i<60000;i++) //min:7ms delay
{
nop;
}
SetBit5_16(ADCTRL3); //延时后核加电.所有加电后,ADC 20us 后才进行第一次转换?
for(i=0;i<60000;i++) //min:7ms delay
{
nop;
}
ADCMAXCONV=0x0000; //最大转换通道数1,只转换一个通道
ADCCHSELSEQ1=0x0000; //输入通道选择序列寄存器,此处选择ADCINA0
SetBit13_16(ADCTRL2);
EDIS;
EINT;
}
interrupt void adc_int(void)
{
DINT;
if(ADC_num < 200)
{
ADC_data[ADC_num]=ADCRESULT0>>4; //结果寄存器12位左对齐
ADC_num++;
SetBit4_16(ADCST); //清出ADC SQ1中断标志
PIEACK = 0x0001;
}
else
ADC_num = 0;
EINT;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -