创建工程+点灯【蓝桥杯&嵌入式设计与开发】

发布时间:2024年01月11日

梦开始的第一步~学会记录【适用于小白系列】

首先了解到蓝桥杯嵌入式开发所使用的板子为STM32G431RB为主控芯片的开发平台。这次就先教大家建立工程与点灯。

一.用Cubemax进行配置搭建工程

点击file中的New Project创建新的工程,在Part? Number一栏中选择STM32G431RB系列,芯片型号选择蓝色那一行LQFP64,引脚外置的芯片,最后点击右上角Start Project.

二.配置RCC时钟与分配GPIO口

2.1配置RCC时钟

在System core 一栏点击RCC,将外部高频时钟(HSE)下拉选中crytal/Ceramic Resonator。

然后换到Clock Configuration一栏,将外部输入的时钟改为24MHZ【由于给出的开发板中,提供的外部晶振为24MHZ】,并且将HSI换到HSE,再将第二个换到PLLCLK,由于例程代码里面输入的时钟都为80MHZ,所以暂且输入为80MHZ。修改完毕之后,按回车键。

2.2创建工程文件及其路径选择其编译器

然后进入下一步进入到project manager,对文件的名字与路径进行填写和更改,在Toolchaim中下拉选中MDK-ARM。

在左边第二个Code Generator中将下面三个勾选上

回到Print&Configuration,对我们的SYS文件进行配置,右边下拉选中Serial wire.

2.3分配GPIO口

在System core一栏中选择GPIO,比如我们要将LED1进行点亮,则我们需要分配LED1的引脚,看芯片的原理图可以知道GPIOC_pin_8则为第一个LED的引脚,那么左键选择芯片引脚选择GPIO—_OUTPUT,可以知道CT117E—M4在LED处有一块锁存器,需要赋予芯片使能引脚为有效电平才可以使其工作将LED点亮。所以控制LED的芯片使能引脚在原理图上为GPIOD_pin_2,也向以上操作给其配置引脚。

最后点击右上角GENERATE CODE,便可以生成配置文件。

三.在keil软件进行工程的创建

下一步在我们刚刚创建的工程文件夹添加BSP文件夹,用于放置我们所写的外设输出程序。

在MDK-ARM中,点击绿色的dream1,即可以在keil里面编写我们的代码。

点击魔法棒

在Debug一栏中下拉选择CMSIS DAP-Debugger,再点击Settings,将Reset and Run勾选上

四.LED点灯程序

4.1添加LED源文件以及头文件进行模块化编程

左上角添加空白新文件,再CTrl+s进行保存至BSP文件夹,取名为LED.c,再次点击左上角新建文件,取名为LED.h保存至BSP文件夹,保存完之后要在keil文件夹内进行路径的添加不然,在编译时会进行报错,会找不到文件路径。

点击魔法棒之后,点击C/C++一栏,点击下面Include PAths,进行路径的添加,路径添加为BSP文件的路径。

4.2模块化编程LED点灯程序

首先在LED.h文件里面进行定义头文件

  1. #ifndef?LED_H_
    #define?LED_H_
    #include?"main.h"
    void LED_bing(void); //为我们定义的LED闪烁的函数
    #endif

?接着在LED.c文件里面编写我们的LED闪烁的函数:我们可知在原理图里LED高电平处于熄灭的状态,所以要使LED亮起来必须是低电平并且给使能端口赋予有效电平,所以给使能端口GPIOD2有效电平。

  1. #include?"LED.h"
    void?LED_bing()
    {
    ?HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);//给与使能端口有效电平
    ?HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,GPIO_PIN_SET);//熄灭
    ?HAL_Delay(500);//延时
    ?HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,GPIO_PIN_RESET);//点亮
    ?HAL_Delay(500);//延时
    }

    最后需要在main主函数里面包含我们的#include "LED.h"文件,并且在while循环里面调用我们的函数。注意:我们调用的必须写在BEGIN与END之间

最后对我们的程序进行编译,project上方第二个为编译,若编译没有错误,便可以点击右边dream1相邻的下载器,进行程序的下载,程序的结果为LED1进行500ms一次的闪烁。

不对的地方请进行指正!

文章来源:https://blog.csdn.net/yeah111_/article/details/135466125
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。