打印
[STM32L0]

STM32L073实现丝滑的滚时钟与SHT30温湿度计

[复制链接]
20228|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lulugl|  楼主 | 2023-12-13 20:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#申请原创#
【原理图下载方法】
打开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)
附视频效果:


使用特权

评论回复
评论
21小跑堂 2023-12-21 15:23 回复TA
感谢大佬分享!奖励500家园币!申请原创,文章需达到800字!欢迎补充后继续申请 
沙发
鲜衣怒马| | 2024-1-10 17:04 | 只看该作者
动画效果不错,学习了

使用特权

评论回复
板凳
wangwu1976@| | 2024-1-13 10:58 | 只看该作者
说实话,做得真不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

678

帖子

6

粉丝