Part 1:开始之前笔者的说明
这个文档打算尝试介绍从0开始构建一个简单的天气预报小时钟(基于STM32F407ZGT6,ESP8266 + SSD1309)。目前为止,这个文档描述的部分是——Non-RTOS的前后台程序框架的源码的文档,后续笔者也许会更新使用FreeRTOS重构的,交互性更好的版本,但是归根结底,大部分的原理是不会发生改动。
本项目使用的单片机型号是:STM32F407ZGT6,这个单片机隶属于ARMv7-M——Cortex-M4架构的STM32F4,使用的展示设备是SSD1309,其构建的框架是隶属项目BetterATK自己写的OLED图形驱动框架,注意,这个框架测试尚不完备,您可以直接参考接口进行自己的代码替换,我会详细的说明接口预期需要完成的功能。如果您对SSD1309或者是SSD1306(注意,两者的指令代码不一样,但是原理相同,所以构建的抽象也是类似的)以及对如何构建最简单的图形驱动尚不了解,可以移步参考笔者项目根文件夹下的Documentations/Old/set_up_oled_graphic_framework文件夹,或者参考笔者的Post的优快云教程看看笔者构建的思路。
你需要准备的外设清单
-
一块STM32系列的单片机,可以无所谓型号,笔者采用非CubeMX框架生成的HAL库作为自己的驱动基础,在此基础上是F1还是F4还是其他型号无关紧要
-
一块ESP8266,笔者购买的是正点原子的ESP8266,需要注意的是——我没办法保证所有厂家的ESP8266性质一样,笔者会说明每一个设计部分的任务是什么,对应的,如果你不清楚自己的ESP8266行为是否一致,数据手册永远是你最好的帮手
-
一块SSD1309的显示屏幕,SSD1306同样可以,如果你使用的是笔者写的驱动框架,只需要添加定义-DSSD1306后即可,笔者的OLED使用的是IIC通信协议,为了方便移植,则采用软件IIC,事实证明STM32F4的GPIO速度属实吓人,刷新的非常快
笔者将会做的事情
-
介绍,和完成ESP8266的编程说明和封装。
-
cJson的简单使用与说明
-
简单的界面状态机编程
-
简单的时钟绘制和RTC编程
准备好之后,我们就可以开始进行我们的长征了!