1.蓝桥杯嵌入式速通之工程新建&LCD工程移植(VSCode版)

前言

为了避免不必要的bug,建议大家尽可能使用最新版的CubeMx6.10(ST官网下载,网址:https://www.st.com/zh/development-tools/stm32cubemx.html)且keil5的版本尽量用5.33及以上.

一.新建工程

1.用CubeMx生成初始化代码

打开CubeMx,新建项目.
在这里插入图片描述
在搜索框中输入关键词G431GBT6,选择STM32G431RBT6.
在这里插入图片描述
选好芯片后点击开始项目.
在这里插入图片描述
进入芯片所在页面后首先点击项目管理,然后给工程起个名字,选择工程存放的位置,编译工具链选择MDK,最小版本建议选择5.32.
在这里插入图片描述
然后点击Code Generator,选择复制所需文件(加快初始化代码生成速度),为每一外设生成一对.c/.h文件(工程管理需要).
在这里插入图片描述
然后回到芯片所在页面,选择System Core.
在这里插入图片描述
由于外部时钟的精度比内部时钟的精度遥遥领先,因此我们选择使用外部时钟。
在这里插入图片描述
既然打开了外部时钟,自然要配置一下时钟设置。参考官方的配置,我们选择将外部时钟调整为24MHZ,选择器选择HSE(打开外部时钟输入通道让我们选择的时钟能作为时钟源输入)和PLL(此处相当于一个倍频器),修改HCLK为80MHZ后敲回车让CubeMx帮我们把其他参数配置好.
在这里插入图片描述
这一切配置完成以后,点击生成代码即可。
在这里插入图片描述

2.工程文件夹中的配置

这里建议提前在MDK-ARM文件夹的同一级文件目录下新建一个bsp文件夹用于存放外设驱动程序,并在其中新建Inc(用于存放外设驱动的.h文件)和Src(用于存放外设驱动的.c文件)文件夹.
在这里插入图片描述
在这里插入图片描述

3.MDK工程文件中的配置(能完全绕过keil)

在keil中的做法是点击魔术棒,选择AC6编译器,把bsp的Inc文件夹包含进工程文件中.
在这里插入图片描述
在这里插入图片描述

绕过keil的做法是:
1.找到Cubemx生成的MDK工程文件,右键用VSCode打开.
在这里插入图片描述
2.配置编译器为AC6(显著提升编译效率).
在这里插入图片描述
3.设置ROM的起始位置与尺寸.
在这里插入图片描述
选择RVCT4是因为RVCT与keil界面中的内存对应关系如下图所示.我们要配置的是IROM1(当然IROM2也没问题).
在这里插入图片描述
起始地址0x8000000是因为参考手册82页中的标注.
在这里插入图片描述
尺寸选择0x20000是因为STM32G431RBT6中的B是128KB的意思.

4.设置RAM的起始地址与尺寸.
在这里插入图片描述
起始地址设置为0x20000000的原因是:
在这里插入图片描述
尺寸设置为0x8000的原因是:0x8000对应32KB.
在这里插入图片描述
5.将bsp的Inc纳入工程的头文件搜索路径.
在这里插入图片描述
找到<\IncludePath>,在它前面敲一个回车换行,然后输入;…/bsp/Inc
其中;是与前面内容的分割符.

4.用VSCode打开工程

VSCode中需先下载好EIDE插件.
在这里插入图片描述

下载好该插件后点击插件图标,选择导入项目(注:每次用CubeMx重新生成代码后,为了使得VSCode中的工作区代码与新生成的代码同步,都要再次导入项目).
在这里插入图片描述
进入对应的文件目录中选择目标文件后点击导入.
在这里插入图片描述
为方便工程文件管理,不要选择将工作区置于MDK-ARM目录下.
在这里插入图片描述
而是选择MDK-ARM文件夹所在的目录.
在这里插入图片描述
选择完毕后点击继续即可进入工作区.

在这里插入图片描述
这个时候回到资源管理器中会发现在对应的文件目录下生成了一个VSCode的工作区文件,关闭工程之后要重新打开工程,只需双击该文件即可.
在这里插入图片描述
双击打开工作区,点击EIDE插件图标,进入项目配置界面.
首先添加文件夹,从磁盘中选择刚刚新建好的bsp文件夹.
在这里插入图片描述
然后点击芯片支持包处的➕号,从磁盘中选择选手资料包中的器件支持包安上.
在这里插入图片描述
在这里插入图片描述
然后进一步确认是否为型号STM32G431RBTX的芯片支持包
在这里插入图片描述
接着点击构建配置,选择作为AC6编译器,同时别忘了右键编译器配置,填入AC6编译器所在路径(一般位于keil5中ARM中的ARMCLANG目录下).
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后点击RAM/FLASH中的编译按键.
在这里插入图片描述
检查RAM和ROM的相关地址设置是否如下图所示.
在这里插入图片描述
接下来是烧录器配置.
首先点击安装实用工具,选择OpenOCD,点击安装,安装成功后会×会变成√.
在这里插入图片描述

选择OpenOCD.
在这里插入图片描述
芯片配置中选择修改.
在这里插入图片描述
键入g4,选择stm32g4的cfg文件.
在这里插入图片描述
然后选择修改接口配置,选择dap-v1.
在这里插入图片描述
最后检查头文件包含目录中是否含有bsp文件夹中的Inc文件夹,若没有包含则点击➕进行添加。
在这里插入图片描述
至此,项目在VSCode工作区中的配置大功告成.
大家打开main.c文件后,可以点击编译和烧录试试效果.
在这里插入图片描述

注:如果烧录失败,则关掉板子上的电源,重新打开电源后,即可烧录;烧录时出现额外擦除的警告是正常的,不必理会.

5.在VSCode中调试

1.打开插件设置,选择将Axf转为Elf.
在这里插入图片描述
2.下载ARM-GNU-Toolchain(https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads)
图省事的可以走百度网盘:
链接:https://pan.baidu.com/s/1yqQrRm5EOrgXv3xvoB-fMw
提取码:hs8i

3.VSCode中安装Cortex-Debug插件.
在这里插入图片描述
4.打开Cortex-Debug插件配置.
在这里插入图片描述
在其中找到Arm Toolchain Path,填入下载好的Arm Toolchain的bin路径.
在这里插入图片描述
注意将路径的单反斜杠\改为双反斜杆\\
在这里插入图片描述
将单片机与电脑连接,上电,然后就可以开始调试啦.
点击调试图标,选择openocd,然后在对应的代码处打上短点,点击openocd旁绿色按键,启动调试.
在这里插入图片描述
在监视器中输入我们需要观测的变量名,即可开始观测变量变化.
在这里插入图片描述

这里我们选的变量是uwTick,它是当单片机上电后一直进行累加计算的一个变量,所以我们可以通过它知道相关代码的运行时间.
具体而言,每经过1ms,它的示数便增加1.

在这里插入图片描述
由于LED_Init()还未运行时其值为0,而到了LED_disp(0x00)时其值为354,可见LED_Init()操作用时354ms.

二、LCD工程移植

在选手资料包(从官方下载)中,官方提供了LCD例程.
在这里插入图片描述
选择HAL库版本的驱动文件打开.
在这里插入图片描述
打开其中的Inc和Src文件,把Inc中的fonts.h和lcd.h文件放入bsp中的Inc中,把Src中的lcd.c文件放入bsp中的Src中.
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
然后我们在main.c中便可以使用lcd.c中定义的函数了,如下图所示.
在这里插入图片描述
当然,别忘记包含lcd.h的头文件和进行lcd初始化
在这里插入图片描述
在这里插入图片描述
然后编译下载一气呵成,试试效果吧.

通过lcd.c中的函数控制显示屏显示

1.让屏幕处于就绪状态.

void LCD_Init(void);

2.刷新屏幕以对应颜色.

void LCD_Clear(u16 Color);

3.刷新某行以对应颜色.

void LCD_ClearLine(u8 Line);

4.刷新字符(串)背景色.

void LCD_SetBackColor(vu16 Color);

5.刷新字符(串)前景色.

void LCD_SetTextColor(vu16 Color);

6.以对应字符串刷新一整行.

void LCD_DisplayStringLine(u8 Line, u8 *ptr);

7.以对应字符刷新某行局部.

void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值