初始化GPIO流程 以及点亮LED

news2024/11/25 23:02:24

点亮LED 需要单片机上的GIPIO端口引脚 输出对应的电压来对LED进行点亮 ,关于GPIO的初始化流程其实我们只需要牢牢记住这张图即可
具体参考: https://blog.csdn.net/k666499436/article/details/123971479
在这里插入图片描述

1. GPIO的初始化 流程

  1. 使能时钟

    • 在stm32中, 每个GPIO 端口都有一个与之对应的时钟线,在使用GPIO之前,必须使能其时钟,通常 通过修改RCC(Reset and Clock Control) 相关的寄存器来实现
  2. 配置GPIO的引脚模式

    • 根据需要选择对应的输出模式 ,比如 输入模式(GPIO_Mode_IN)、输出模式(GPIO_Mode_OUT)、模拟模式(GPIO_Mode_AN)
  3. 设置输出类型(有图选择输出模式的话就是走下面的部分)

    • 如推挽输出(GPIO_OType_PP)或开漏输出(GPIO_OType_OD)。
  4. 配置引脚速度

    • 设置GPIO引脚的输出速度。这可以是低速(GPIO_Speed_2MHz)、中速(GPIO_Speed_25MHz)、高速(GPIO_Speed_50MHz)或非常高速(GPIO_Speed_100MHz)
  5. 配置上拉/下拉电阻

    • 选择是否需要内部上拉 (GPIO_PuPd_UP)或下拉(GPIO_PuPd_DOWN)电阻,或者无上拉下拉(GPIO_PuPd_NOPULL)。
  6. 初始化GPIO的引脚

    • 选择对应需要的引脚
  7. (可选)配置中断:

  • 如果需要,配置GPIO引脚以触发中断。这通常涉及到中断优先级,设置以及中断处理函数的编写。
  1. (可选)配置替代功能:
  • 如果GPIO引脚被用作替代功能(如用于USART、SPI或I2C通信),还需要配置替代功能寄存器(AFR)来选择具体的外设功能。

2. 代码


#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
/*使用32控制 gpiob-> pin_8 引脚 */

