STM32 基于 CubeMX配置GPIO点亮LED灯

发布者:时光如梦最新更新时间:2020-08-28 来源: eefocus关键字:STM32  CubeMX配置  GPIO  点亮LED灯 手机看文章 扫描二维码
随时随地手机看文章

1 前言

本文基于ST的STM32F767ZI NUCLEO144开发板,结合CubeIDE的插件CubeMX配置生成代码点亮板载的LED,点亮可谓是单片机开发中的hello world,非常简单;


1。


在这里插入图片描述


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

在这里插入图片描述
因此这里,有几点简单介绍一下:

  • ① 通常接电源正极;

  • ② 通常接地;

  • 确保流过电流在5mA-10mA;

文章写到,如何快速构建CubeIDE环境,另外我还整理了官方的资料,打开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, 电路分析水平有点抠脚了;

PinLEDMode
PB14REDPP
PB7BLUEPP
PB0GREENPP

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);}12345678910111213141516171819

5 程序下载

将NUCLEO144的CN4和CN6的跳帽设置为如下图的状态,这样就使用了板载的STLINK给板载的MCU下载固件


在这里插入图片描述
进入调试模式并开始运行,终于点亮了,我手舞足蹈起来,表情无比激动(浮夸的演技

关键字:STM32  CubeMX配置  GPIO  点亮LED灯 引用地址:STM32 基于 CubeMX配置GPIO点亮LED灯

上一篇:STM32——GPIO设置:快速点亮第一个LED灯
下一篇:STM32 (3) GPIO口功能讲解 GPIO 口输入输出 寄存器配置

推荐阅读最新更新时间:2024-11-07 10:21

STM32 SDIO详解
1、SDIO简介 SDIO,全称:Secure Digital Input and Output,即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、照相机等。 SDIO和SD卡规范间的一个重要区别是增加了低速标准。低速卡的目标应用是以最小的硬件开支支持低速I/O能力。低速卡支持类似调制解调器、条码扫描仪和GPS接收器等应用。 STM32的SDIO控制器支持多媒体卡(MMC卡)、SD存储卡、SDI/O卡和CE-ATA设备。 SDIO框图 复位后SDIO_D0用于数据传输。初始化后主机可以改变数据总线的宽度(通过ACMD6命令设置) 如果一个多媒体卡
[单片机]
<font color='red'>STM32</font> SDIO详解
STM32的定时器--输入捕捉模式
调试STM32的定时器好几天了,也算是对STM32的定时器有了点清楚的认识了。我需要测量4路信号的频率然后通过DMA将信号的频率传输到存储器区域,手册说的很明白每个定时器有4个独立通道。然后我就想能不能将这4路信号都连接到一个定时器的4个通道上去。理论上应该是行的通的。刚开始俺使用的是TIM2的1 2 3通道,TIM4的2通道来进行频率的测量。由于没有频率发生器,所以我用tim3作为信号源,用TIM2,TIM4来进行测量就ok了。   请看一开始的程序,以TIM2的1,3通道为例子:   TIM_ICInitStructure.TIM_ICMode = TIM_ICMode_ICAP; //配置为输入捕
[单片机]
STM32时钟体系结构
STM32的时钟体系可以直接以图概括(摘自STM32F10X参考手册) 下面就此图做分析 1. STM32输入时钟源 1.1 时钟源的作用 无论是小型单片机还是像STM32这样高级单片机,它们工作的核心都是大规模的时序逻辑电路,而驱动时序逻辑电路的关键则是准确而又稳定的时钟源。它的作用就像小学在操场上做广播体操时候播放的背景音乐,用于协调和同步各单元运行,为时序电路提供基本的脉冲信号。 1.2 STM32时钟源的设计 在51单片机中,一般都外接一个11.0592MHz的晶振,注意,提供时钟的不是晶振,而是RC时钟电路,而晶振只是时钟电路的元件之一。同理,在STM32中,时钟源也是由RC时钟电路产生,与51单片机的区别是
[单片机]
<font color='red'>STM32</font>时钟体系结构
STM32基于固件库学习笔记(13)ADC读取电压值
ADC简介 STM32f103 系列有 3 个 ADC(STM32F101/102 系列只有 1 个 ADC),精度为 12 位,每个 ADC 最多有 16 个外部通道。其中ADC1和 ADC2 都有 16个外部通道,ADC3根据 CPU 引脚的不同通道数也不同,一般都有8 个外部通道。 ADC 可以独立使用,也可以使用双重模式(提高采样率)。STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。它有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是
[单片机]
stm32驱动12864液晶显示程序
注意:stm32的3.3v工作电压,需要使用3.3v工作电压的12864液晶 #include stm32f10x_lib.h #define uint unsigned int #define uchar unsigned char #define RSH GPIO_SetBits(GPIOA,GPIO_Pin_0) #define RSL GPIO_ResetBits(GPIOA,GPIO_Pin_0) #define RWH GPIO_SetBits(GPIOA,GPIO_Pin_1) #define RWL GPIO_ResetBits(GPIOA,GPIO_Pin_1) #define ENH GPIO_Se
[单片机]
stm32 nvic的理解
因为stm32有43个中断源,当同时用到多个中断时,就要指定其中断的优先级了。 nvic即是中断向量的控制!由SCB- AIRCR寄存器控制,SCB- AIRCR中目前只用到4位,也就是最高能有16级中断嵌套,如果全使用的话可以达到256级 (1);选用优先级分组(实际就是选几位用于主优先级几位用于辅优先级) group0:选0位用于主优先级,4位用于辅优先级。 group1:选1位用于主优先级,3位用于辅优先级。 group2:选2位用于主优先级,2位用于辅优先级。 group3:选3位用于主优先级,1位用于辅优先级。 group4:选4位用于主优先级,0位用于辅优先级。 (2)这样打个比方不恰当的比方吧,如
[单片机]
STM32 ST-LINK Utility使用教程
下载安装 点击读取芯片信息,读取成功后下载 点击下载 下载完成
[单片机]
<font color='red'>STM32</font> ST-LINK Utility使用教程
STM32 RTC卡死在RTC_WaitForLastTask()解决方法
RTC在配置时间后,调用RTC_WaitForLastTask(),程序卡死。造成这种问题的原因是RTC配置完成后,系统会关闭BKP的时钟,并锁死BKP。置时钟的话,必需允许PWR和BKP时钟,并允许读取BKP。代码如下: RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); /* Allow access to BKP Domain */ PWR_BackupAccessCmd(ENABLE); /* Wait until last write operation on RTC registers has finished */ RTC_WaitFo
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved