一、使用CubeMX创建工程

1.新建环境

2.找到我们想要的芯片

我们选择的芯片型号为STM32G431RBT6,可以从产品手册中查询(比赛可以使用)

3.配置时钟

比赛时对配置内部还是外部时钟没有强制要求,因此建议使用配置内置时钟:

4.引脚配置

我们想要知道需要使用哪些引脚,则需要查询电路图或产品手册。LED指示灯的电路图在产品手册的7.4:

用到了PD2、PC8-15,且均为输出值存在的引脚,因此配置时均选择GPIO_Output,如下图所示

最后配置状况如下图所示:

单击左侧的GPIO,按照下图提示打开窗口

在这里需要学习关于LED灯的先验知识

图中的VDD是电源正极(高电平),如果想要LED初始状态为灯灭即不通电,则需要将PC8-15也处于高电平【因为通电需要有电势差的存在】,因此PC8-15均配置成High。
而学习应该将PD2初始置高还是置低,需要学习74HC153锁存器的知识:

LED电路图里的接口20(VDD)和接口11(PD2)对应着锁存器的OE和LE,VDD为High因此~OE为High即OE为Low,想要让LED灯保持灭的状态始终不变,则需要LE置Low,即PD2置Low。因此配置结果如下:

5.编辑基本项目信息

然后单击右上角的generate code,生成初始代码。

二、KEIL相关内容

1.编译初始环境

2.配置下载环境

单击快捷菜单中的魔术棒按钮

单击Setting后会弹出新的菜单栏,我们需要做的就是检查是否有图中标记③的这一行描述,如果没有则单击下方Add按钮,添加STM32G系列的项目描述;有则不需要额外添加(额外添加反而会下载失败)


3.LED灯实验——学会点亮LED
(1)书写LED函数

HAL_GPIO_TogglePin( )函数的作用是切换到某一个引脚,其定义存在于stm32g4xx_hal_gpio.c文件中:

我们在实验中使用的函数都不需要死记硬背其名字,仅需要熟悉这个函数在哪个文件中,之后查阅使用即可。

HAL_GPIO_WritePin( )函数的作用是在某引脚中写入信息(电平),其定义也存在于stm32g4xx_hal_gpio.c文件中:

HAL_Delay( )函数顾名思义起到延时作用,定义存在于stm32g4xx_hal.c文件中:

关于为什么我们要切换到这个引脚,为什么要使那个引脚写入信息,我们仍需要查阅产品手册中的LED电路图:

第二盏灯对应的引脚为PC9,因此HAL_GPIO_TogglePin( )函数里面的两个参量分别为GPIOC、GPIO_PIN_9;控制亮灭的LE对应的引脚为PD2,因此HAL_GPIO_WritePin( )函数里的前两个参量为GPIOD、GPIO_PIN_2,第三个参量函数定义里提示了我们有两个选择(GPIO_PIN_SET和GPIO_PIN_RESET)前者为1后者为0。

(2)在gpio.h中添加函数声明

(3)在主函数中调用该函数

(4)编译并下载


上图仅为参考demo,若全程按照上述步骤完成,则应该为LED2与LED3交替闪烁。

基于STM32G431嵌入式学习笔记——一、LED模块入门相关推荐

  1. 基于STM32G431嵌入式学习笔记——七、定时器定时

    一.题目引入 上述为第13届蓝桥杯省赛节选内容,为了研究定时器的机理并独立书写计时函数,上述内容简化为以下要求: ①按下B4按键,LD1点亮5s后熄灭 ②按下B3按键,LD2以0.1秒为间隔切换亮灭状 ...

  2. 嵌入式学习笔记——基于Cortex-M的单片机介绍

    基于Cortex-M的单片机介绍 前言 1生产厂商及其产品线 1.1ARM单片机的产品线 1.2命名规则 作业1 2习单片机的资料准备 2.1STM32开发所需手册 2.1.1芯片的数据手册 芯片基本 ...

  3. 嵌入式学习笔记——寄存器实现控制LED小灯

    文章目录 前言 GPIO通用输出模式 初始化LED小灯的GPIO 原理图 初始化代码 初始化的效果 功能函数封装 直接分开宏定义两个 使用条件运算符 封装函数实现简单的功能 KEIL MDK一些技巧 ...

  4. 嵌入式学习笔记——ADC模数转换器

    ADC模数转换器 前言 ADC介绍 ADC概述 ADC的数量 ADC的特性 ADC框图 芯片外部框图 芯片内部框图 转换部分框图 状态输出部分 条件触发框图 寄存器介绍 编程思路 模式选择 规则通道的 ...

  5. 嵌入式学习笔记——STM32的USART通信概述

    文章目录 前言 常用通信协议分类及其特征介绍 通信协议 通信协议分类 1.同步异步通信 2.全双工/半双工/单工 3.现场总线/板级总线 4. 串行/并行通信 5. 有线通信.无线通信 STM32通信 ...

  6. node.js学习笔记5——核心模块1

    node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...

  7. cortex_m3_stm32嵌入式学习笔记(十五):待机唤醒实验(WK_UP外部中断)

    cortex_m3_stm32嵌入式学习笔记(十五):待机唤醒实验(WK_UP外部中断) https://blog.csdn.net/qq_16255321/article/details/43086 ...

  8. 嵌入式学习笔记——使用寄存器编程操作GPIO

    使用寄存器编程操作GPIO 前言 GPIO相关的寄存器 GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..I) 位操作 GPIO 端口输出类型寄存器 (GPIOx_OTYPER) ...

  9. 好程序员web前端分享Nodejs学习笔记之Stream模块

    好程序员web前端分享Nodejs学习笔记之Stream模块 一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现.比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流.流 ...

最新文章

  1. Vue.js之UI组件elementUI——MintUI
  2. c语言中二叉树中总结点,C语言二叉树的三种遍历方式的实现及原理
  3. 使用BeetleX.NetBenchmark压测TCP,HTTP和Websocket服务
  4. Android之自定义 ActionBar 上的菜单(Menu)文字颜色
  5. pixel和毫米怎么换算_压力传感器相关压力单位换算
  6. 我最开始学dancing link的HTML5的时候
  7. Python之基础练习题
  8. dos, echo写文件不追加回车的方法
  9. process is bad
  10. 带reportView的winform程序在部署安装的时需要装两个框架,一framework框架二就是reportviewer的安装包...
  11. C语言教程-Turbo C
  12. CSS学习(一)--选择器
  13. c语言字符串的加减乘除,c语言加减乘除代码
  14. Java基础之二维数组
  15. IDEA如何自动/手动导入包
  16. 个人总结 高阶PLSQL 数据库编程
  17. ACM实验室成员博客汇总
  18. 非易失性NV-SRAM简介
  19. python中timeit模块用法
  20. JAVA中fish什么意思,fish是什么意思_fish在线翻译_读音_用法_例句_含义-查字典网...

热门文章

  1. iOS 真机测试错误解决An App ID with Identifier ...is not available
  2. juniper常用命令
  3. java正则校验qq邮箱_检测邮箱是否是QQ邮箱并给出提示_正则实例
  4. VTK笔记-图形相关-多边形数据转换图像数据-vtkPolyData转换为vtkImageData
  5. mindspore 1.3.0版本GPU环境下源码编译的正式工作——完整的编译过程
  6. 基于局部平面拟合的法向估计
  7. 多路径路由算法选择(2)——回顾传统的动态路由协议(RIP、OSPF、BGP、IGRP、EIGRP、IS-IS)
  8. ArduinoIDE + STM32Link烧录调试
  9. STM32实现自定义HID复合设备
  10. 双臂UR5的Gazebo配置