📄 ad_sample.c
字号:
#include "..\APP\config.h"
void AD_INIT()
{
PINSEL1 |=(1<<22);
PINSEL1 |=(1<<24);
PINSEL1 |=(1<<26);//
PINSEL1 |=(1<<18);
PINSEL1 |=(1<<20);
PINSEL0 |=(3<<8);
/* 进行ADC模块设置 */
AD0CR = (0 << 0) | // SEL=8,选择通道3
((Fpclk / 1000000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
(0 << 16) | // BURST=0,软件控制转换操作
(0 << 17) | // CLKS=0, 使用11clock转换
(1 << 21) | // PDN=1,正常工作模式
(0 << 22) | // TEST1:0=00,正常工作模式
(0 << 24) | // START=1,直接启动ADC转换
(0 << 27); // 直接启动ADC转换时,此位无效
//DelayNS(10);
//ADC_Data = AD0DR; // 读取ADC结果,并清除DONE标志位
}
void AD_START()
{
uint32 AD_RESULT[6]; uint8 i=0;
memset(AD_RESULT,0,sizeof(AD_RESULT)) ;
for(i=0;i<6;i++)
{
if(i<3) { AD0CR = (1 << i) | // SEL=8,选择通道3
((Fpclk / 1000000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
(0 << 16) | // BURST=0,软件控制转换操作
(0 << 17) | // CLKS=0, 使用11clock转换
(1 << 21) | // PDN=1,正常工作模式
(0 << 22) | // TEST1:0=00,正常工作模式
(0 << 24) | // START=1,直接启动ADC转换
(0 << 27); // 直接启动ADC转换时,此位无效
}
else { AD0CR = (1 << i+1) | // SEL=8,选择通道3
((Fpclk / 1000000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
(0 << 16) | // BURST=0,软件控制转换操作
(0 << 17) | // CLKS=0, 使用11clock转换
(1 << 21) | // PDN=1,正常工作模式
(0 << 22) | // TEST1:0=00,正常工作模式
(0 << 24) | // START=1,直接启动ADC转换
(0 << 27); // 直接启动ADC转换时,此位无效
}
AD0CR |=START_AD;
while ((AD0DR & 0x80000000) == 0);
AD_RESULT[i]=AD0DR;
AD_RESULT[i] = (AD_RESULT[i] >> 6) & 0x3ff;
}
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -