蓝桥杯嵌入式学习记录——点亮第一个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);  //灭掉所有的LEDHAL_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之间编写如下代码:

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

最后查看开发板效果即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/458888.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot和PostGIS的震中影响范围可视化实践

目录 前言 一、基础数据 1、地震基础信息 2、全国行政村 二、Java后台服务设计 1、实体类设计 2、Mapper类设计 3、控制器设计 三、前端展示 1、初始化图例 2、震中位置及影响范围标记 3、行政村点查询及标记 总结 前言 地震等自然灾害目前还是依然不能进行准确的预…

机器人运动学林沛群——旋转矩阵

旋转矩阵 基本概念 三个主轴&#xff0c;可以看作是三个向量&#xff0c;为b在a的表达&#xff0c;以a为基准 旋转矩阵 B相对于A的姿态&#xff1a; B A R [ A X B ^ A Y B ^ A Z B ^ ] [ X ^ B ⋅ X ^ A Y ^ B ⋅ X ^ A Z ^ B ⋅ X ^ A X ^ B ⋅ Y ^ A Y ^ B ⋅ Y ^ A Z …

2024年2月8日 十二生肖 今日运势

小运播报&#xff1a;2024年2月8日&#xff0c;星期四&#xff0c;农历腊月廿九 &#xff08;甲辰年丙寅月壬寅日&#xff09;&#xff0c;法定工作日。 红榜生肖&#xff1a;马、猪、狗 需要注意&#xff1a;龙、蛇、猴 喜神方位&#xff1a;正南方 财神方位&#xff1a;正…

外汇天眼:香港监管机构禁止Nerico Brothers前持牌代表五年

香港证券及期货事务监察委员会&#xff08;SFC&#xff09;已经禁止Nerico Brothers Limited的前持牌代表林清超先生和黄肇峰先生重新进入行业&#xff0c;为期五年。禁令将从2024年2月6日持续至2029年2月5日&#xff0c;此举是因为林和黄分别因行贿罪被判有罪。 林和黄于2022年…

3.2-媒资管理之MinIo分布式文件系统+上传图片

媒资管理 3 分布式文件系统 3.1 什么是分布式文件系统 要理解分布式文件系统首先了解什么是文件系统。 查阅百度百科&#xff1a; 文件系统是负责管理和存储文件的系统软件&#xff0c;操作系统通过文件系统提供的接口去存取文件&#xff0c;用户通过操作系统访问磁盘上的文…

机器学习系列——(七)简单分类算法

机器学习是目前人工智能领域最热门的分支之一&#xff0c;其中朴素贝叶斯分类算法是一种常用的分类算法。本文将详细介绍朴素贝叶斯分类算法的原理、应用以及优缺点。 一、原理 朴素贝叶斯分类算法是一种基于贝叶斯定理的分类算法。在分类问题中&#xff0c;我们需要根据给定的…

【JavaEE Spring】Spring 原理

Spring 原理 1. Bean的作⽤域1.1 概念1.2 Bean的作⽤域 2. Bean的⽣命周期 1. Bean的作⽤域 1.1 概念 在Spring IoC&DI阶段, 我们学习了Spring是如何帮助我们管理对象的. 通过 Controller , Service , Repository , Component , Configuration ,Bean 来声明Bean对象。通…

【Linux开发工具】gcc/g++的使用

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.前言2.gcc/g使用方…

手把手教你激活FL Studio 21.2.2.3914中文破解版2024年图文激活教程以及如何设置中文language

FL Studio 21.2.2.3914软件简介 fl studio 21.2.2.3914中文破解版作为一款极具创意性的音乐软件工作站软件&#xff0c;FL Studio已经成为了许多音乐制作人和音乐爱好者的首选。最新的FL Studio 21.2.2.3914中文破解版的发布&#xff0c;无疑将会引起更多人的关注。 ​ FL St…

《Java程序设计》实验报告(一)之Java语言基础

实验内容及步骤&#xff1a; 编写”hello world”应用程序。&#xff08;1&#xff09;代码&#xff1a; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } } &#xff08;2&#xff09;运行…

【Langchain+Streamlit】旅游聊天机器人

【LangchainStreamlit】打造一个旅游问答AI-CSDN博客 项目线上地址&#xff0c;无需openai秘钥可直接体验&#xff1a;http://101.33.225.241:8502/ github地址&#xff1a;GitHub - jerry1900/langchain_chatbot: langchainstreamlit打造的一个有memory的旅游聊天机器人&…

Mybatis- plus 基本使用

目录 一. 引入依赖 二.定义Mapper 三.常见注解 3.1TableName 3.2.TableId 3.3TableField 3.4常见配置 一. 引入依赖 由于这个starter包含对mybatis的自动装配&#xff0c;因此完全可以替换掉Mybatis的starter。 <dependency><groupId>com.baomidou</gr…