|
昨天写ADC代码时总是出错,后来根据原来一位朋友上传的示例代码才成功了。 将代码引用了下,吧ADC的输出显示在oled屏上 #include <lm3s8962.h> #include <hw_memmap.h> #include <hw_ints.h> #include <hw_types.h> #include <debug.h> #include <sysctl.h> #include <gpio.h> #include <stdio.h> //sprintf所需要的头文件 #include <hw_adc.h> //就是因为没有引入这个头文件所以编译通不过 #include <adc.h> #include "rit128x96x4.h"//oled显示需要的头文件 int i=0; char s[10] ;//用于储存输出字符的 unsigned long ulData = 0x00; int main(void){
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);
// // Initialize the OLED display. // RIT128x96x4Init(1000000); SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC); /* 使能ADC模块的时钟 */ SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS); /* 125KSps采样率 */ ADCSequenceDisable(ADC_BASE, 0); /* 禁能所有采样序列 */ ADCSequenceConfigure(ADC_BASE, 0, ADC_TRIGGER_PROCESSOR, 0); /* 采样序列0为处理器触发 */ ADCSequenceStepConfigure(ADC_BASE, 0, 0, ADC_CTL_CH0 | ADC_CTL_END); /* 采样序列0的第0步使用ADC0, 完成第0步后结束 */ ADCSequenceEnable(ADC_BASE, 0); /* 使能采样序列0 */ RIT128x96x4StringDraw("ADC0=", 0, 15, 15); RIT128x96x4StringDraw("(mV)", 68, 15, 15); while(1) { ADCProcessorTrigger(ADC_BASE, 0); /* 处理器触发采样序列0 */ while( (HWREG(ADC_BASE + ADC_O_X_SSFSTAT) & 0x00000100) ); /* 等待FIFO 0为非空,即等待转换结束 */ ADCSequenceDataGet(ADC_BASE, 0, &ulData); /* 读出10位转换结果 */ ulData = (ulData * 3000) / 1023; /* 通过sprintf函数将unsigned long格式的ADC输出转换为字符串 */ sprintf(s, "%d", ulData); RIT128x96x4StringDraw(s, 30, 15, 15);
SysCtlDelay(SysCtlClockGet() / 12);//延时 RIT128x96x4StringDraw(" ", 30, 15, 0);//清空adc值的部分以便更新 } }
|
|