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.
时间: 2024-03-30 11:35:07 浏览: 64
根据错误提示,OLED_Refresh_PageGram 函数可能未被定义或未被链接到程序中。请确保在程序中包含 OLED_Refresh_PageGram 函数的定义,并且将其编译和链接到程序中。如果你已经包含了 OLED_Refresh_PageGram 函数的定义,请检查函数名是否正确拼写。另外,也需要检查是否将该函数所在的源文件加入了编译链接过程中。
相关问题
OLED_ShowString(0,0,"Temperature:",16);这么表示有错吗?
根据您提供的代码片段,不确定您使用的是哪个开发板或库。但是根据常见的OLED显示库,`OLED_ShowString`函数通常用于在OLED屏幕上显示字符串。而根据您提供的参数 `0, 0, "Temperature:", 16`,这意味着将字符串 "Temperature:" 在 OLED 屏幕的位置 (0, 0) 处显示,字体大小为 16。如果您的代码中没有其他错误,并且您使用的库支持该函数和参数,则该表示是正确的。但是最好查阅相关文档或示例代码以确保准确性和兼容性。
void OLED_Processing(void) { unsigned char buf[32]; OLED_Clear(); switch(Mode) { case 0: sprintf(buf,"Light:%d lx",Light_Value); OLED_ShowString(0, 0, buf); sprintf(buf,"Humidity:%d %%",DHT_BUFF.Hum); OLED_ShowString(0, 16, buf); sprintf(buf,"Temp:%d C",DHT_BUFF.Temp); OLED_ShowString(0, 32, buf); // sprintf(buf,"HR:%d%%",DHT_BUFF.Hum); // OLED_ShowString(0, 48, buf); if(Auto) { OLED_ShowString(0, 48, "Mode:Auto"); } else { OLED_ShowString(0, 48, "Mode:Hand"); } break; case 1: sprintf(buf,"Ser Rh:"); OLED_ShowString(0, 0, buf); sprintf(buf,"%d %%",Water_Max); OLED_ShowString(48, 16, buf); break; case 2: sprintf(buf,"Ser Light:"); OLED_ShowString(0, 0, buf); sprintf(buf,"%d Lx",Light_Max); OLED_ShowString(48, 16, buf); break; case 3: sprintf(buf,"Ser Temp:"); OLED_ShowString(0, 0, buf); sprintf(buf,"%d C",Temp_Max); OLED_ShowString(48, 16, buf); break; }
这段代码是一个 OLED 显示屏的处理函数,根据变量 Mode 的不同值,显示不同的信息。在 Mode 为 0 时,显示光线、温度、湿度以及当前模式(手动或自动);在 Mode 为 1 时,显示设置的最大浇水湿度;在 Mode 为 2 时,显示设置的最大光照强度;在 Mode 为 3 时,显示设置的最高温度。其中 sprintf 函数是将格式化后的字符串存储到缓冲区 buf 中,然后通过 OLED_ShowString 函数将字符串显示在 OLED 屏幕上。