IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> (HAL库)STM32单片机基础01——使用GPIO点亮一个LED -> 正文阅读

[嵌入式](HAL库)STM32单片机基础01——使用GPIO点亮一个LED

(HAL库)STM32单片机基础01——使用GPIO点亮一个LED

第一次写博客啦,不足的地方大家评论区尽管提。好了,进入正文啦。

本文的写作模板参考了一位博主Mculover666

本文章主要介绍如何利用CUBEMX结合HAL库,对GPIO进行配置,生成MDK工程,再编写程序使得对应引脚的输出一个低电平,通过三极管通断作用,电流将通过LED,从而发光,再利用延时,实现流水灯效果。

1.准备工作

硬件准备

  • 开发板

我们这次使用的是正点原子精英开发板,对应的芯片为STM32F103ZET6。开发板自带LED灯。
在这里插入图片描述

  • 仿真器

我们这次使用的是正点原子ST-link。

软件准备

  • STMCUBEMX软件,且安装了F1的HAL库函数资源包。

那就附上链接吧

CUBEMX(需要自己在软件上下载库,和更新软件):
链接:https://pan.baidu.com/s/19DYNahQlMuCWWCHAUQ5nhg
提取码:ue6j

知识准备

LED即发光二极管,当LED内有电流通过时会发光,在安全电流范围内,电流越大,亮度越亮。

2.生成MDK工程

选择芯片型号

打开STM32CUBEMX,打开MCU选择器

使用STM32CUBEMX,可以键盘全程大写锁定,比较方便

在这里插入图片描述
搜索并选择芯片STM32F103ZET6;

在这里插入图片描述

配置时钟源

  • 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC

一般都选用外部高速时钟(HSE),单片机上一般焊接有晶振

  • 如果使用默认内部时钟(HSI),这一步可以略过;

这里我一般使用外部时钟:

在这里插入图片描述

配置仿真器

选择SYS,在Debug下拉框中选择Serial Wire

在这里插入图片描述

配置GPIO引脚

查看正点原子精英开发板的原理图,如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
所以接下来我们选择配置LED引脚,通过原理图可以看出二个LED灯的引脚为PB5,PE5,这里我们只配置一个,选择PB5引脚:

在这里插入图片描述
配置GPIO参数:

在Cubemx中配置GPIO为输出模式,在cubeMX找到对应引脚,配置成GPIO_Output模式。

在这里插入图片描述

  • GPIO output level :引脚上电默认电平

由原理图可知上电默认高电平,LED 灯不亮。

  • GPIO mode : GPIO输出模式
    Output Push Pull : 推挽输出模式
    Output Open Drain : 开漏输出模式

  • GPIO Pull-up/Pull-down : 上拉,下拉输出模式

  • Maximum output speed : 引脚最大切换速度

  • User Label : 用户标签

与开发板一致即可,方便编写代码
主要用于在main.h中产生相应的宏名,以及在GPIO拓扑图中显示引脚名称

配置时钟树

STM32F1的最高主频到72M,所以配置PLL,最后使HCLK = 72Mhz即可:

在这里插入图片描述

生成工程配置

在这里插入图片描述

代码生成设置

最后设置生成独立的初始化文件,方便查找,编写代码:
在这里插入图片描述

生成工程

最后点击右上角GENERATE CODE按键,生成MDK-V5工程文件。
在这里插入图片描述

生成成功

在这里插入图片描述

3. 在MDK中编写、编译、下载用户代码

编写用户代码

STM32CubeMX生成的代码文件夹目录如下:

在这里插入图片描述

进入MDK-ARM目录,打开工程,今天先介绍一下main.c文件:

在这里插入图片描述

注意:

用户编写的代码都要写在类似

/* USER CODE BEGIN 1 */
/* USER CODE END 1 */

之间,不然下一次使用Cubemx生成工程会被删除

在main.c中的main函数中编写简单的用户代码:

 /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);     //翻转GPIO电平
		HAL_Delay(1000);                                  //延时1000ms
  }
  /* USER CODE END 3 */
}

编译、下载用户代码

先编译,后下载:

下载时,注意仿真器是否为ST-link,不是的话,自行更改设置

在这里插入图片描述

4. 实验现象

单片机上面的灯点亮和熄灭循环进行,时间都为1s。

在这里插入图片描述

至此,我们已经学会了如何使用STM32CubeMX快速生成MDK的工程,点亮一个LED。此教程基本上适用于大部分单片机,大家可以自己写一遍。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 12:14:17  更:2021-07-26 12:15:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 10:00:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计