欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 蓝桥杯物联网竞赛_STM32L071_20_用printf将数据显示在OLED上

蓝桥杯物联网竞赛_STM32L071_20_用printf将数据显示在OLED上

2024/10/24 22:19:29 来源:https://blog.csdn.net/xyint/article/details/139455176  浏览:    关键词:蓝桥杯物联网竞赛_STM32L071_20_用printf将数据显示在OLED上

需求:

第十五届国赛确实有点变态,显示部分大概有6个所以需要大量将sprintf与OLED_ShowString配合使用才能显示相应格式的数据,所以我在想能不能简化一下这一部分直接用写好的printf语句将数据显示到显示屏上呢?

代码:

#include <stdarg.h>
void myprintf(unsigned char address, const char* format, ...) {char ARRAY[40];// 使用va_list和va_start来处理可变参数va_list args;va_start(args, format);// 使用vsprintf将可变参数列表格式化的字符串存储到ARRAY中vsprintf(ARRAY, format, args);// 清理可变参数列表va_end(args);// 假设OLED_ShowString函数可以在OLED屏幕上显示字符串OLED_ShowString(address, (unsigned char*)ARRAY);
}

思路是将需要传入的格式和数据进行整合再用OLED_ShowString函数直接输出,这样只需调用myprintf函数即可,其用法和printf完全一致,效果也一样,只不过多了一个第一个参数address,其中address设置为0将数据显示到OLED的第一行设置为2将数据显示到第2行

...意思是可变参数,就是可以输入多个参数

效果:

在这里插入图片描述
在这里插入图片描述

和printf函数的功能是一样的,面对较复杂的工程重构一下OLED_ShowString成myprintf还是很高效的

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com