if(u16ADCOK == 0x55D5) { u16gtmp = Get_Average(u16ADCConvertedValue,16); temp=(float)u16gtmp*(3.3/4096); adcx=temp; temp-=adcx; temp*=1000; adcy = temp; memset(buff,0,sizeof(buff)); sprintf(buff,"ADC:%2d.%3dV",adcx,adcy); OLED_ShowString(0,32,buff,16); printf ("%s\n\n",buff); printf("\r\n\r\n"); OLED_Refresh_PageGram(2); OLED_Refresh_PageGram(3); u16ADCOK = 0x0000; ADC_SoftwareStartConvCmd(ADC1, ENABLE);}详细解释每句代码的意思
时间: 2024-03-10 20:46:32 浏览: 64
NR5G网络拒绝码-5gmm_cause = 22 (0x16) (Congestion).docx
这段代码是用来检测ADC是否完成转换,并将转换结果显示在OLED屏幕上的。下面是每句代码的意思:
```
if(u16ADCOK == 0x55D5) {
```
检测ADC是否完成转换,如果完成则执行以下操作。
```
u16gtmp = Get_Average(u16ADCConvertedValue,16);
```
调用函数Get_Average计算出ADC转换结果的平均值,并将结果保存在变量u16gtmp中。
```
temp=(float)u16gtmp*(3.3/4096);
```
将平均值转换为实际电压值,并将结果保存在变量temp中。
```
adcx=temp;
```
将整数部分的电压值保存在变量adcx中。
```
temp-=adcx;
temp*=1000;
adcy = temp;
```
将小数部分的电压值保存在变量adcy中。
```
memset(buff,0,sizeof(buff));
sprintf(buff,"ADC:%2d.%3dV",adcx,adcy);
```
将电压值格式化为字符串,并保存在字符数组buff中。
```
OLED_ShowString(0,32,buff,16);
```
将电压值显示在OLED屏幕上。
```
printf ("%s\n\n",buff);
printf("\r\n\r\n");
```
通过printf函数将电压值输出到串口。
```
OLED_Refresh_PageGram(2);
OLED_Refresh_PageGram(3);
```
刷新OLED屏幕。
```
u16ADCOK = 0x0000;
```
将ADC完成转换的标志位清零。
```
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
```
重新启动ADC的转换。
阅读全文