野火STM32F4学习笔记1——GPIO输出,固件库点亮LED

2023-05-16

引言

在STC51的学习中, 程序代码往往是采用寄存器编程来编写的, 而在STM32的学习中,代码往往采用固件库编程来编写。

固件库编程是在寄存器编程的基础上升级而来的一种易于学习和开发的编程方式,是我们学习 STM32 编程的时候需要重点掌握的一种编程方法。

1. 硬件电路

打开 .\2-开发板原理图\野火_F407霸天虎 _原理图_V2.0.pdf
在第10页可以看到LED部分的原理图, 如下:在这里插入图片描述
可以看到, 开发板上的小灯是由3个LED组成的。 红、绿、蓝三色小灯分别对应着STM32的PF6、PF7、PF8引脚,只要我们控制 GPIO 引脚的电平输出状态,即可控制 LED 灯的亮灭。

2. 建立工程

套用野火新建固件库的模板, 完成初始工程的建立。

之后我们在“USER”文件夹中新建“LED”文件夹, 再在“LED”文件夹下建立“bsp_led.c”及“bsp_led.h”文件, “LED”文件夹下的库不属于STM32标准库的内容, 是我们根据自己的需要自己编写的。

打开Keil, 我们将“bsp_led.c”文件添加到工程中的USER中去,再在“Options for Target”中把“bsp_led.h”的路径添加进去,这样就不用在USER中添加“bsp_led.h”了。在这里插入图片描述
在这里插入图片描述

3. 编写代码

/*********************** bsp_led.h程序源代码 *************************/

#ifndef _BSP_LED_H
#define _BSP_LED_H

#include "stm32f4xx.h"

/* Define the Pin */
#define LED1_PIN	GPIO_Pin_6                 

void LED_GPIO_Config(void);

#endif  /*  _BSP_LED_H  */


/*********************** bsp_led.c程序源代码 *************************/

#include "bsp_led.h"

void LED_GPIO_Config(void)
{ 
    /* Step 1: Enable the GPIO clock */
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);

    /* Step 2: Define the GPIO initialization structure*/
    GPIO_InitTypeDef GPIO_InitStruct;
    
    /* Step 3: Configure the members of GPIO initialize structure */
    GPIO_InitStruct.GPIO_Pin    = LED1_PIN;
    GPIO_InitStruct.GPIO_Mode   = GPIO_Mode_OUT;
    GPIO_InitStruct.GPIO_OType  = GPIO_OType_PP;
    GPIO_InitStruct.GPIO_Speed  = GPIO_Low_Speed;
    GPIO_InitStruct.GPIO_PuPd   = GPIO_PuPd_UP;

    /*Step 4: Invoke the GPIO initialization function to write the parameters of the structure members to the register*/
    GPIO_Init(GPIOF, &GPIO_InitStruct);
    
}

/************************** main.c程序源代码 **************************/

#include "stm32f4xx.h"
#include "bsp_led.h"

void Delay(uint32_t cnt);

int main(void)
{
  	LED_GPIO_Config();

  while (1)
  {
		GPIO_ResetBits(GPIOF, LED1_PIN);		// Set the pin to zero.
		Delay(0xFFFFFF);
		GPIO_SetBits(GPIOF, LED1_PIN);
		Delay(0xFFFFFF);
  }
}


/* simple delay function */
void Delay(uint32_t cnt)
{
  for(; cnt!=0; cnt--);
}

将程序下载到开发板当中, 我们可以看到小灯不断的在闪烁。
至此,我们的小灯就被点亮啦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

