前言和介绍
第一篇博文。看了国内很多硬件博客,对半路出家的人来说学学习成本高,不否认从底层学起能够掌握更深层次内容,但效率和耐心也是影响项目进度的因素。所以就暴力入门,复制黏贴,图多费话少。第一步不管io口中断,也不点led灯,也没有ADC。先把屏幕点了再说,这样的好处在于之后学习不再枯燥。坏处在于不够底层了,然而对我这种人来说,常规方式的流程就是“入门到放弃”。
需要软件
1.keil mdk 5.开发环境,用来写代码,编译,下载。(网上下载安装的安装包和教程都很多)
2.cubeMX 用来自动生成代码,生成的代码配置了针脚的方式,这和之前的开发方式不一样,以前用
需要原料
oled12864一块ssd1306 iic接口的。stm32 c8t6 最小系统板一块。
开发环境,喜闻乐见的keil5 MDK+HAL库。还配合了cube mx。
说以下几点。
1.u8g库以前是arduino用的,国外网友一直在不断的更新,如今兼容了很多的芯片和屏幕,ssd1306就是其中之一。
2.这个移植不是我做的,是一个俄罗斯朋友做的,并且共享到了github上。链接如下:https://github.com/SL-RU/stm32libs 点击clone or download下载zip文件。有条件的同学可以点击星星支持下毛子。
3.u8g图形库用起来很方便,比商家给的那个例程不知道高到那里去了,具体这么几个方面。
(1)可以画点
(2)可以画线,这部分意味着可以自己自制示波器了。
(3)可以画三角,画圆。
4.u8g库是开源的库,兼容很多种屏幕,比如st7735 1.8tft。这对很多小型的穿戴式设备很受用。希望有能力的同学可以帮助移植这些库。共享精神!
画圆
画线
在stm32上使用这个库时候,不能像arduino一样直接输出变量,只能输出字符串意味着:一个变化的数要用特别的方式输出。
办法就是用sprintf函数。
如下:可以将double型的变量Z直接输出。
void OLED_showdouble(uint16_t x, uint16_t y,double z)
{
char str[20];
sprintf(str,"%6.3f",z);
SSD1306_GotoXY(1,1);
SSD1306_Puts(str, &Font_11x18, 1);
}
输出成功。
这一步意味着有了显示,可以输出变量。
上图是增加了一个血氧饱和度哦采集模块,可以示波。
有人回复继续更新没人回复就看心情