void delay(uint32_t time) ;
int main()
{     

      //使能时钟
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);


      GPIO_InitTypeDef GPIO_InitStruct ; 
      GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8 ; 
      GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT ; 
      GPIO_InitStruct.GPIO_OType = GPIO_OType_PP ; 
      GPIO_InitStruct.GPIO_PuPd =  GPIO_PuPd_UP ; 
      GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz ; 

      //GPIO 初始化
     GPIO_Init(GPIOB,  &GPIO_InitStruct);

    //寄存器输出 
    //  void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    // void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);   
    while(1)
    {
    //清除ODR寄存器中的对应位来将GPIOB的8号引脚清零(设置为低电平)
      GPIO_ResetBits(GPIOB ,  GPIO_Pin_8 ) ; 
      delay(1000); 
     // 在BSRR寄存器中写入对应的位,将GPIOB的8号引脚设置为高电平。
      GPIO_SetBits(GPIOB ,  GPIO_Pin_8 ) ; 
      delay(1000); 
    } 
}
void delay(uint32_t time)
{
  uint32_t i , j ; 
  for(i = 0 ; i < time ; i++)
  {
    for(j = 0 ; j < 0xfff ; j++)
    { }
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1255340.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Simulink 的代数环

代数环, 就是由于模型的输出反馈到模块或子系统先的某个输入端, 如果这个输入是直接馈入的, 那么二者在同一个采样点内需得到求解, 但又互相依赖, 哪一方都不能完成求解过程, 使得解算器无法解算导致错误产生, 这样的情况称为代数环。 一旦 Simulink 遇到代数环, 将根据 Confi…

个人成长|信奉长期主义,就要多做可积累有复利的事。

哈喽啊&#xff0c;大家好&#xff0c;我是雷工&#xff01; 最近有个哥们儿吐槽&#xff0c;说他们公司人事找他谈话&#xff0c;要给降工资&#xff0c;他不同意。 过了没几天又说&#xff1a; “定了&#xff0c;全员降薪”。 “你同意了&#xff1f;” “不同意&#xff0…

2017年五一杯数学建模A题公交车排班问题解题全过程文档及程序

2017年五一杯数学建模 A题 公交车排班问题 原题再现 随着徐州市经济的快速发展&#xff0c;公交车系统对于人们的出行扮演着越来越重要的角色。在公交车资源有限的情况下&#xff0c;合理的编排公交车的行车计划成为公交公司亟待解决的问题。以下给出公交车排班问题中的部分名…

python环境搭建-yolo代码跑通-呕心沥血制作(告别报错no module named torch)

安装软件 安装过的可以查看有没有添加环境变量 好的! 我们发车! 如果你想方便快捷的跑通大型项目,那么必须安装以下两个软件: 1.pycharm2.anaconda对应作用: pycharm:专门用来跑通python项目的软件,相当于一个编辑器,可以debug调试,可以接受远程链接调试!anaconda:专…

OpenGL 自学总结

前言&#xff1a; 本人是工作后才接触到的OpenGL&#xff0c;大学找工作的时候其实比较着急&#xff0c;就想着尽快有个着落。工作后才发现自己的兴趣点。同时也能感觉到自己当前的工作有一点温水煮青蛙的意思&#xff0c;很担心自己往后能力跟不上年龄的增长。因此想在工作之余…

DL Homework 8

目录 习题5-2 证明宽卷积具有交换性&#xff0c; 即公式(5.13)&#xff0e; 习题5-4 对于一个输入为100 100 256的特征映射组&#xff0c; 使用3 3的卷积核&#xff0c; 输出为100 100 256的特征映射组的卷积层&#xff0c; 求其时间和空间复杂度&#xff0e; 如果引入一…

CentOS7部署FTP服务器

首先准备一台centos7虚拟机&#xff0c;作为服务器IP地址必须是固定的。 vim /etc/sysconfig/network-scripts/ifcfg-ens33配置内容如下&#xff1a; TYPE"Ethernet" PROXY_METHOD"none" BROWSER_ONLY"no" BOOTPROTO"static" DEFROU…

服务器下db(数据库)的执行

1、查看 select * from xxxx&#xff08;表名&#xff09; where xxx&#xff08;列表&#xff09;1 and.......正常写就行 2、插入 如果你想要在 SELECT INSERT INTO … SELECT 语句中将部分列保持不变,只改变一两列的值,可以在 语句中直接设置目标列的值,而其他列从源表中…

KubeVela核心控制器原理浅析

前言 在学习 KubeVela 的核心控制器之前&#xff0c;我们先简单了解一下 KubeVela 的相关知识。 KubeVela 本身是一个应用交付与管理控制平面&#xff0c;它架在 Kubernetes 集群、云平台等基础设施之上&#xff0c;通过开放应用模型来对组件、云服务、运维能力、交付工作流进…

王者荣耀,,,,,

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;…

Linux中vi常用命令-批量替换

在日常服务器日志查看中常用到的命令有grep、tail等&#xff0c;有时想查看详细日志&#xff0c;用到vi命令&#xff0c;记录下来&#xff0c;方便查看。 操作文件&#xff1a;test.properites 一、查看与编辑 查看命令&#xff1a;vi 文件名 编辑命令&#xff1a;按键 i&…

Go 语言 Printf 函数和格式化动词详解

Printf() 函数可以使用多种格式化动词对输出进行格式化。下面是可以与所有数据类型一起使用的一些通用格式化动词&#xff1a; 通用格式化动词&#xff1a; 以下动词适用于所有数据类型&#xff1a; 动词描述%v以默认格式打印值%#v以 Go 语法格式打印值%T打印值的类型%%打印百…

帮管客CRM 文件上传漏洞复现

0x01 产品简介 帮管客CRM是一款集客户档案、销售记录、业务往来等功能于一体的客户管理系统。帮管客CRM客户管理系统&#xff0c;客户管理&#xff0c;从未如此简单&#xff0c;一个平台满足企业全方位的销售跟进、智能化服务管理、高效的沟通协同、图表化数据分析帮管客颠覆传…

(三) Windows 下 Sublime Text 3 配置Python环境和Anaconda代码提示

一&#xff1a;新建一个 Python3.7 编译环境。 1 Tools--Build System--New Build System... 修改前&#xff1a; 修改后&#xff1a; 内容&#xff1a; {"cmd":["C:\\Python\\Python37-32\\python.exe","-u","$file"],"file_r…

JAVA小游戏简易版王者荣耀

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;…

2023年初中生古诗文大会复选最后6天备考策略和更新的在线模拟题

今天是2023年11月26日&#xff0c;星期日&#xff0c;距离2023年第八届上海市中学生古诗文大会复选&#xff08;复赛&#xff09;还有六天&#xff08;2023年12月2日上午举办&#xff09;&#xff0c;相信各位晋级的小学霸们正在繁忙的学业之余抓紧备考。 为了帮助孩子们更有效…

GLP-1 , GLP-1R

-- 6VCB_GLP-1R G_protein, GLP-1 peptidea positive allosteric modulator

UE5人物残影学习(材质实现)

学习视频 UE4简单的材质球残影人教学&#xff0c;你学会了吗&#xff01;_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1rY411q7Yb/?spm_id_from333.788.top_right_bar_window_history.content.click 结果预览 1.创建残值&#xff0c;混合模式勾选半透明 “混合模…

【hacker送书第3期】OpenCV轻松入门:面向Python(第2版)

第3期图书推荐 内容简介作者简介图书目录专家推荐参与方式 内容简介 本书基于面向 Python 的 OpenCV(OpenCV for Python)&#xff0c;介绍了图像处理的方方面面。本书以 OpenCV 官方文档的知识脉络为主线&#xff0c;并对细节进行补充和说明。书中不仅介绍了 OpenCV 函数的使用…

基于51单片机的智能垃圾桶硬件设计

**单片机设计介绍&#xff0c; 基于51单片机的智能垃圾桶硬件设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的智能垃圾桶设计旨在通过传感器和控制电路实现智能化的垃圾桶功能。下面是一个简要的硬件设计介绍&…