LPC1768之模数转换ADC

悲催的是我的串口有点问题,没法print信息。只能Debug查看变量看数值了。幸好AD转换代码不多,用F10看的转换结果。具体配置参考datasheet各个寄存器的配置。
/*************************************************************************************	  
*	main.c:  the main file 
*	NXP --> LPC1768
*
*   
*	Author	:	light					
*	Date	:	2012-4-21  
*
*	Email	:	lightwu@hotmail.com
***************************************************************************************/

#include <LPC17XX.h>
#include "../Source/uart.h"

#define		ADC_MAX		0XFFF

uint32_t	AdcFlag = 1;
/********************************************************************************
** Descriptions			:ADC initialize
**
** parameters			:None 
** Returned value		:None
*********************************************************************************/
void AdcInit(void)
{
	LPC_SC->PCONP |= (1<<12);					//打开ADC功率控制器
	LPC_PINCON->PINSEL3 |= (3<<30);				//设为ADC管脚

	LPC_ADC->ADCR |= (1<<5);					//选择ADC0.5作为输入
	LPC_ADC->ADCR |= (4<<8);
	LPC_ADC->ADCR |= (1<<21);				   	//正常工作模式

//	NVIC_EnableIRQ(ADC_IRQn);              /* enable irq in nvic              */
//	LPC_ADC->ADINTEN |= (1<<5);				 //中断使能
}
/********************************************************************************
** Descriptions			:ADC start convert
**
** parameters			:None 
** Returned value		:None
*********************************************************************************/
void AdcStart(void)
{
	LPC_ADC->ADCR &= ~(7<<24);			//停止转换
	LPC_ADC->ADCR |=  (1<<24);			//开始转换	
}
/********************************************************************************
** Descriptions			:ADC stop convert
**
** parameters			:None 
** Returned value		:None
*********************************************************************************/
void AdcStop(void)
{
	LPC_ADC->ADCR &= ~(7<<24);			//停止转换
}
/********************************************************************************
** Descriptions			:ADC convert
**
** parameters			:None 
** Returned value		:None
*********************************************************************************/
void AdcCovt(void )
{
	while((~(LPC_ADC->ADGDR))&(1<<31));			//查询等待转换完成标志

//	while(AdcFlag);								//ADC转换完成中断标志
//	AdcFlag = 1;							   	//ADC转换完成中断标志置一
}
/********************************************************************************
** Descriptions			:Get ADC convert value
**
** parameters			:None 
** Returned value		:ADC convet value
*********************************************************************************/
uint32_t GetAdcCovt(void )
{
	uint32_t AdcValue;

	AdcStart();
	AdcCovt();
	AdcValue = ((LPC_ADC->ADGDR)>>4) & ADC_MAX;				//读取转换结果,12位最大值为0XFFF
	AdcStop();

	return AdcValue;
}
/********************************************************************************
** Descriptions			:ADC finish interrupt
**
** parameters			:None 
** Returned value		:None
*********************************************************************************/
void ADC_IRQHandler(void)
{
	AdcFlag = 0;	
}


/*----------------------------------------------------------------------------
  The main Function 
 *----------------------------------------------------------------------------*/
int main(void)
{

	SystemInit();
	Uart0Init(115200);
	AdcInit();

	while(1)
	{
		
		GetAdcCovt();
		

	}

}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值