打印
[应用相关]

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

[复制链接]
楼主: 远芳侵古道
手机看帖
扫描二维码
随时随地手机跟帖
41
远芳侵古道|  楼主 | 2022-7-27 19:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
最后,就是串口参数的配置了,首先开启串口功能引脚的时钟和串口DMA时钟 ,接着,通过引用结构体UART_HandleTypeDef中的成员,达到配置串口参数的目的,配置完成后,初始化UART及初始化中断

使用特权

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

使用特权

评论回复
43
远芳侵古道|  楼主 | 2022-7-27 19:31 | 只看该作者
这里需要注意的是,在使用定时器中断、串口中断、DMA中断等中断的时候,我们需要在stm32f1xx_it.c文件中添加对应的中断处理程序:

使用特权

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

使用特权

评论回复
45
远芳侵古道|  楼主 | 2022-7-27 19:34 | 只看该作者
接下来就是main.c里面的代码了,这部分的代码就是整个项目的核心。首先骂我们来看下系统时钟配置:

使用特权

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

使用特权

评论回复
47
远芳侵古道|  楼主 | 2022-7-27 19:36 | 只看该作者
这里其实也没什么好说的,基本上每个项目中都会用到,而且基本不需要怎么修改,接下来我们来看下跟按键和指示灯相关的这个函数吧,这个也是笔者自己改写的,虽然算不上有多好,但是简单的项目中,还是可以作为一个参考吧:

使用特权

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

使用特权

评论回复
49
远芳侵古道|  楼主 | 2022-7-27 19:38 | 只看该作者
在这个函数中,主要实现了以下几个功能:

 实时获取每个按键的状态,并在该按键按下后,执行相应的动作,同时,该按键的按键次数加“1”;
 按键按下后,必须松开,才能对下一次按键按下状态进行检测,而这一过程中,通过一个标志位来实现,使得程序不必一直在死等按键松开,不影响其他程序的正常运行;
 实时获取按键和指示灯的状态并将该状态取反,用于发送到迪文DGUS屏上显示状态;

使用特权

评论回复
50
远芳侵古道|  楼主 | 2022-7-27 19:41 | 只看该作者
接下来,我们来看下这个数据填充的函数,这个也是自定义的一个函数,用来实时刷新我们要发送的数据:

使用特权

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

使用特权

评论回复
52
远芳侵古道|  楼主 | 2022-7-27 19:44 | 只看该作者
然后就是另外一个自定义的函数,用来解析串口收到的指令,并且根据接收到的指令,完成相应的动作:

使用特权

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

使用特权

评论回复
54
远芳侵古道|  楼主 | 2022-7-27 19:46 | 只看该作者
接下来就是一个串口接收完成的回调函数,笔者在这里主要用来做帧校验和接收数据的缓存:

使用特权

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

使用特权

评论回复
56
远芳侵古道|  楼主 | 2022-7-27 19:52 | 只看该作者
最后,就是一个定时器的回调函数,笔者在这个函数中设置了一个变量用来定时:

使用特权

评论回复
57
远芳侵古道|  楼主 | 2022-7-27 19:55 | 只看该作者
在所有准备工作就绪后,我们只需要在主函数中调用对应的函数,即可实现我们需要的功能了:

使用特权

评论回复
58
远芳侵古道|  楼主 | 2022-7-27 19:56 | 只看该作者
至此,整个项目的源码部分就完成了,接下来我们只需要将代码下载到开发板中,然后将开发板的串口2跟迪文的DGUS屏连起来,接可以看到效果了:

使用特权

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

使用特权

评论回复
60
远芳侵古道|  楼主 | 2022-7-27 20:06 | 只看该作者
本例程由『芯知识学堂』SingleYork原创,仅供学习交流使用,转载请注明出处!项目源码下载:STM32与迪文屏通信例程

使用特权

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

本版积分规则