#申请原创#
【原理图下载方法】
打开stm32cubeIDE,重建工程,选择开发板,在docs&Resouces下面可以找到开发板的原理图,版本号,可以在开发板的背面找到。
【i2c选择】
1、经查看开发板,开发板标注的SDA与SCL为D14、D15,在原理图上找到他们的定义为PB8、PB9,在stm32CubeIDE中我们选好i2c为I2C1:
我们打开RTC用于获取时间,来实时更新时钟:
并打开中断函数:
配置时钟为32M,配置RTC为外部低速时钟。
使用stm32CubeIde生成代码。
在stm32CubeIDE中,我们拷入oled与时钟的代码,以及sht30的代码,分别创建两个文件用于存放,创建目录在Drivers/BSP/目录之下:
修改i2c硬件发送一个字节与命令的函数。在stm32HAL库中,我们使用阻塞式的发送函数:HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)来实现对一组数据的发送。
同时我们把oled的显存的缓冲区修改为一次发送:
为了达到定时更新时间,我们在RTC定时器中断回调函数中,实现每1秒钟读取时间并把显示变量的时间更新到缓存中,实现实时时钟。代码如下:
同时为了流畅的显示时间的动画,我们每10秒钟采集一次数据并显示到OLED屏上面:
【实验效果】
【总结】stm32L073可以使用stm32CubeIDE进行开发,前期的外设设置全部采用图形化配置,相同的外设如OLED屏、SHT30等常用外设,可以实现少理的代码就可以实现在不同MCU之时的快速移植。这款开发板虽然只有32M的主频,但是也可以实现丝滑的时钟滚动显示效果。
附工程源码:
stm32L073_OLED.zip
(796.54 KB)
附视频效果:
|
感谢大佬分享!奖励500家园币!申请原创,文章需达到800字!欢迎补充后继续申请