蓝桥杯嵌入式学习记录——点亮第一个LED(含软件的使用)

目录

一、蓝桥杯概述

二、软件的使用

三、点亮LED


一、蓝桥杯概述

        蓝桥杯是一个编程大赛、商赛,获奖率高达60%(省赛中一等奖10%、二等奖20%、三等奖30%),但这并不影响它的含金量,多所高校将它列为A类赛事并实行保研加分政策,在全国大学生竞赛含金量排行中也有较高的排名

        近几年蓝桥杯开发了嵌入式和单片机赛道,经过我多方面的了解,我认为对电子信息类专业学生来说,这两个赛道均可以对我们的编程能力和专业能力带来不小的提高,所以我报名了蓝桥杯并在此记录我的学习过程。

        新一届的蓝桥杯采用STM32G431的芯片,抛弃了库函数编程的方式,转为使用高级图形化编程软件cubeMX利用HAL库进行编程,这极大降低了STM32的自主编程难度。并且,STM32官方已经停止了标准库的更新,HAL在持续更新中,这也说明了在未来STM32的发展趋势。在我看来,标准库和HAL库都是必须要学的。

二、软件的使用

(1)软件方面,首先需要下载安装cubeMX

(2)打开后是以下界面,我们先新建一个工程用来进行图形化编程

(3)点击左上角的File > New Project

(4)接着,进入以下界面选择我们的芯片类型:STM32G431RB,并选择标注LQFP64的方形芯片,最后点击右上角Start Project正式开始编程

(5)进入如下界面后,先点击System Core > RCC时钟选项,如图步骤所示打开高速时钟设置

(6)再点击SYS >Debug ,选择串口通信方式

(7)接着按照下图步骤修改时钟参数,改成STM32G431官方手册上的参数即可,以下提供修改后的参数图

(8)然后按照下图步骤设置项目名称项目代码使用的IDE,注意,名称中不要出现中文,使用MDK-ARM进行编程

(9)最后,按下图步骤选择每次都加载保留.c/.h文件,这样操作后可以简化以后的编程步骤,但是减慢程序的编译速度。选择完成后,点击右上角的GENERATE CODE,生成代码,点击Open Folder可以打开代码所在的文件夹

(10)打开代码后,点击左上角魔术棒

(11)按照下图步骤选择CMSIS-DAP的下载方式

(12)再按照下图所示选择下载后运行的方式即可

至此,cubeMX的软件使用方式已经记录完毕,接下来将学习记录点亮第一个LED

三、点亮LED

        所谓的图形化编程,实际上就是可以通过cubeMX上芯片引脚的设置同步代码的编写,例如:在cubeMX上将芯片的PC8引脚设置为推挽输出模式,再点击生成代码,即可得到名为gpio.h的头文件,在编程时就不用自己再编写PC8引脚的初始化代码,包括时钟的初始化、输出模式的设置等,直接调用即可。

        所以,当我们需要点亮一颗LED时,第一步就是打开cubeMX进行引脚的设置,如下图所示,选择GPIO选项后,点击右图芯片中需要使能的引脚,并设置为需要的模式,例如点亮LED时,根据官方手册,八个LED的引脚分别为PC8~PC15,并且设置了PD2为锁存器引脚,避免LCD显示屏和LED使用相同引脚时LED频闪,所以将PC8~PC15和PD2都设置为输出模式,即GPIO_Output

设置完引脚模式后,选中LED对应的引脚后设置为外接高电平,这表示当IO口内部设置为低电平时LED亮起

最后再点击右上角GENERATE CODE生成新代码

打开代码后新建两个文本并保存为led.h、led.c,并进行魔术棒添加路径等操作,具体操作就不过多记录,具体记录代码编写

打开led.h文件,如下编写代码:

//led.h

#ifndef _LED_H
#define _LED_H

#include "main.h"

void LED(uchar dsled);

#endif

其中,需要在"main.h"中添加宏定义uchar、uint如下:

//main.h

#define uchar unsigned char
#define uint unsigned int

注意,除自己创建的文本外,其他所有的代码需要写在注释中BEGIN和END之间,如下图所示

打开led.c文件,如下编写代码:

//led.c

#include "led.h"

void LED(uchar dsled)
{
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);    //打开锁存器
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, GPIO_PIN_SET);  //灭掉所有的LED
	HAL_GPIO_WritePin(GPIOC, dsled<<8, GPIO_PIN_RESET);    //选择特定的LED亮起
}

其中,需要特别注意的是:

dsled<<8的含义是:将dsled代表的数字左移8位,原因是八个LED从PC8开始,有0-7八个空位

例如:令dsled = 0x01,即0000 0000 0000 0001,代表的是第一位为高电平,左移八位后为:0000 0001 0000 0000 ,代表的是第八位为高电平,即第一个led点亮。

打开主函数,在while循环中的BEGIN和END之间编写如下代码:

编写完成后,编译无误后进行下载

