while(1) { u16 adcx,dacx; float q; OLED_ShowString(0,0,"DAC:",12); OLED_ShowString(0,16,"ADC:",12); OLED_ShowString(0,28,"adv:",12); OLED_ShowString(60 ,28,".",12); OLED_ShowString(96,28,"V",12); OLED_ShowString(0,40,"tms:",12); dacx=DAC_GetDataOutputValue(DAC_Channel_1); OLED_ShowNum(48,0,dacx,4,12); adcx=Get_Adc_Average(ADC_Channel_1,10); OLED_ShowNum(48,16,adcx,4,12); q=(float)adcx*(3.3/4096); //得到ADC电压值 adcx=q; OLED_ShowNum(48,28,adcx,1,12); //显示电压值整数部分 q-=adcx; q*=1000; OLED_ShowNum(72,28,q,3,12); OLED_Refresh_Gram(); LED1=!LED1; delay_us(100); }
时间: 2023-03-29 15:03:49 浏览: 152
这是一个关于嵌入式系统的代码问题,我可以回答这个问题。这段代码是一个无限循环,每次循环中获取 DAC 和 ADC 的值,并将 ADC 的电压值转换为浮点数后显示在 OLED 屏幕上。同时,还会闪烁 LED1。
相关问题
OLED_ShowString(0,0, "Temperature:%d",16); OLED_ShowString(0,16, "Light:%d",16); OLED_Refresh_Gram();//更新显示到OLED DAC_SetChannel1Data(DAC_Align_12b_R,u16DacVal); //初始值为0 ADC_SoftwareStartConvCmd(ADC1, ENABLE); u16ScanCnt = 0; while(1) { if(u16ADCOK == 0x55D5) { u16gtmp = Get_Average(u16ADCConvertedValue,16); temp=(float)u16gtmp*(3.3/4096); //获取计算后的带小数的实际电压值,比如3.1111。如3.1111,就显示3 adcx=temp; //赋值整数部分给adcx变量,因为adcx为u16整型 temp-=adcx; //把已经显示的整数部分去掉,留下小数部分,比如3.1111-3=0.1111 temp*=1000; //小数部分乘以1000,例如:0.1111就转换为111.1,相当于保留三位小数。 adcy = temp; memset(buff,0,sizeof(buff)); sprintf(buff,"ADC:%2d.%3dV",adcx,adcy); OLED_ShowString(0,48,buff,16); printf ("%s\n\n",buff); printf("\r\n\r\n");//插入换行 OLED_Refresh_PageGram(2); OLED_Refresh_PageGram(3); u16ADCOK = 0x0000; //ADC未转换 ADC_SoftwareStartConvCmd(ADC1, ENABLE); } }已正确定义并引用该函数,为什么这段代码一直显示这个错误:..\OBJ\TIMER.axf: Error: L6218E: Undefined symbol OLED_Refresh_PageGram (referred from main.o). Not enough information to list image symbols.
根据错误提示,OLED_Refresh_PageGram 函数可能未被定义或未被链接到程序中。请确保在程序中包含 OLED_Refresh_PageGram 函数的定义,并且将其编译和链接到程序中。如果你已经包含了 OLED_Refresh_PageGram 函数的定义,请检查函数名是否正确拼写。另外,也需要检查是否将该函数所在的源文件加入了编译链接过程中。
uart_init(115200); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 delay_init(); //初始化延时函数 LED_Init(); //初始化LED KEY_Init(); //按键初始化 AT24CXX_Init(); //IIC初始化 OLED_init(); Dac1_Init(); //DAC通道1初始化 Adc_Init(); //初始化ADC OLED_ShowString(0,16, "2023/06/01",16); OLED_ShowString(0,0, "21221054",16); OLED_Refresh_Gram();//更新显示到OLED u16 u16DacVal=0; u16 adcx,adcy; //adcx存放整数,adcy存放小数 float temp; //temp为DAC设置的数字量 u16ScanCnt = 0; DAC_SetChannel1Data(DAC_Align_12b_R,u16DacVal); //初始值为0 ADC_SoftwareStartConvCmd(ADC1, ENABLE); 这段代码出现了以下问题:main.c(240): error: #268: declaration may not appear after executable statement in block u16 adcx,adcy; //adcx存放整数,adcy存放小数 main.c(241): error: #268: declaration may not appear after executable statement in block float temp; //temp为DAC设置的数字量 main.c(251): error: #268: declaration may not appear after executable statement in block u8 u8key;请修改它们
这段代码的问题和前面一样,变量的声明出现在了可执行语句之后。需要将变量的声明放在可执行语句之前。
修改后的代码如下:
```
u16 u16DacVal=0;
u16 adcx,adcy; //adcx存放整数,adcy存放小数
float temp; //temp为DAC设置的数字量
u8 u8key;
uart_init(115200);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(); //初始化延时函数
LED_Init(); //初始化LED
KEY_Init(); //按键初始化
AT24CXX_Init(); //IIC初始化
OLED_init();
Dac1_Init(); //DAC通道1初始化
Adc_Init(); //初始化ADC
OLED_ShowString(0,16, "2023/06/01",16);
OLED_ShowString(0,0, "21221054",16);
OLED_Refresh_Gram();//更新显示到OLED
u16ScanCnt = 0;
DAC_SetChannel1Data(DAC_Align_12b_R,u16DacVal); //初始值为0
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
```
这样就可以正确声明变量并使用了。
阅读全文
相关推荐

















