stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)

一节入门了stm32cubeMX SPI 0.96 OLED的配置,这节我们来学习下如何配置freertos,并驱动大彩串口屏。
本程序编写基于秉火霸道STM32F103ZET6运行环境。
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第1张图片

一、配置时钟

这里默认配置成64MHz
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第2张图片

二、配置Freertos系统和一路调试串口(USART2)

stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第3张图片
接下来配置freertos的参数,基本上不用动,满足我当前使用即可,后续需要用再修改.stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第4张图片stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第5张图片
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第6张图片

三、配置串口调试打印(USART2)

前面已经介绍过串口怎么配置了,这里就不再继续说明。
详细请看:https://blog.csdn.net/morixinguan/article/details/94358706 这篇文章。
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第7张图片

四、准备生成工程

stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第8张图片
当准备生成工程的时候出现以下警告:
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第9张图片
其意思就是,当使用了FreeRtos的时候,强烈建议HAL库使用除了Systick以外的时钟源。也就是说当不使用FreeRtos的时候,HAL使用的是systick作为时钟源,现在使用了rtos,不建议hal库和rtos一起使用systick作为时钟源。
参考:https://blog.csdn.net/callmesumo/article/details/89403787
于是我们修改下,解决这个警告:
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第10张图片
接下来就可以生成工程了,出现以下则说明成功,直接点开Open Project即可。
在这里插入图片描述

五、在工程源码中添加重定向打印函数

5.1 添加头文件

stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第11张图片

5.2 添加重定向函数

stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第12张图片

5.3 测试freertos是否能正常在默认任务里打印hello world

stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第13张图片

六、运行结果

stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第14张图片
正常打印,Freertos和调试串口现已配置成功。

接下里移植大彩串口屏驱动框架,在移植之前,我们还是在cube上把串口屏的参数配置好。

一、打开stm32CubeMx,配置串口4用于串口屏

stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第15张图片
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第16张图片
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第17张图片

二、移植驱动框架、添加发送指令到任务的逻辑

stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第18张图片
这是大彩科技提供的串口屏驱动指令和指令处理框架,我们将其添加到自己的项目中。
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第19张图片
添加对应的文件到User目录下
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第20张图片
打开Cube,创建一个长度为100的消息队列
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第21张图片
在main.c中创建LCD任务:
在这里插入图片描述
在程序中,在串口驱动函数中添加一个消息队列发送函数:
首先外部引用一个句柄。
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第22张图片
接下来在queue_find_cmd函数中添加一个消息队列发送函数。
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第23张图片

三、使能LCD串口接收,在LCD任务中添加获取消息队列的逻辑

stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第24张图片
如果不添加这一句代码,串口是不开启接收的,接下来我们还在在串口的中断服务函数里添加入队逻辑。
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第25张图片
接下来在main.c的lcd task中添加获取指令的逻辑:
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第26张图片
然后在tft_cmd_process.c中添加log打印:
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第27张图片

四、运行结果

当触摸以下屏幕时,串口会收到以下数据:
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第28张图片
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第29张图片
我们来看看接收到的这个指令代表什么意思:
stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)_第30张图片
完!
工程源码和LCD工程地址
链接:https://pan.baidu.com/s/1zluJQF89dg72g0qYWlBDrg
提取码:9wv3
复制这段内容后打开百度网盘手机App,操作更方便哦
LCD资源详细请看:
http://www.gz-dc.com/

你可能感兴趣的:(stm32cubeMX)