📄 main.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by: Chenxibing
** Modified date: 2005-01-20
** Version:
** Descriptions: AD转换实验。
**
********************************************************************************************************/
#include "config.h"
uint32 ADC_Data;
char str[20];
/*
*******************************************************************************************************
** 函数名称 :AD_int()
** 函数功能 :AD转换完成中断
** 入口参数 :无
** 出口参数 :无
*******************************************************************************************************
*/
void AD_int (void)
{
ADC_Data = AD0DR3; // 读取ADC结果
//ADC_Data = AD0GDR; // 读取ADC结果
ADC_Data = (ADC_Data >> 6) & 0x3ff;
ADC_Data = ADC_Data * 2475; // 参考电压经过3/4分压:3300*3/4
ADC_Data = ADC_Data / 1024; // 在此设置端点,观察AD转换结果
VICVectAddr = 0x00;
}
/*
*******************************************************************************************************
** 函数名称 :main()
** 函数功能 :进行3通道电压ADC转换,中断方式。
** 调试说明 :在AD_int中设置断点,观察AD转换的值。
*******************************************************************************************************
*/
int main (void)
{
PINSEL0 = 0x00000005; // 管脚连接串口
PINSEL1 = 1 << 28; // P0.30连接到AD0.3
IRQEnable();
/* 设置ADC中断IRQ */
VICIntSelect = 0x00; /* 所有中断通道设置为IRQ中断 */
VICVectCntl0 = 0x20 | 18; /* 中断通道分配最高优先级 */
VICVectAddr0 = (uint32)AD_int; /* 设置中断服务程序地址 */
VICIntEnable = 1 << 18; /* 使能ADC中断 */
/* 进行ADC模块设置 */
AD0INTEN |= 8; // AD0.3转换完成产生中断
AD0CR = (1 << 3) | // 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,正常工作模式
(1 << 24) | // START=1,直接启动ADC转换
(0 << 27); // 直接启动ADC转换时,此位无效
//ADC_Data = AD0GDR; // 清除DONE标志位
ADC_Data = AD0DR3; // 清除DONE标志位
while (1);
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -