最详细STM32,cubeMX 点亮 led

这篇具有很好参考价值的文章主要介绍了最详细STM32,cubeMX 点亮 led。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章将详细介绍 如何在 stm32103 板子上点亮一个LED.


前言

  • 实验开发板:STM32F103C8T6。
  • 所需软件:keil5 , cubeMX 。
  • 实验目的:了解 led 点亮原理,cubeMX配置 , GPIO 等相关函数 。

一、开发环境搭建。

  1. 代码编写软件 : MDK keil5 。
  2. 图形化配置软件 :STM32cubeMX。
  3. 仿真器驱动 : STLINK 。
  4. 串口驱动 :CH340 。

对于以上软件的安装可以参考 : 最详细 keil5 和 cubeMX安装教程

二、LED 原理图解读

stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX
芯片的原理图如上图,可以看到控制 LED1 的引脚是 PB4
stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX
灯 D1 的 右边接在 VCC 电源上,如果 想要点亮 led , 需要将 led 的左侧 GPIO 引脚 PB4 设置为 低电平即可。那么该图是 低电平控制 led

  • 高电平:通常表示逻辑1,可以是与电源电压相对应的电压(例如3.3V或5V)。
  • 低电平:通常表示逻辑0,可以是与地电压(0V)相对应的电压。

三、什么是 GPIO

GPIO ,全称为通用输入输出(General-Purpose Input/Output ),是 连接外部设备的通用接口。用于与外部设备进行数字信号的输入和输出。它在嵌入式系统、单片机、单板计算机等领域都有广泛的应用,使数字系统能够与外部世界互动和通信。

  1. 输入:
    GPIO 可以用于接受外部设备发送的数字信号,如 按钮的状态,传感器数据。获取外部数据或事件。

  2. 输出:
    GPIO 可以用于向外部设备发送数字信号,如控制 LED, 继电器,电机等。 操作和控制外部设备。

四、cubeMX 配置工程

  1. 首先创建工程。
    stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX
  2. 选择芯片,开始创建工程。
    stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX
  3. 设置 SYS 模块,选择串行线。
    stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX
  4. 选择晶体共振。
    stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX
  5. 将 PB4 引脚设置为 gpio 输出口。
    stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX
  6. 设置时钟频率。
    直接设置为 最大频率 72 ,然后双击 enter 即可。
    stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX
  7. 设置工程的名字,工具链选择 MDK。
    stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX
  8. 点击自动生成 .c / .h 文件。
    . stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX
  9. 点击生成即可。
    这样就可以生成 keil 的工程文件。
    stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX

五、解读 cubeMX 生成的代码

cubeMX 会自动生成 GPIO 初始化的代码。
stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX
代码解析

  1. 首先创建一个 GPIO 变量。
GPIO_InitTypeDef GPIO_InitStruct = {0};
  1. GPIO 引脚的使能。
    可以看到这里分别使能了 GPIOA , GPIOB , GPIOD 端口。
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  1. 设置 GPIO 中PB4 引脚的输出电平。
    这里设置的是输出低电平 GPIO_PIN_RESET。
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET);
  1. 设置 GPIO 端口的引脚号,模式,上拉电阻,速度。
  GPIO_InitStruct.Pin = GPIO_PIN_4;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;  
  1. 初始化引脚设置。
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

六、延时函数

__weak void HAL_Delay(uint32_t Delay);

uint32_t Delay :表示要延时时间,以毫秒(ms)为单位。这是一个无符号的 32 位整数。
__weak :是一个弱符号。

七、控制引脚状态函数

  1. GPIO 写函数:
    用于设置指定 GPIO 引脚输出状态。
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState
PinState);

参数解释

  • GPIOx : 这是一个指向 GPIO_TypeDef 结构体的指针,指定了要控制的GPIO端口,例如GPIOA、GPIOB等。

  • GPIO_Pin : 这是一个16位的整数,指定要设置的特定引脚。可以使用宏定义来指定要控制的引脚,例如GPIO_PIN_0,GPIO_PIN_1,GPIO_PIN_2等。

  • PinState : 这是一个枚举类型 GPIO_PinState,用于指定要写入的引脚状态。它有两个可能的值:GPIO_PIN_RESET和GPIO_PIN_SET,分别代表引脚输出低电平和高电平。

  1. GPIO 翻转函数:
    这里的函数参数 和 写函数的参数大致相同,可以参考 HAL_GPIO_WritePin 函数 。
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

点亮 LED

在 工程的 while 函数中使用 写函数 HAL_GPIO_WritePin 点亮 LED.

tips:
可以讲代码写在 BEGIN 和 END 之间,这样当我们重新生成代码时 就不会造成代码销毁。
stm32cube 点亮led,STM32F103C8T6教程,stm32,嵌入式硬件,单片机,led,cubeMX

八、GPIO 的工作模式

GPIO的8种工作模式:

  1. 输入模式(Input Mode):GPIO引脚被配置为输入模式时,它可以接收外部设备发送的信号。引
    脚可以检测输入信号的高电平或低电平,并将其转换为数字值供系统使用。
  2. 输出模式(Output Mode):GPIO引脚被配置为输出模式时,它可以向外部设备发送信号。系统
    可以控制引脚输出的高电平或低电平,从而控制外部设备的行为。
  3. 推挽输出模式(Push-Pull Output Mode):在推挽输出模式下,GPIO输出引脚可以提供强驱动
    电平。引脚在高电平和低电平之间切换,可以提供较低的输出电阻,适合驱动较重的负载。
  4. 开漏输出模式(Open-Drain Output Mode):在开漏输出模式下,GPIO输出引脚变为开漏输
    出。引脚在低电平时为接地(GND)连接,而在高电平时处于高阻态。这种模式适合与其他开漏设
    备或外部上拉电阻结合使用。
  5. 复用输入模式(Alternate Function Input Mode):GPIO引脚可以配置为复用输入模式,用于
    接收外部信号并执行特定功能。在此模式下,引脚还可以用于其他功能,例如定时器输入或串行通
    信接口。
  6. 复用输出模式(Alternate Function Output Mode):GPIO引脚可以配置为复用输出模式,用
    于将特定功能的输出信号发送到外部设备。在此模式下,引脚还可以用于其他功能,例如PWM输
    出或串行通信接口。
  7. 模拟模式(Analog Mode):有些GPIO引脚支持模拟模式,可以用于连接模拟电路,例如传感器
    或音频设备。在模拟模式下,引脚可以输入或输出连续的模拟电信号。
  8. 中断模式(Interrupt Mode):GPIO引脚可以配置为中断模式,以便在引脚状态发生变化时触发中断。这允许系统在无需不断轮询GPIO状态的情况下,对引脚的变化进行响应。

九、为什么使用推挽输出驱动 LED

  1. 推挽输出可以提供稳定的高电平和低电平。
  2. 能够提供较高的输出电流能力。
  3. 可以连接到 LED,为不需要外部的电流限制电阻。
  4. 适用于数字信号的控制。

总结

下一篇文章将继续为大家介绍 STM32F103C8T6 使用 cubeMX 通过 按键 点亮 led。文章来源地址https://www.toymoban.com/news/detail-792705.html

到了这里,关于最详细STM32,cubeMX 点亮 led的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • [初学单片机]stm32f103C8T6最小系统板快速完成点亮led灯

    目录 一、准备工作 二、建立工程模板 三、配置keil5 四、程序 五、程序下载(烧录)  六、总结 ① keil5,自行下载安装; ② 库函数包,这里我上传了一个F1xx的库函数包,可以在建立工程模板的时候用到;1,STM32F1xx固件库.rar - 蓝奏云 ③ STM32F103C8T6最小系统班,淘宝十几块;

    2024年02月01日
    浏览(43)
  • STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯

    STM32F103C8T6基础开发教程(HAL库)—开发环境配置 STM32F103C8T6基础开发教程(HAL库)—Keil添加注释的快捷键 STM32F103C8T6基础开发教程(HAL库)—点亮第一颗LED灯 STM32F103C8T6基础开发教程(HAL库)—LED灯交替闪烁 STM32F103C8T6基础开发教程(HAL库)—LED灯呼吸闪烁 STM32F103C8T6基础开发

    2024年01月18日
    浏览(46)
  • STM32 F103C8T6学习笔记2:GPIO的认识—GPIO的基本输入输出—点亮一个LED

    今日继续学习使用  STM32 F103C8T6开发板 点亮一个LED灯,文章提供源码,测试工程,实验效果图,希望我的归纳总结会对大家有帮助~ 目录 GPIO的认识与分类 : 引脚安排整理: 定时器的引脚例举: 串口的引脚例举:  CAN串口通信: SPI通信: IIC通信:  其余引脚: 烧录引脚:

    2024年02月11日
    浏览(34)
  • 基于STM32F103C8T6以USB to TTL 和 ST-LINK V2两种方式点亮LED小灯泡

            所需设备:                 1、STM32F103C8T6;                 2、USB 转 TLL 或 ST-LINK V2 01-0;                 3、杜邦线若干;                 4、面包板1个;                 5、USB安卓数据线(使用USB 转 TLL需要用到);         1、首先需要建

    2024年02月03日
    浏览(36)
  • Openmv+STM32F103C8T6视觉巡线小车

    机器视觉巡线处理是参考openmv官方代码 Openmv官网源代码:book. openmv.cc/project/follow-lines.html 根据官网视频及教程将源码注入openmv中。 小车巡的是黑线,所以颜色阈值要更改。 在文件示例中打开helloworld.py。 打开工具/机器视觉/阈值编辑器/缓冲区。 将我们需要寻迹的黑线调至全

    2023年04月09日
    浏览(44)
  • SG90舵机的使用--STM32F103C8T6

    SG90带有一个3P的接头 根据颜色分为 黄线(信号线) 红线(电源线) 棕色 (地线) 舵机的 工作电压 在 4.8V-6V ,接在STM32系统板上驱动不了,所以需要接电源模块单独的5V供电,我使用的是如图所示的电源模块 注: 如果STM32系统板供电和舵机供电不为同一模块,则需要共地,

    2024年02月03日
    浏览(34)
  • STM32---stm32f103c8t6与stm32f103zet6之间的代码移植转换

    目录 一、将c8t6转换为zet6 1、修改启动文件 2、修改芯片 3、将MD修改为HD  4、下载器的修改 5、修改完成,编译成功  二、将zet6转换为c8t6 最终结果如下:   将STM32F103C8改为STM32F103ZE   基本相同,反向即可。    

    2024年02月06日
    浏览(46)
  • [附源码] STM32F103C8T6+外接MCP4725 外部DAC

            STM32F103C8T6最小系统板是大家很常用的一款单片机,它内部有多个ADC模数转换通道,但并 没有DAC数模转换功能 ,当需要进行数字量转换为模拟量时就需要借助外部DAC。             MCP4725是具有非易失性存储器的单通道12位缓冲电压输出DAC。用户可将配置寄存器

    2024年02月04日
    浏览(35)
  • STM32CubeIDE使用示例(STM32CubeMX+STM32CubeIDE+Gcc+JLINK+STM32G030C8T6)

    本文简单记录下STM32CubeIDE的使用方法,整体的环境是STM32CubeMX+STM32CubeIDE+Gcc+JLINK+STM32G030C8T6,实现的简单测试功能是让STM32G030C8T6板子上的LED闪烁,以STM32G030C8T6 PB4 脚做LED 输出闪烁为例,外部8MHZ 晶振,系统主频64MHZ,LED 灯1 秒钟闪烁一次做一个示例程序; 1、我这边已经装好了ST

    2024年02月15日
    浏览(35)
  • MQ2烟雾传感器 - STM32F103C8T6-HAL库

    ADC.c 文件 ADC.h文件 main函数中的调用

    2024年04月26日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包