【STM32CubeMX】战舰V3&4‘3TFTLCD

本文详细描述了如何将正点原子战舰V3的TFTLCD库从正点原子提供的非STM32CubeMX案例转换到使用Keil5和STM32CubeMX生成的HAL库,包括主频配置、GPIO和FSMC设置,以及必要的变量类型和函数调整。
摘要由CSDN通过智能技术生成

前言

  STM32CubeMX用起来太舒服了,效率嘎嘎高,在学习正点原子的战舰V3开发板,但是他们的代码库都不是用Mx生成的,简单些的案例练习倒是无所谓,但是像用到TFTLCD这种复杂点的案例,在配置案例时还是想移到Mx上编辑,所以就有将正点原子的lcd库,修改到可以在Keil+Mx上使用的了。

环境

模块:正点原子战舰V3,自带的4‘3TFTLCD电容屏

开发板:正点原子战舰V3(STM32F103ZET6)

案例的代码环境:Keil5+STM32CubeMX生成的HAL库

步骤

文章末尾会把,配置好的STM32CubeMX工程模板,和可运行案例一并分享出来的,当然了,下述也有图文步骤。

STM32CubeMX配置

  • 主频:配置为72M

    如图在SYS中,High Speed Clock (HSE)配置为 Crystal/Ceramic Resonator,选择外部高速晶振。然后点击箭头指向处,进行下一张图的可视化配置。

    在这里插入图片描述

    在这里插入图片描述

  • GPIO配置:在4‘3TFTLCD模块中还有需要GPIO来输出电平控制背光。

    选择PB0引脚,设置成输出模式。然后命名为LCD_BL,这样到时候生成文件时,这个名称会有宏定义,控制该引脚,当然也不是必需要命名的,只是更加规范些。

    在这里插入图片描述

  • FSMC配置

    我对FSMC也是了解一点,配置参数也是参考正点原子和网上的。大家感兴趣,还想提刷新处理的话,也许可以学学看怎么改哈。

    在这里插入图片描述

  • 输出文件

    完成下述简单的配置后就能输出文件,到keil中配置了。

    在这里插入图片描述

    在这里插入图片描述

Keil5编写

  • 复制正点原子的TFTLCD案例工程中的lcd库,到刚才创建的工程中。然后添加编译文件编译路径

    在这里插入图片描述

  • lcd.h中的修改

    1. 删除#include "sys.h",添加#include "main.h"

    2. 变量类型的修改

      因为该lcd库中定义的变量类型为u8,u16,u32,vu8,vu16,vu32,在HAL中没有,可以有以下两种方法修改:

      1. 使用Ctrl+F中的替换,进行全局替换。

      2. 使用typedef来定义类型

        typedef uint8_t u8;
        typedef uint16_t u16;
        typedef uint32_t u32;
        typedef volatile u8 vu8;
        typedef volatile u16 vu16;
        typedef volatile u32 vu32;
        
    3. 背光引脚的控制

      大概在55行上下的位置,下面的第一句是原来的。第一句是添加新的。

      //#define	LCD_LED PBout(0)    //LCD背光 PB0
      #define	LCD_LED(value) HAL_GPIO_WritePin(LCD_BL_GPIO_Port, LCD_BL_Pin, (GPIO_PinState)value);
      

      对应的lcd.c文件中(大概在2087行,建议用搜索去翻),背光的控制函数也应该改为如下:

      //LCD_LED = 1;                //点亮背光
      LCD_LED(1);
      
    4. 注释掉SRAM句柄,大概在33行

      //extern SRAM_HandleTypeDef TFTSRAM_Handler;    //SRAM句柄(用于控制LCD)
      
  • lcd.c中的修改

    1. 删除或注释,如下用不到没有的库文件,和打印函数。

        //#include "usart.h"	 
        //#include "delay.h"
      

      在这里插入图片描述

    2. 导入或替换延时函数

      替换。将原本毫秒级的delay_ms函数全部替换为HAL库有的HAL_Delay函数,然后是微秒级的,因为HAL中没有,所以暂时先重写函数,统一替换成1ms的,后续大家要是引入了微秒级延时也好替换。

      // 重写微妙级函数
      void delay_us(uint32_t nus)
      {
      	HAL_Delay(1);
      }
      
  • main.c

    主函数中就是正点原子案例中的演示演示函数了,就不在介绍了

    在这里插入图片描述

现象

案例正常运行

在这里插入图片描述

工程

我在工程中用的是DAP仿真器,可能大家用的是JLINK之类的,记得在工程中切换。

链接包含资料:Keil5工程代码*1,STM32CubeMX工程模板*1

链接:https://pan.baidu.com/s/1jMgEB5p37iXZWGpbcc8wiw   提取码:016u

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值