& nbsp; & nbsp;在过去的几天中,已有来自读者的反馈。
在此平台上发布的文章仅讨论一些基本知识,而没有讨论特定的应用程序。
根据您的反馈,我也提出了相应的想法,因此我们仍然需要理论。
最好结合实践来写。
在适当的时候,特定的应用程序将被编译成一本全新的书。
& nbsp; & nbsp;前面编写的测试用例似乎有点笼统,阅读完后您可能不知道在哪里使用它,让我们看一下特定的应用案例!以下程序在Binghuo STM32F103的霸道开发板上运行,请在经过个人修改后参考官方提供的官方程序演示。
& nbsp;使用DS18B20温度传感器,设置4个窗口值并找到最大值。
由于温度为小数,因此类型应为浮点数据:#include“ stm32f10x.h” #include“ bsp_usart.h” #include“ bsp_SysTick.h”; #include“ bsp_ds18b20.h” #定义NR(x)(sizeof(x)/ sizeof(x [0]))static float find_buffer_max(float buffer_value_max,u32 size,float * buffer); int main(void){int i = 0;浮动temp_max; //设置温度保存缓冲区有4个窗口值,可以更改这些值。
float temp_buffer [4]; uint8_t uc,ucDs18b20Id [8]; SysTick_Init(); USART_Config(); while(DS18B20_Init())printf(“ 没有ds18b20存在 ”); DS18B20_ReadId(ucDs18b20Id& nbsp;); & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;对于(uc = 0; uc& lt; 8; uc ++)  & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; printf(“%.2x”,ucDs18b20Id [uc]); while(1){//当计数等于测试窗口值时,从4个窗口值中找到最高温度。
if(i == NR(temp_buffer)){temp_max = find_buffer_max(0.0,NR(temp_buffer),temp_buffer); printf“温度的最大值是:%.1f ",temp_max); //清除计数器i = 0;} //将当前温度保存到窗口值数组temp_buffer [i] = DS18B20_GetTemp_MatchRom(ucDs18b20Id);  Delay_ms(1000); printf(“当前温度值为:%。
1f ",temp_buffer [i]); i ++;}& nbsp; & nbsp; & nbsp; & nbsp; & nbsp;返回0;}& nbsp; //找到最大值静态浮点数find_buffer_max(float buffer_value_max,u32 size,float * buffer){u8 count = 0;  float max = buffer_value_max; for(count = 0; count& lt; size; count ++){if(buffer [count]& gt; max)max = buffer [count];} return max; }运行结果:& nbsp ; & nbsp;根据实际工程应用,我们可能需要长时间使用这种方法来观察传感器的数据。
& nbsp; & nbsp;另一个例子,例如光强度,发热量,声音模拟值等值也可以以此方式使用。