野火STM32F4学习笔记1——GPIO输出,固件库点亮LED 的相关文章

  • 【暑期每日一题】洛谷 P1605 迷宫

    题目链接 xff1a P1605 迷宫 洛谷 计算机科学教育新生态 luogu com cn 题目描述 给定一个 N M 方格的迷宫 xff0c 迷宫里有 T 处障碍 xff0c 障碍处不可通过 在迷宫中移动有上下左右四种方式 xff0c
  • 关于外网访问本地服务器

    我在网上查到的外网访问本地服务器的方式有两种 xff1a 第一种是通过内网穿透的技术实现的 第二种是通过申请域名 xff0c 申请空间 xff0c 申请云服务器 xff0c 搭建网站实现的 内网穿透的方式实现外网访问本地服务器 选择合适的内
  • Python基础知识点-- if 语句

    此文章为Python基础知识点 xff08 从入门到实践 xff09 if 语句 xff0c 此节Python基础知识点包括 xff1a 条件测试 if 语句 使用if 语句处理列表 设置 if 语句格式 目录 一 条件测试 1 1 检查是
  • SecureCRT 上传文件

    目录 一 xff0e 用SecureCRT来上传和下载文件 1 在使用SecureCRT上传下载之前需要给服务器安装lrzsz xff1a 2 命令sz rz的使用方法 xff1a 3 设置上传 下载文件的默认目录 二 使用TFP上传 一
  • 【错误解决】Segmentation fault (core dumped)爆栈解决

    大家好 xff0c 我是编程的赛赛 xff0c 专注于保姆级代码教程 说明 Segmentation fault core dumped 这个错误在Linux下运行程序时出现的原因多种多样 xff0c 本质大多是内存操作错误 xff0c 以
  • Debian10自签CA证书

    基础知识 1 3思路 想构建CA必须要了解CA构建的情况 请先参照加密解密方面博客 简单思路如下 构建私有CA 生成私钥 自签署证书 2 给节点发放证书 节点申请证书 生成私钥 生成证书签署请求 把请求文件发送给CA 3 CA签署证书 验正
  • Debian10安装教程

    Debian 10 Buster 安装过程图文详解 360doc com nbsp 需求 nbsp 步骤 由于比赛是最小安装 这里我们选择第二项 第一项是图像化界面 第二项是字符界面 语言 nbsp 根据赛题要求 这里选择语言为Englis
  • Questa-sim安装最后一步点了是之后,安装了hardlock.sys文件导致电脑无限蓝屏重启的解决方案

    学习FPGA xff0c 需要安装Questa sim仿真软件 xff0c 没有提前看安装教程 xff0c 在软件安装的最后一步 xff0c 本应该点击否 xff0c 我点了是以后电脑直接蓝屏无限重启 xff0c 真是反人类的设计 xff1
  • 用定时器计数器计算初值

    只需要输入晶振频率 定时时长和计时方式 一般选择方式1 即可 如晶振为12MHz 定时时长为50ms 方式1 xff0c 即可计算出初值为3CB0 xff0c 如下图所示 总结 xff1a 定时器在单片机有着极其重要的作用 xff0c 利用
  • Linux系统管理---xfs文件系统--centos7

    目录 一 XFS文件系统 xff1a 1 数据区 xff08 data section xff09 2 文件系统活动登录区 xff08 log section xff09 3 实时运行区 xff08 realtime section xff
  • 中文code:blocks安装(三分钟包安装成功,不成功你找我)

    目录 一 下载code bocks压缩包并解压 a 百度网盘下载压缩包 xff08 不需安装了 xff09 b 创键快捷方式并拉到桌面 二 一步完成汉化 xff0c 两步完成调试环境 a 打开上面创建在桌面上的快捷方式 b 一步汉化 c 两
  • 2021-2022年度第三届全国大学生算法设计与编程挑战赛(冬季赛)题解(7道题)

    只有 xff1a B xff0c D xff0c E xff0c G xff0c I xff0c K xff0c L 正文 B xff1a 题目链接 Error 题目 xff1a 思路 xff1a 二分 二分给出一个d xff0c 先考虑第
  • mysql jar包下载(直接链接下载)

    mysql connector java 8 0 23 jar的下载链接 xff1a mysql jar包下载 服务器一年后过期 xff0c 过期的话先用百度网盘下载吧 链接 xff1a https pan baidu com s 187w
  • Druid-1.1.12.jar下载 (链接下载+使用)

    链接下载 xff1a 下载链接 不行的话用网盘下载 网盘下载 xff1a 链接 xff1a https pan baidu com s 1VUvRj VuxCDd3fb uvA8Q pwd 61 1111 提取码 xff1a 1111 下载
  • 第十三届蓝桥杯c++b组2022年国赛决赛题解

    写的不是很好 xff0c 8000 43 浏览量后开的粉丝可见 xff0c 希望涨一点点粉 觉得还阔以的 xff0c 就不要取关了Fight xff4f 39 39 题目pdf下载 xff1a 第十三届蓝桥杯大赛软件赛决赛pdf下载 G题没
  • OpenWrt 设置IP地址

    注 本文是基于Ubuntu14 04 43 Openwrt17 01开发的教程 5 1在开发板上设置IP 由于我们在开发过程中 xff0c 可能会用到其他路由器 xff0c 而它们的IP一般都是192 168 1 1 xff0c 为了让开发
  • java打包成exe(带图片,不放大)

    目录 一 如何把java程序打包成exe文件 二 过程 二 1 如何将java程序打包成jar包 二 2 如何使用软件exe4j将jar包打包成exe文件 三 如何在打包的时候带上图片和音乐 四 如何打包后不放大 五 如何把exe文件发送给
  • 【华为OD机试真题java、python、c++、jsNode】匿名信(100%通过+复盘思路)

    nbsp nbsp 代码请进行一定修改后使用 本代码保证100 通过率 本文章提供java python c jsNode四种代码 复盘思路在文章的最后 题目描述 电视剧 分界线 里面有一个片段 男主为了向警察透露案件细节 且不暴露自己 于
  • 第十四届蓝桥杯javaA组2023年省赛初赛题解

    题目pdf下载 xff1a 第十四届蓝桥杯省赛pdf下载 目录 试题 A 特殊日期 试题 B 与或异或 试题 C 平均 试题 D 棋盘 试题 E 互质数的个数 试题 F 阶乘的和 试题 G 小蓝的旅行计划 试题 H 太阳 试题 I 高塔 试
  • JsNode算法题acm模式输入

    js分为jsNode和JsV8两种输入输出方式 xff0c 一般的执行代码还是一样的 牛客是两种都支持 华为的题目大多只支持jsNode 本文主要介绍jsNode的输入 JsNode 首先他是逐行输入的 xff0c 就和py差不多 xff0

随机推荐