STM32 基于 CubeMX配置GPIO点亮LED灯(超级详细+图文并茂)
我是一个只会点灯的菜鸟;
相关文章
【STM32系列汇总】小白博主的STM32实战快速进阶之路(持续更新)
文章目录
1 前言
本文基于ST的STM32F767ZI NUCLEO144开发板,结合CubeIDE的插件CubeMX配置生成代码点亮板载的LED,点亮可谓是单片机开发中的hello world,非常简单;
2 理论分析
2.1 LED 原理
发光二极管简称为LED,生活中几乎无处不在,由含镓(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光,氮化镓二极管发蓝光。因化学性质又分有机发光二极管OLED和无机发光二极管LED1。

LED是正向导通,反向截止的,它在电路设计中的符号如下图所示;

因此这里,有几点简单介绍一下:
- ① 通常接电源正极;
- ② 通常接地;
- 确保流过电流在5mA-10mA;
2.2 板载资料
上一篇文章写到,如何快速构建CubeIDE环境,另外我还整理了官方的资料,文档都在这里,密码: 1rjv,打开en.DM00244518.pdf,NUCLEO144的板载资源如下图所示;
 可以看到这里有三个用户
可以看到这里有三个用户LED,下面就结合CubeIDE中的CubeMX插件配置生成相应的代码;
2.3 电路分析
解压文件en.nucleo_144pins_sch.zip,打开原理图的pdf文件MB1137.pdf;可以看到,Blue LED和Red LED,具体如下图所示;

Green LED如下所示;
 根据虚短和虚断,Vout=200K10K+200KVinV_{out} = \cfrac{200K}{10K+200K}V_{in}Vout=10K+200K200KVin ;感觉像是电压跟随器,那Vout=VinV_{out} = V_{in}Vout=Vin, 电路分析水平有点抠脚了;
根据虚短和虚断,Vout=200K10K+200KVinV_{out} = \cfrac{200K}{10K+200K}V_{in}Vout=10K+200K200KVin ;感觉像是电压跟随器,那Vout=VinV_{out} = V_{in}Vout=Vin, 电路分析水平有点抠脚了;
| Pin | LED | Mode | 
|---|---|---|
| PB14 | RED | PP | 
| PB7 | BLUE | PP | 
| PB0 | GREEN | PP | 
PP为推挽输出;
3 CubeMX配置
打开CubeIDE,
3.1 SYS 配置
NUCLEO144板载一个ST-LINKV2,下载和调试程序的时候下面会用SWD模式,所以这里SYS的Debug选择Serial Wire,具体如下图所示;

3.2 GPIO 选择
第一步:
在Pinout view的芯片试图上找到所需要的Pin,本文使用了 PB14,PB7,PB0,图中找到PB7,并鼠标点击并弹出菜单;
第二步:
选择GPIO的模式为GPIO_Output;
具体如下图所示;

3.3 GPIO 配置
选择了三个Pin,分别为PB14,PB7,PB0,全都配置为:
- GPIO output level:初始化完成之后输出的电平状态为高;
- GPIO mode:输出模式为推挽输出;
- 上拉和下拉模式:这里暂不配置,没有影响;
完成后如下图所示;

4 程序生成
最终生成了配置代码如下;
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOB_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_14|GPIO_PIN_7, GPIO_PIN_SET);
  /*Configure GPIO pins : PB0 PB14 PB7 */
  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_14|GPIO_PIN_7;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
5 程序下载
将NUCLEO144的CN4和CN6的跳帽设置为如下图的状态,这样就使用了板载的STLINK给板载的MCU下载固件;

进入调试模式并开始运行,终于点亮了,我手舞足蹈起来,表情无比激动(浮夸的演技												
STM32 基于 CubeMX配置GPIO点亮LED灯(超级详细+图文并茂)的更多相关文章
- 《RT-Thread Studio开发STM32》第一章~第一节《配置STM32H743XIH6点亮LED灯》
		安装RT-Thread Studio后添加相关芯片库文件,打开软件 打开SDK管理界面,安装相关的库文件,本次采用STM32H743XIH6芯片,野火开发板. 新建工程并设置相关的参数 先编译下下载到 ... 
- 第二章之S5PV210在BL1中点亮LED灯
		1,u-boot中第一个入口在./arch/arm/cpu/armv7/start.S 翻到153行:如下图 前面都是进行一些基本设置,不用管. cpu_init_cp15设置协处理器, cpu_in ... 
- 第7章     使用寄存器点亮LED灯
		第7章 使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ... 
- C语言版——点亮LED灯,深入到栈
		在上一篇进行了汇编语言的编写之后,我们采用C语言来编写程序,毕竟C语言才是我们使用最多的语言. 仅仅是点亮LED灯显然太过于简单,我们需要分析最后的反汇编,了解函数调用栈,深入C语言骨髓去分析代码,并 ... 
- 第7章 	使用寄存器点亮LED灯—零死角玩转STM32-F429系列
		第7章 使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ... 
- Raspberry PI 系列 —— 裸机点亮LED灯
		Raspberry PI 系列 -- 裸机点亮LED灯 背景 近期刚买了Raspberry PI B+,配置执行了官方提供的Raspbian系统,折腾了一周Linux系统,感觉没啥意思,于是就试着想了 ... 
- 初探RT-Thread系统在GD32E103x芯片上的使用,点亮LED灯
		初探RT-Thread系统在GD32E103x芯片上的使用,点亮LED灯 前言  随着中美贸易战的加剧,很多公司越来越重视使用国产技术的重要性.使用国产技术,一方面可规避国外对技术的封锁造成产品核心 ... 
- JZ2440开发板:用按键点亮LED灯(学习笔记)
		本文是对韦东山嵌入式第一期学习的记录之一,如有您需要查找的信息,可以继续往下阅读. 想要用按键点亮LED灯,就需要知道按键和LED灯的相关信息,这样才可以进行之后的操作.阅读JZ2440的原理图,可以 ... 
- 30个物联网传感器小实验:三行代码点亮LED灯
		30个物联网传感器小实验:三行代码点亮LED灯 三行代码点亮LED灯 LED灯闪烁 LED灯调亮度 LED淡入淡出 不写一行代码点亮LED灯 全彩RGB灯 面包板 30个物联网传感器小实验:三行代码点 ... 
随机推荐
- Hadoop学习笔记(2)-HDFS的基本操作(Shell命令)
			在这里我给大家继续分享一些关于HDFS分布式文件的经验哈,其中包括一些hdfs的基本的shell命令的操作,再加上hdfs java程序设计.在前面我已经写了关于如何去搭建hadoop这样一个大数据平 ... 
- K - Downgrade Gym - 101775K
			题目大意:一天不玩相当于A-B中将A转换为经验值,B舍弃掉,然后A=1,在通过升级所需要的经验值来判断可以升几级 题目连接:https://codeforces.com/gym/101775/prob ... 
- 【原创干货】大数据Hadoop/Spark开发环境搭建
			已经自学了好几个月的大数据了,第一个月里自己通过看书.看视频.网上查资料也把hadoop(1.x.2.x).spark单机.伪分布式.集群都部署了一遍,但经历短暂的兴奋后,还是觉得不得门而入. 只有深 ... 
- Python - 翻译Talk Python To Me (和我聊Python) 播客
			“和我聊Python”是一个美国的聊天播客,英文名Talk Python To Me,类似于喜马拉雅的音频课程节目,只不过这个主题是编程语言Python.该节目从2015年的节目到现在,已经超过256 ... 
- [linux][MongoDB] mongodb学习(一):MongoDB安装、管理工具、
			参考原文:http://www.cnblogs.com/kaituorensheng/p/5118226.html linux安装完美实现! 1. mongoDB安装.启动.关闭 1.1 下载安装包 ... 
- 杂记三 · CSP-2019-The first step
			update:我终于懂得衰亡的民族之所以沉默的缘由了. 初赛Day -7 虽然我是第一次参加初赛而且到现在为止我还没见过初赛题但我一点也不慌! 真的!一点!也不慌! 初赛Day 1 早上和可s爱b j ... 
- kubernetes的cni0和flannel.1的关系?
			当容器运行之后,节点之间多了个虚拟接口cni0,它是由flanneld创建的一个虚拟网桥叫cni0,供pod本地通信使用.flanneld为每个pod创建一对veth虚拟设备,一端放在容器接口上,一端 ... 
- JWT验证机制【刘新宇】【Django REST framework中使用JWT】
			JWT 在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证.我们不再使用Session认证机制,而使用Json Web Token认证机制. 什么是JWT Json web t ... 
- 为什么redis是单线程的以及为什么这么快?
			官网的说法 我们先来认真看一下官网的说法.翻译过来大意如下: CPU并不是您使用Redis的瓶颈,因为通常Redis要么受内存限制,要么受网络限制.例如,使用在一般Linux系统上运行的流水线Redi ... 
- python学习08排序算法举例
			'''''''''排序算法:前提是所有数按照从小到大的顺序排列.1.冒泡算法将第一数与第二个数比较大小,如果第一个数比第二个数大,则沉底(交换位置,使大数在小数后面,这个过程类似于大泡沉底的过程) ' ... 