最后查看开发板效果即可

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 蓝桥杯是全国性的计算机大赛,旨在提高大学生的计算机技术水平和创新能力。嵌入式STM32G431是一款嵌入式芯片,具有高性能和低功耗的特点。第十二届第一场省赛停车计费系统是蓝桥杯的一道工程题目,要求参赛选手设计一个停车场计费系统。 停车计费系统是指通过嵌入式技术实现对车辆进入和离开停车场的自动检测、计时和计费的系统。对于这个题目,参赛选手可以根据题目要求,使用STM32G431芯片设计一个具有以下功能的系统: 1. 车辆进入检测:使用车辆传感器检测车辆的进入,触发计时。 2. 车辆离开检测:使用车辆传感器检测车辆的离开,停止计时。 3. 计时功能:使用内部时钟模块获取进入和离开的时间,并计算停车时间。 4. 计费功能:根据停车时间,按照一定的计费规则进行计费。 5. 显示功能:使用液晶显示屏显示当前的停车信息,如车牌号、停车时间、费用等。 6. 数据存储功能:使用闪存等储存介质将停车数据进行存储,以便后续的数据分析和查询。 设计一个停车计费系统涉及到硬件设计和软件编程两个方面。硬件方面,参赛选手需要选择合适的传感器、显示屏、存储介质等,以及设计电路和接口进行连接。软件方面,需要使用C语言或者汇编语言编写程序,对芯片进行编程,实现各项功能。 通过此次比赛,选手们可以锻炼嵌入式系统的设计能力和编程能力,了解实际应用中嵌入式系统的工作原理和应用场景。同时,也能提升对STM32G431芯片的理解和运用能力。这对于培养嵌入式技术人才,推动物联网技术的发展都具有积极意义。 ### 回答2: 蓝桥杯是面向计算机爱好者的智力竞赛,而嵌入式STM32G431是一款嵌入式系统开发板。第十二届第一场省赛的停车计费系统真题工程,则是要求参赛选手设计并实现一个能够进行停车计费的系统。 停车计费系统是一种用于自动计费和管理停车场的系统。这个系统可以通过识别车辆的进出以及停车的时间,自动计算并收费。在这个工程中,选手需要使用嵌入式STM32G431开发板以及相关的硬件和软件,来设计一个能够实现停车计费功能的系统。 首先,选手需要使用传感器或摄像头来实现车辆进出的检测。当车辆进入或离开停车场时,传感器会发出信号并通过STM32G431进行检测。接着,选手需要编程实现识别车辆的算法,以便能够识别不同的车辆。当车辆停放时,系统会通过计时器记录停车的时间。 然后,选手需要编写计费算法,根据停车的时间来计算费用。这个算法可以根据停车场的规则来确定费用的计算方式,例如按小时计费或按照不同的时间段采用不同的费率。 最后,选手还需要设计一个界面,使得系统能够与用户进行交互。用户可以通过该界面查询停车费用,并进行付款。同时,选手还需要保证系统的稳定性和安全性,确保数据的准确性和保密性。 总而言之,蓝桥杯嵌入式STM32G431第十二届第一场省赛停车计费系统真题工程要求选手使用硬件和软件开发能力,设计并实现一个完整的停车计费系统。这需要选手具备嵌入式系统开发、传感器技术、算法设计和界面设计等多方面的知识和技能。 ### 回答3: 蓝桥杯嵌入式stm32g431——第十二届第一场省赛停车计费系统真题工程是一个基于STM32G431开发板的停车计费系统设计题目。该系统的主要功能是实现停车场的车辆进入、出场的计费管理。 首先,该系统需要实现一个车辆进入检测的功能。当车辆进入停车场时,系统会通过传感器检测到车辆的到达,并记录下进入的时间。 然后,系统需要实现一个车辆出场的功能。当车辆准备离开停车场时,系统会通过传感器检测到车辆的离开,并记录下离开的时间。 接下来,系统需要计算车辆停留的时间。通过进入时间和离开时间的差值计算得出车辆停留的时长。 最后,系统需要计算停车费用。根据停车场的计费规则,根据车辆停留的时长计算出停车费用,并将费用显示在屏幕上。 在实现上述功能的过程中,需要运用STM32G431开发板的各种功能和模块,包括GPIO口、定时器、中断、串口通信等。通过编写相应的代码,实现按钮的控制、传感器检测、时间的计算以及屏幕的显示等功能。 该项目的设计需要考虑多种情况,比如车辆重复进入出场、车辆进入出场顺序错乱等,要充分考虑这些异常情况并进行相应的处理。在代码编写过程中,还需注意代码的优化和资源的合理利用,以提高系统的性能和效率。 通过完成这个项目的设计与实现,可以加深对STM32G431嵌入式系统的了解和应用,并提升嵌入式系统开发的能力。同时,也能锻炼自己的逻辑思维、问题解决能力和团队合作精神。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KAIs32

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值