打印
[应用相关]

基于HAL库的《STM32与迪文DGUS屏通信》项目实战

[复制链接]
2117|98
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大家好,我是『芯知识学堂』的SingleYork!前面一直都有在写51单片机跟迪文DGUS屏的串口通信例程,然后就有好多小伙伴们加入到了我的Q群里来咨询STM32与迪文DGUS屏的例程,由于时间关系,笔者一直没能写这方面的例程,正好最近做项目要用到STM32,因而在验证项目功能的同时,顺便写了一下STM32与迪文DGUS屏通信的这个例程。

要说STM32的串口通信,相信很多人都比我熟悉的多了,笔者纯粹就是个菜鸟,在看了硬石团队的一些视频之后,对STM32有了大致的了解,然后,尝试移植硬石的例程到自己的项目中,庆幸的是,硬石团队的例程写的真心不错,个人比较喜欢他们的代码风格,而且还是基于HAL库,移植起来也是非常的方便。

使用特权

评论回复
评论
远芳侵古道 2022-7-27 18:16 回复TA
———————————————— 版权声明:本文为CSDN博主「SingleYork」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u012535488/article/details/107430341 
沙发
玛尼玛尼哄| | 2022-7-27 18:04 | 只看该作者
望楼主多分享,大家一起学习

使用特权

评论回复
板凳
远芳侵古道|  楼主 | 2022-7-27 18:16 | 只看该作者

使用特权

评论回复
地板
远芳侵古道|  楼主 | 2022-7-27 18:21 | 只看该作者
从上面的图片中,我们大致可以看到该例程使用的一些硬件资源:

 LED的控制
 按键检测
 串口通信
 基本定时器

使用特权

评论回复
5
远芳侵古道|  楼主 | 2022-7-27 18:21 | 只看该作者
该例程的硬件环境,是原子的《战舰V3开发板》,这款开发板还是笔者好2016年用《电子芯吧客(原:云汉电子社区)》论坛的年终奖兑换的,当然咯,屏幕和别的模块,是笔者后面自己买的:

使用特权

评论回复
6
远芳侵古道|  楼主 | 2022-7-27 18:22 | 只看该作者
虽然硬件采用的是原子的战舰V3,但是笔者还是不太习惯用STM32的标准库来做项目,毕竟笔者对STM32的标准库是不怎么懂的,由于笔者之前使用了硬石的开发板,然后对HAL有了一定的了解,所以在该例程中使用了目前比较流行的HAL库来进行开发,然后,一些配置部分,是从《硬石F103开发板》上 移植过来的。

使用特权

评论回复
7
远芳侵古道|  楼主 | 2022-7-27 18:24 | 只看该作者
那么,接下来,我们就来详细介绍一下代码部分吧。先来看个最简单的“bsp_led.h”中的代码吧:

使用特权

评论回复
8
远芳侵古道|  楼主 | 2022-7-27 18:25 | 只看该作者

使用特权

评论回复
9
远芳侵古道|  楼主 | 2022-7-27 18:26 | 只看该作者
首先,定义的是一个枚举类型LEDState_TypeDef,用来表示LED的三种状态,即:亮、灭和状态反转,然后就是几个宏定义用来检查输入参数的合法性。后面部分就是定义每个LED对于的GPIO口。笔者比较菜,也是在接触了硬石开发板之后,才学会了这种定义的方法,这样做的好处,不仅是为了让程序布局美观,更重要的是可以方便移植,当做别的项目的时候,只需要将定义的GPIO及其对应的时钟替换成项目中所使用的就可以了。

使用特权

评论回复
10
远芳侵古道|  楼主 | 2022-7-27 18:27 | 只看该作者
接下来就是”bsp_led.c”里面的代码了:

使用特权

评论回复
11
远芳侵古道|  楼主 | 2022-7-27 18:28 | 只看该作者

使用特权

评论回复
12
远芳侵古道|  楼主 | 2022-7-27 18:29 | 只看该作者
这里面主要就是两个函数,一个就是上图中的这个GPIO初始化函数,这个函数主要就是对GPIO口的时钟、模式、速度等参数的配置。另外一个函数,就是用来控制输出LED的状态,即:亮、灭及状态反转,如下图所示:

使用特权

评论回复
13
远芳侵古道|  楼主 | 2022-7-27 18:29 | 只看该作者

使用特权

评论回复
14
远芳侵古道|  楼主 | 2022-7-27 18:30 | 只看该作者
接下来,我们来看另一个头文件bsp_key.h,这个文件跟之前的bsp_led.h的功能类似,这里也主要是用来定义KEY0、KEY1、KEY2三个按键具体使用的哪个GPIO口,还有其他的一些定义,功能比较简单,笔者就不多说了,一看代码就很清楚了:

使用特权

评论回复
15
远芳侵古道|  楼主 | 2022-7-27 18:31 | 只看该作者

使用特权

评论回复
16
远芳侵古道|  楼主 | 2022-7-27 18:33 | 只看该作者
接下来就是bsp_key.c文件了,这里主要也是两个功能,一个是跟按键相关的GPIO口的初始化函数:

使用特权

评论回复
17
远芳侵古道|  楼主 | 2022-7-27 18:36 | 只看该作者

使用特权

评论回复
18
远芳侵古道|  楼主 | 2022-7-27 18:41 | 只看该作者
另一个则是按键状态的读取函数:

使用特权

评论回复
19
远芳侵古道|  楼主 | 2022-7-27 18:41 | 只看该作者

使用特权

评论回复
20
远芳侵古道|  楼主 | 2022-7-27 18:42 | 只看该作者
关于这个按键读取的函数,笔者在这里做了修改,而并非直接使用硬石团队提供的c文件,硬石团队提供的例程源码如下:

使用特权

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

本版积分规则

78

主题

816

帖子

0

粉丝