蓝桥杯电子类嵌入式(STM32G431)备赛学习记录(一)——LED

这篇具有很好参考价值的文章主要介绍了蓝桥杯电子类嵌入式(STM32G431)备赛学习记录(一)——LED。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

2023年2月10日,距离第十四届蓝桥杯正式比赛还有不到两个月的样子,从今天开始正式备赛。之前博主有看过野火的教程,学的是STM32F103。蓝桥杯嵌入式组现在用的是STM32G431,板子在二手平台上买的,视频参考b站up主01Studio相关教程(后面提到简写为教程)。学习的模块按照教程所列,其参考的资料是历年来真题中所考察的模块。

环境准备

关于Keil的安装,可以参考火哥的视频。STM32 CubeMx的安装参考Z小旋的博客。要注意的是学习过其他芯片的小伙伴(STM32 F1 F4等)得先去Keil官网下载G4的芯片包并安装。

01、LED操作

国际惯例,学习单片机先学点灯。这里有所不同的是在过程上,我们用到了STM32 CubeMX图形可视化编程。在备赛之前,博主按照火哥的视频,使用的是固件库编程。编程逻辑是根据原理图,开启相应时钟→初始化相关GPIO→完成相关功能程序。而Cube则是将前两步用图形化的方式代替,简化了整个过程提高效率。本质上都是一样的。
首先,打开Cube新建一个项目。
蓝桥杯电子类嵌入式(stm32g431) sch,stm32,单片机,蓝桥杯
在索引栏搜索所学芯片STM32G431RB,选择与实物封装相同的第二个,点击Start Project。
蓝桥杯电子类嵌入式(stm32g431) sch,stm32,单片机,蓝桥杯
开启时钟。HSE为外部高速时钟,LSE为外部低速时钟(E即外部,I反之)。高速时钟主要用于系统内核和总线上的外设时钟。低速时钟主要用于独立看门狗IWDG、实时时钟RTC。BYPASS Clock Source 是旁路时钟源(即选择有源晶振),Crystal/Ceramic Resonator 是选择无源晶振,这里可以参考hurryddd的博客以及kay880的博客。

蓝桥杯电子类嵌入式(stm32g431) sch,stm32,单片机,蓝桥杯
配置时钟树。根据产品手册,外部晶振为24MHz。图中的标号顺序是从左到右进行选择,但是配置时钟树的正常逻辑应参考anbaixiu的博客,先设置后面的时钟频率大小(最大可到170,80设置为跟教程相同),再打开PLL。最后按下回车,Cube会自动完成时钟树配置。
蓝桥杯电子类嵌入式(stm32g431) sch,stm32,单片机,蓝桥杯蓝桥杯电子类嵌入式(stm32g431) sch,stm32,单片机,蓝桥杯
命名工程文件,保存路径,生成模板代码。
蓝桥杯电子类嵌入式(stm32g431) sch,stm32,单片机,蓝桥杯
开启时钟OK!
接下来初始化相应的GPIO口。打开刚刚创建的.ioc文件,根据芯片手册,led1-8分别连接的PC8-15以及锁存对应PD2。
蓝桥杯电子类嵌入式(stm32g431) sch,stm32,单片机,蓝桥杯
在Cube中将这几个GPIO口设置为GPIO_Output,并将PC这8个IO口设置为高电平防止一上电就灯亮,PD2设置为低电平。
蓝桥杯电子类嵌入式(stm32g431) sch,stm32,单片机,蓝桥杯
蓝桥杯电子类嵌入式(stm32g431) sch,stm32,单片机,蓝桥杯
点击GENERATE CODE后,第二步初始化GPIO口完成!

在生成工程文件的路径下新建一个文件夹(这里命名为bsp)用于保存实相应功能的代码。在文件夹中分别创建一个.c和.h文件。打开工程,将文件夹添加进工程中。在led.c中包含.h文件,点击魔术棒将.h文件路径包含,然后编译。
现在,我们假设想要实现的功能是点亮led8。
led.c中代码包含:

#include "led.h"		//包含头文件

void Dis_LED(uchar Num_Led)		//定义点灯函数,传入的参数是选中哪些灯
{
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);		//先将所有灯熄灭
	HAL_GPIO_WritePin(GPIOC,Num_Led<<8,GPIO_PIN_RESET);		//因为只有PC8-15高8位有效,所以将传入参数左移八位
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);			//高电平锁存
	HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}

这里要注意,uchar类型需要定义,在main.h中定义:

/* USER CODE BEGIN Includes */
#define uchar unsigned char 
#define uint  unsigned int 

/* USER CODE END Includes */

注意,用cube写的模板,在加代码时必须在/* USER CODE BEGIN Includes /和/ USER CODE END Includes */的中间,这就是cube的格式,否则如果将.ioc文件进行修改再生成代码后就会将我们加的代码覆盖。
led.h:

#ifndef _LED_H
#define _LED_H

#include "main.h"
void Dis_LED(uchar Num_Led);


#endif

main.c中包含过led.h后,加入:

  /* USER CODE BEGIN 2 */
  Dis_LED(0x00);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		Dis_LED(0x80);
		HAL_Delay(500);
		Dis_LED(0x00);
		HAL_Delay(500);
		
		
  }
  /* USER CODE END 3 */

编译后代码没有报错,点击魔术棒对下载和debug进行设置,在settings中勾选reset and run,以便于下载后不用自己按reset。
蓝桥杯电子类嵌入式(stm32g431) sch,stm32,单片机,蓝桥杯
蓝桥杯电子类嵌入式(stm32g431) sch,stm32,单片机,蓝桥杯
将程序下载后可以看到led8在闪烁!文章来源地址https://www.toymoban.com/news/detail-824197.html

到了这里,关于蓝桥杯电子类嵌入式(STM32G431)备赛学习记录(一)——LED的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32

    🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 -  蓝桥杯嵌入式_勾栏听曲_0的博客 🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️ 📌个人主

    2024年02月03日
    浏览(37)
  • 蓝桥杯嵌入式STM32G431RBT6竞赛指南与模板——最后的绝唱

    谨以此文和我去年前的一篇蓝桥杯单片机的教程构成电子类的 青铜双壁. 国信长天单片机竞赛训练之原理图讲解及常用外设原理(遗失的章节-零)_昊月光华的博客-CSDN博客     目录 时钟树 串口重定向:printf输出 动态点灯(点灯大师) 按键(常用状态机) 同一时刻对多个按键按

    2024年02月07日
    浏览(35)
  • 单片机毕业设计 stm32智能电子秤系统设计与实现 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月06日
    浏览(52)
  • 蓝桥杯嵌入式STM32G431RBT6的学习(总大纲)(HAL库学习)板子介绍

    我写蓝桥杯嵌入式大概用到的外设,都是非常常用的。我在这里汇总一下。 蓝桥杯嵌入式基础模块——GPIO的使用(新板)STM32G431(HAL库开发)_薛定谔的猫咪死了的博客-CSDN博客 蓝桥杯嵌入式基础模块——串口的使用(新板)STM32G431(HAL库开发)_薛定谔的猫咪死了的博客-C

    2024年02月02日
    浏览(33)
  • 蓝桥杯嵌入式基础模块——LCD显示器的基本使用(新板)STM32G431(HAL库开发)

            在蓝桥杯嵌入式官方给我们提供好了,LCD显示的底层源码,我们只需要,记住里面的API函数,会用这些函数就行。         在官方给的资料中找到这个文件名字DK117_G4 Data Packet-开发板驱动文件里面就是所有的底层文件有两种类型,一种是基于HAL库的一种是标准库

    2024年02月09日
    浏览(38)
  • 蓝桥杯嵌入式CT117E-M4学习笔记02-STM32G431RBT6芯片学习

    首先学习了解一下蓝桥杯嵌入式CT117E-M4开发板的主控芯片STM32G431RBT6,本文仅为个人学习成果总结,如有错误,恳请指正。 上图为STM32CubeMX选型界面,如图可以看出STM32G431RBT6具有以下特点和硬件集成。 采用Cortex-M4 32位RISC核心架构,工作频率最高可达170Mhz。 128kBytes的FLASH,32

    2023年04月09日
    浏览(40)
  • STM32 PWM模式与输出比较模式的区别。PWM占空比不生效,在STM32CubeMX中配置PWM的两种模式——蓝桥杯嵌入式

      🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都已更新完毕,欢迎大家前往订阅本专题🎏 🎏【蓝桥杯嵌入式】蓝桥杯第十届省赛真题 🎏【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题 🎏【蓝桥杯嵌入式】蓝桥杯第十三届

    2023年04月15日
    浏览(39)
  • 【蓝桥杯】一文解决蓝桥杯嵌入式开发板(STM32G431RBT6)LCD与LED显示冲突问题,并讲述LCD翻转显示

       不知道大家在开发过程中有没有碰到: LCD与LED同时(宏观上的同时)点亮时产生的LED状态紊乱问题 。 LCD与LED显示冲突现象图   为了解决上述问题,小编给出了以下三种解决方案: 方案一:    每次LCD显示完成数据后,关闭所有LED一次。   但是 使用该方法比较麻烦,

    2023年04月12日
    浏览(38)
  • [蓝桥杯嵌入式]STM32G431——第十二届第一场省赛停车计费系统真题及程序设计代码详解

    最近,我报名了今年的蓝桥杯嵌入式比赛,为此刷了一下以往的真题。以下是我对十二届蓝桥杯省赛真题的一些思路和心得,还有一些具体代码的实现。 1、相关模块 第十二届比赛主要用到的模块包括:LED、KEY、LCD、TIM、USART 2、重难点分析 这道题主要目的是做一个停车管理

    2024年01月18日
    浏览(78)
  • 【本科生电子类竞赛】小白入门学习路线

    写在前面:编者主要是为了给协会的大一萌新分享经验,鉴于水平,恳请指正; 竞赛 时间 含金量(难度) 电子设计竞赛-控制类 每年7,8月,四天三夜 ***** 大学生智能汽车竞赛 ***** 全国大学生机器人大赛(RoboMasters、RoboCon、RoboTac) **** “西门子杯”中国智能制造挑战赛 蓝桥

    2024年02月09日
    浏览(102)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包