我的是smartARM开发板,模仿串口的写了个,运行不起来,高手能不能帮看看。<br /><br />#define IN_ADC<br />#include "config.h"<br />static OS_EVENT *ADCSem;<br />void ADCInit(void)<br />{<br /> PINSEL1 = 0x01400000; // 设置P0.27、P0.28连接到AIN0、AIN1<br /> ADCSem = OSSemCreate(0);<br /> if (ADCSem != NULL)<br /> {<br /> return TRUE;<br /> }<br /> else<br /> {<br /> return FALSE;<br /> }<br />} <br /> uint32 ADCGetch(uint8 chunnel)<br />{<br /> uint32 ADC_Data;<br /> uint8 err;<br /> ADCR = (1 << chunnel) | // SEL = 1 ,选择通道0<br /> ((Fpclk / 1000000 - 1) << 8) | // CLKDIV = Fpclk / 1000000 - 1 ,即转换时钟为1MHz<br /> (0 << 16) | // BURST = 0 ,软件控制转换操作<br /> (0 << 17) | // CLKS = 0 ,使用11clock转换<br /> (1 << 21) | // PDN = 1 , 正常工作模式(非掉电转换模式)<br /> (0 << 22) | // TEST1:0 = 00 ,正常工作模式(非测试模式)<br /> (1 << 24) | // START = 1 ,直接启动ADC转换<br /> (0 << 27); // EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换)<br /> OSSemPend(ADCSem, 0, &err); // 等待接收数据 //<br /> ADCR = ADCR | (1 << 24); // 再次启运转换<br /> OSSemPend(ADCSem, 0, &err); // 等待接收数据//<br /> ADC_Data = ADDR; // 读取ADC结果<br /> ADC_Data = (ADC_Data>>6) & 0x3FF; // 提取AD转换值<br /> ADC_Data = ADC_Data * 3300; // 数值转换<br /> ADC_Data = ADC_Data / 1024;<br /> return ADC_Data ;<br />} <br /> void ADC_Exception(void)<br />{<br /> OSSemPost(ADCSem); // 通知接收任务//<br /> VICVectAddr = 0; <br />}<br /><br /> |
|