【蓝桥杯嵌入式】从头开始建一个完整工程

系列文章目录

留空



前言

自用


一、设置CubeMX

首先,打开CubeMX
在这里插入图片描述
然后,搜索我们使用的单片机STM32G431RBT6,会显示两个,选第一个并双击就好啦!
在这里插入图片描述

下面,就是设置部分了。

(1)设置RCCSYS

  • RCC — 在High Speed Clock(HSE)选项中 — 选择Crystal/Ceramic Resonator。启用外部高速时钟源。

在这里插入图片描述

  • SYSDebug 选择使用的调试接口 — Serial Wire

在这里插入图片描述

(2)"Clock Configuration"设置时钟

  • 我们外部晶振为24 MHz
  • 使用外部晶振HSE,HSE的输出经过PLLCLK(相位锁定环)进行频率倍增。
  • 系统总线时钟,设置为80 MHz。

在这里插入图片描述

(3)"Project Settings"项目管理器

  • Project Name这里输入项目的名字,为8th。
  • Project Location设置项目文件的存储位置,为E:\Study\STM32\LANQIAO。
  • Toolchain / IDE选择目标工具链或集成开发环境(IDE),MDK-ARM
  • Min Version所用工具链的版本,V5

在这里插入图片描述

  • 代码生成设置 (Code Generator) — 勾选Generate peripheral initialization as a pair of .c/.h files per peripheral。选择此选项将为每个外设生成一对.c和.h文件。
    在这里插入图片描述
    以上,所有的基础设置完成。

(4)赛点包中LCD的CubeMX设置

我个人习惯直接在CubeMX设置LCD的引脚,如果直接复制赛点包中main.c中LCD初始化代码,下面的就不需要设置了。
(1)可以对照着原理图,进行设置。
在这里插入图片描述
(2)也可以对着赛点包中main.c中LCD初始化代码,进行设置。

/**
 * @brief GPIO Initialization Function
 * @param None
 * @retval None
  */
static void MX_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    /* GPIO Ports Clock Enable */
    __HAL_RCC_GPIOC_CLK_ENABLE();
    __HAL_RCC_GPIOF_CLK_ENABLE();
    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();

    /*Configure GPIO pin Output Level */
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15 | GPIO_PIN_0
                      | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4
                      | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8
                      | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12, GPIO_PIN_RESET);

    /*Configure GPIO pin Output Level */
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);

    /*Configure GPIO pin Output Level */
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_9, GPIO_PIN_RESET);

    /*Configure GPIO pins : PC13 PC14 PC15 PC0
                             PC1 PC2 PC3 PC4
                             PC5 PC6 PC7 PC8
                             PC9 PC10 PC11 PC12 */
    GPIO_InitStruct.Pin = GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15 | GPIO_PIN_0
                          | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4
                          | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8
                          | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

    /*Configure GPIO pin : PA8 */
    GPIO_InitStruct.Pin = GPIO_PIN_8;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    /*Configure GPIO pins : PB5 PB8 PB9 */
    GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}

我推荐第二种,更方便!

  • 设置成GPIO_Output模式:PC0到PC15、PA8、PB5、PB8、PB9。
    在这里插入图片描述
  • 点击GPIO ,检查一下,其他默认;
    在这里插入图片描述
    最后的最后,点击 Generate Code生成代码,再点击Open Project打开工程。
    在这里插入图片描述

二、复制赛点的"LCD"文件到自己工程中

首先,打开我们刚刚生成代码的文件夹
在这里插入图片描述然后,打开赛点包的LCD_DriverMDK5_LCD_HAL

  • lnc中的fonts.hlcd.h,复制到我们自己工程文件夹的BSP中。

在这里插入图片描述

  • src中的lcd.c,复制到我们自己工程文件夹的BSP中。

在这里插入图片描述
完成!
在这里插入图片描述

三、Keil5

刚打开时,我们的工程是这样的。
在这里插入图片描述
(1)点击小魔术棒

  • 点击Target — 勾选Usb MircorLB
    在这里插入图片描述

  • 点击C/C++Include Path...
    在这里插入图片描述
    然后,把我们的BSP文件添加进去,完成后点击OK
    在这里插入图片描述

  • 点击DebugCMSIS-DAP DebuggerSettingFlash Download — 勾选Reset and Run ,然后确定。
    在这里插入图片描述

(2)把BSP添加到工程

  • 点击红绿白小块,添加文件

在这里插入图片描述
BSPlcd.cfonts.hlcd.h添加。
在这里插入图片描述
(3)LCD显示代码

把赛点包中main.c中主函数的显示的示例代码复制到自己工程相同的位置。

    MX_GPIO_Init();
	
    /* USER CODE BEGIN 2 */
    LCD_Init();
	HAL_Delay(100);
	/* USER CODE END 2 */

    /* Infinite loop */
    /* USER CODE BEGIN WHILE */
    LCD_SetBackColor(Black);
    LCD_SetTextColor(White);
	LCD_Clear(Black);
	HAL_Delay(100);

    LCD_DisplayStringLine(Line4, (unsigned char *)"    Hello,world.   ");
    HAL_Delay(1000);

    while (1)

记得加上头文件

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "lcd.h"
/* USER CODE END Includes */

上电下载测试!然后就完成啦!!终于!!


步骤总结

一、CubeMX设置

  1. 选择单片机STM32G431RBT6
  2. 配置时钟
    • RCCHSE选择Crystal/Ceramic Resonator
    • SYS:调试接口选Serial Wire
    • "Clock Configuration"设置时钟,外部晶振24 MHz,系统时钟80 MHz
  3. 项目管理
    • 设置项目名、路径。工具链选MDK-ARM V5
    • 勾选Generate peripheral initialization as a pair of .c/.h files
  4. LCD引脚配置
    • 对照原理图或赛点包代码,设置为GPIO_Output
  5. 生成代码:点击Generate Code,然后Open Project

二、复制LCD文件

  1. 从赛点包复制fonts.hlcd.hlcd.c到自己工程的BSP文件夹。

三、Keil5设置

  1. 魔术棒设置
    • Target:勾选Usb MicroLB
    • C/C++:添加BSPInclude Path
    • Debug:选择CMSIS-DAP Debugger,勾选Reset and Run
  2. 添加文件:将BSP中的lcd.cfonts.hlcd.h添加到工程。
  3. LCD显示代码
    • 复制赛点包main.c中的LCD显示的示例代码。
    • 添加头文件#include "lcd.h"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值