📄 adc.c
字号:
#define IN_ADC
#include "config.h"
#include "stdio.h"
#define AD0STAT (*((volatile unsigned long *) 0xE0034030))
#define AD0DR0 (*((volatile unsigned long *) 0xE0034010))
#define AD0CR (*((volatile unsigned long *) 0xE0034000))
/***********************************************
初始化函数
****************************************************/
void ADCInit(void)
{
PINSEL1 = PINSEL1 & (~(0x03 << 12)); // 将P0.22设置为AD功能
PINSEL1 = PINSEL1 | (0x03 << 12);
AD0CR = (1 << 0) | /* 选择通道0 */
(((Fpclk / 4000000) - 1) << 8) | /* 转换时钟为1MHz */
(0 << 16) | /* BURST = 0,软件控制转换操作 */
(0 << 17) | /* CLKS = 0,使用11clock转 */
(1 << 21) | /* PDN = 1,正常工作模式 */
(0 << 22) | /* TEST = 0,正常工作模式 */
(1 << 24) | /* 设置直接启动模式 */
(0 << 27 );
}
/*********************************************************
延时函数
*************************************************************/
void adc_delay(uint16 t)
{
while(t--);
}
/***********************************************************.
AD转换函数
*******************************************************************/
uint16 GetAdc(void)
{
uint16 ADResult;
AD0CR |= (1 <<24);
while ((AD0STAT & 0x01) == 0); /* 读取AD0STAT的通道0的Done */
AD0CR |= (1 <<24);
while ((AD0STAT & 0x01) == 0); /* 读取AD0STAT的通道0的Done */
adc_delay(200);
ADResult = AD0DR0;
ADResult = (ADResult >> 6) & 0x3FF;
ADResult = ADResult>>4;
return ADResult;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -