//模数转换器实验程序解析 //头文件 #include <stdint.h> #include <stdbool.h> #include "inc/hw_types.h" #include "inc/hw_memmap.h" #include "driverlib/fpu.h" #include "driverlib/sysctl.h" #include "driverlib/rom.h" #include "driverlib/pin_map.h" #include "grlib/grlib.h" #include "drivers/cfal96x64x16.h" #include "driverlib/gpio.h" #include "driverlib/adc.h" #include "inc/hw_gpio.h" int main(void) {tContext sContext;tRectangle sRect;ui32 ulADC0_Value;ui8 ulADC0_v[8];ui32 i,j;const char chars[16]={"0123456789ABCDEF"};//使能FPUFPUEnable();FPULazyStackingEnable();//设置系统时钟为50MHz (400/2/4=50)ROM_SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL |SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);//初始化ADC0/PE3ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);ROM_GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3);//设置ADC参考电压为外部3VROM_ADCReferenceSet(ADC0_BASE, ADC_REF_EXT_3V);//配置ADC采集序列ROM_ADCSequenceConfigure(ADC0_BASE, 0,ADC_TRIGGER_PROCESSOR, 0);ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 0, ADC_CTL_CH0 |ADC_CTL_END | ADC_CTL_IE);//使能ADC采集序列ROM_ADCSequenceEnable(ADC0_BASE, 0);ROM_ADCIntClear(ADC0_BASE, 0);ROM_ADCIntEnable(ADC0_BASE, 0);//初始化显示模块CFAL96x64x16Init();GrContextInit(&sContext, &g_sCFAL96x64x16);while(1) {//触发采集ADCProcessorTrigger(ADC0_BASE, 0);//等待采集结束while(!ADCIntStatus(ADC0_BASE, 0, false)) ;//获取采集结果ADCSequenceDataGet(ADC0_BASE, 0, &ulADC0_Value);//将采集结果从32位无符号数转化为chari=28;for(j=0;j<8;j++){ulADC0_v[j]=chars[(ulADC0_Value>>i)&0xf];i-=4;}//延时SysCtlDelay(SysCtlClockGet() / 12);//屏幕的上面24行填充蓝色覆盖上次的显示结果sRect.i16XMin = 0;sRect.i16YMin = 0;sRect.i16XMax = GrContextDpyWidthGet(&sContext) - 1;sRect.i16YMax = 23;GrContextForegroundSet(&sContext, ClrDarkKhaki);GrRectFill(&sContext, &sRect);//在颜色块的边缘放置白框GrContextForegroundSet(&sContext, ClrWhite);GrRectDraw(&sContext, &sRect);//显示工程名称和采集结果GrContextFontSet(&sContext, g_psFontCm12);GrStringDrawCentered(&sContext, ulADC0_v, 8,GrContextDpyWidthGet(&sContext) / 2, 10, 0);GrStringDrawCentered(&sContext, "ADC Results", -1,GrContextDpyWidthGet(&sContext) / 2,((GrContextDpyHeightGet(&sContext) - 24) / 2) + 24, 0);//更新显示 GrFlush(&sContext);} }
JunZhu Dou:
这个例程在编译的时候报错啊:
Description Resource Path Location Type#145-D a value of type "int8_t *" cannot be used to initialize an entity of type "const char *" main.c /testADC line 85 C/C++ Problem
应该是
ui8 ulADC0_v[8];和const char chars[16]={"0123456789ABCDEF"};的问题错误提示在这一行:GrStringDrawCentered(&sContext, ulADC0_v, 8,GrContextDpyWidthGet(&sContext) / 2, 10, 0);大神,咋整
xyz549040622:
回复 JunZhu Dou:
应该是数据类型的宏定义的问题,这个u8i不是系统的数据类型,是使用者自己宏定义过的。TIVA用的是uint8_t这样的数据类型定义。
xyz549040622:
回复 JunZhu Dou:
这么做也可以,不管如何能调通就好了。