基于STM32G431嵌入式学习笔记——一、LED模块入门
一、使用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模块入门相关推荐
- 基于STM32G431嵌入式学习笔记——七、定时器定时
一.题目引入 上述为第13届蓝桥杯省赛节选内容,为了研究定时器的机理并独立书写计时函数,上述内容简化为以下要求: ①按下B4按键,LD1点亮5s后熄灭 ②按下B3按键,LD2以0.1秒为间隔切换亮灭状 ...
- 嵌入式学习笔记——基于Cortex-M的单片机介绍
基于Cortex-M的单片机介绍 前言 1生产厂商及其产品线 1.1ARM单片机的产品线 1.2命名规则 作业1 2习单片机的资料准备 2.1STM32开发所需手册 2.1.1芯片的数据手册 芯片基本 ...
- 嵌入式学习笔记——寄存器实现控制LED小灯
文章目录 前言 GPIO通用输出模式 初始化LED小灯的GPIO 原理图 初始化代码 初始化的效果 功能函数封装 直接分开宏定义两个 使用条件运算符 封装函数实现简单的功能 KEIL MDK一些技巧 ...
- 嵌入式学习笔记——ADC模数转换器
ADC模数转换器 前言 ADC介绍 ADC概述 ADC的数量 ADC的特性 ADC框图 芯片外部框图 芯片内部框图 转换部分框图 状态输出部分 条件触发框图 寄存器介绍 编程思路 模式选择 规则通道的 ...
- 嵌入式学习笔记——STM32的USART通信概述
文章目录 前言 常用通信协议分类及其特征介绍 通信协议 通信协议分类 1.同步异步通信 2.全双工/半双工/单工 3.现场总线/板级总线 4. 串行/并行通信 5. 有线通信.无线通信 STM32通信 ...
- node.js学习笔记5——核心模块1
node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...
- cortex_m3_stm32嵌入式学习笔记(十五):待机唤醒实验(WK_UP外部中断)
cortex_m3_stm32嵌入式学习笔记(十五):待机唤醒实验(WK_UP外部中断) https://blog.csdn.net/qq_16255321/article/details/43086 ...
- 嵌入式学习笔记——使用寄存器编程操作GPIO
使用寄存器编程操作GPIO 前言 GPIO相关的寄存器 GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..I) 位操作 GPIO 端口输出类型寄存器 (GPIOx_OTYPER) ...
- 好程序员web前端分享Nodejs学习笔记之Stream模块
好程序员web前端分享Nodejs学习笔记之Stream模块 一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现.比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流.流 ...
最新文章
- Vue.js之UI组件elementUI——MintUI
- c语言中二叉树中总结点,C语言二叉树的三种遍历方式的实现及原理
- 使用BeetleX.NetBenchmark压测TCP,HTTP和Websocket服务
- Android之自定义 ActionBar 上的菜单(Menu)文字颜色
- pixel和毫米怎么换算_压力传感器相关压力单位换算
- 我最开始学dancing link的HTML5的时候
- Python之基础练习题
- dos, echo写文件不追加回车的方法
- process is bad
- 带reportView的winform程序在部署安装的时需要装两个框架,一framework框架二就是reportviewer的安装包...
- C语言教程-Turbo C
- CSS学习(一)--选择器
- c语言字符串的加减乘除,c语言加减乘除代码
- Java基础之二维数组
- IDEA如何自动/手动导入包
- 个人总结 高阶PLSQL 数据库编程
- ACM实验室成员博客汇总
- 非易失性NV-SRAM简介
- python中timeit模块用法
- JAVA中fish什么意思,fish是什么意思_fish在线翻译_读音_用法_例句_含义-查字典网...
热门文章
- iOS 真机测试错误解决An App ID with Identifier ...is not available
- juniper常用命令
- java正则校验qq邮箱_检测邮箱是否是QQ邮箱并给出提示_正则实例
- VTK笔记-图形相关-多边形数据转换图像数据-vtkPolyData转换为vtkImageData
- mindspore 1.3.0版本GPU环境下源码编译的正式工作——完整的编译过程
- 基于局部平面拟合的法向估计
- 多路径路由算法选择(2)——回顾传统的动态路由协议(RIP、OSPF、BGP、IGRP、EIGRP、IS-IS)
- ArduinoIDE + STM32Link烧录调试
- STM32实现自定义HID复合设备
- 双臂UR5的Gazebo配置