常用的GPIO的配置(基于STM32F103C8xx)

绿色:注释                紫色:实际使用代码

//开启GPIOB的时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);        
①可选输入值:RCC_APB2Periph_GPIOA 或者 RCC_APB2Periph_GPIOB 或者 RCC_APB2Periph_ALL
②可选输入值:ENABLE 或者 DISABLE

/*GPIO初始化*/
/*typedef struct
{
    uint16_t GPIO_Pin;                                                                  
    GPIOSpeed_TypeDef GPIO_Speed;                                                       
    GPIOMode_TypeDef GPIO_Mode;                                                         
}GPIO_InitTypeDef;  */                    

//定义于文件“stm32f10x_gpio.h”,不需要添加!!!结构体类型(类似int的用法),用于配置STM32微控制器的GPIO端口的初始化参数

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

/*

GPIO_Mode_AIN         //模拟输入:GPIO无效,引脚直接接入内部ADC
GPIO_Mode_IN_FLOATING //浮空输入:可读取引脚电平,若引脚悬空,则电平不确定;一般实际运用时,引脚不建议悬空,易受干扰。 通俗讲就是让管脚什么都不接,浮空着
GPIO_Mode_IPD         //下拉输入:可读取引脚电平,内部连接下拉电阻,悬空时默认低电平
GPIO_Mode_IPU         //上拉输入:可读取引脚电平,内部连接上拉电阻,悬空时默认高电平
GPIO_Mode_Out_OD  //开漏输出:可输出引脚电平,高电平为高阻态,低电平接VSS
GPIO_Mode_Out_PP   //推挽输出:可输出引脚电平,高电平接VDD,低电平接VSS
GPIO_Mode_AF_OD    //复用开漏输出:可以理解为GPIO口被用作第二功能时的配置情况,高电平为高阻态,低电平接VSS
GPIO_Mode_AF_PP     //复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况,高电平接VDD,低电平接VSS            

*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_8 | GPIO_Pin_5 | GPIO_Pin_4 | GPIO_Pin_3;   //选择待设置的 GPIO 管脚,使用操作符“|”可以一次选中多个管脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/*GPIO_Speed_10MHz 最高输出速率 10MHz 
  GPIO_Speed_2MHz 最高输出速率 2MHz
  GPIO_Speed_50MHz 最高输出速率 50MHz*/

GPIO_Init(GPIOB, &GPIO_InitStructure);

/*设置GPIO初始化后的默认电平*/
GPIO_SetBits(GPIOB, GPIO_Pin_9 | GPIO_Pin_8);//设置指定的数据端口位,给PB8、PB9高电平:1
GPIO_ResetBits(GPIOA, GPIO_Pin_6 | GPIO_Pin_7);//清除指定的数据端口位,给PA6、PA7低电平:0

GPIO_WriteBit(GPIOA, GPIO_Pin_9 | GPIO_Pin_8, Bit_SET);

//设置或者清除指定的数据端口位  
Bit_RESET: 清除数据端口位 0
Bit_SET:   设置数据端口位 1

GPIO_Write(GPIOB, ~0x0008);  //写入端口输出数据寄存器的值  

可以一次将GPIO中16个IO进行高低电平赋值    ~:取反

GPIO_DeInit(GPIOA);                         //可以使GPIOA复位

GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);   //给结构体变量赋一个默认值

GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0);     //读取指定端口管脚的输入
GPIO_ReadInputData(GPIOB);                                //读取指定的 GPIO 端口输入
GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_0);  //读取指定端口管脚的输出
GPIO_ReadOutputData(GPIOB);                            //读取指定的 GPIO 端口输出

/*      实例:LED取反
if (GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0) == 0)
{
    GPIO_SetBits(GPIOA, GPIO_Pin_0);
}
else
{
    GPIO_ResetBits(GPIOA, GPIO_Pin_0);
}
*/

//锁定 GPIO 管脚设置寄存器

GPIO_PinLockConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1);                

//选择 GPIO 管脚用作事件输出
GPIO_EventOutputConfig(GPIO_PortSourceGPIOC, GPIO_PinSource6); 

 //使能或者失能事件输出
GPIO_EventOutputCmd(ENABLE 或者 DISABLE);

//改变指定管脚的映射                
GPIO_PinRemapConfig(uint32_t GPIO_Remap, ENABLE 或者 DISABLE);      

//选择 GPIO 管脚用作外部中断线路          
GPIO_EXTILineConfig(GPIO_PortSource_GPIOB, GPIO_PinSource8);                  

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【云原生】恰当运用kubernetes中三种探针,确保应用程序在Kubernetes集群中保持健康、可用和可靠

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

电脑录屏软件免费版,分享4款,轻松录制精彩瞬间

电脑录屏已成为创作、教学和分享的热门方式。然而,对于一些用户来说,购买专业的录屏软件可能会增加负担。幸运的是,市场上存在许多电脑录屏软件免费版的选择。它们提供了丰富的功能,让您可以尽情展现您的创意,无须为此…

蝙蝠避障:盲人出行的守护者,让每一步都安心

在这个多彩的世界里,作为一位盲人,我时常感受着出行的种种挑战。每一次踏出家门,都是一场未知的探险,心里难免有些忐忑。街道上的车流声、人群的喧闹,这些对我而言只是模糊的背景音,真正让我担忧的是那些突…

Python对腾讯课程视频链接自动化抓取

近期看到腾讯课堂停服的通知,心痛之余,想到啊,我还有很多课程没看完,就剩下两个月的事件,我也来不及看完了。怎么办? 索性,我研究下,怎么把视频保存下来。 接下来请听我分析。 所…

KMZ格式详解,javascript写入读取KMZ示例

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

SAP中检质操作原因导致的WM和MM库存状态不一致实例分析处理

近期遇到一个问题描述如下: 某个物料通过MM的库存查询MMBE,结果是没有质检库存的。但通过WM的库存查询事务LS24,结果是有Q状态(即质检库存)的。 不明原因的用户可能会认为这是系统的BUG,但作为一个多年经验…

浅谈 Mybatis 框架

文章目录 一、什么是MyBatis?1.2、JDBC 二、使用Mybatis2.1、配置MyBatis开发环境2.1.1、配置连接字符串2.1.2、配置MyBatis中的XML路径 2.2、使用MyBatis模式和语法操作数据库 三、使用 Mybatis 进行增删改查操作的要点3.1、ResultMap的用法 四、Mybatis操作难点4.1、#{ } 和…

JavaWeb基础1:HTML/CSS/JS/HTTP

JavaWeb基础1:HTML/CSS/JS/HTTP (qq.com)

FPGA知识基础之--clocking wizard ip核的使用以及modelsim与vivado联合仿真

目录 前言一、ip核是什么?1.1 定义1.2 分类 二、为什么使用ip核2.1 ip核的优点2.2 ip核的缺点 三、如何使用ip核(vivado)四、举例(clocking wizard ip核)4.1 简介4.2 实验任务4.3 程序设计4.3.1 系统模块4.3.2 波形绘制…

连接数据库报错bad handshake

堡垒机账号没有授权访问权限

2024最新最全面的Selenium 3.0 + Python自动化测试框架

文档说明 Selenium是一个用于Web应用程序自动化测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。 Selenium测试的主要功能包括: 测试与浏览器的兼容性:测试应用程序是否能很好的工作在不同的浏览器和操作系统之上。…

云计算学习——5G网络技术

系列文章目录 提示:仅用于个人学习,进行查漏补缺使用。 Day1 网络参考模型 Day2 网络综合布线与应用 Day3 IP地址 Day4 华为eNSP网络设备模拟器的基础安装及简单使用 Day5 交换机的基本原理与配置 Day6 路由器的原理与配置 Day7 网络层协议介绍一 Day8 …

Jpa-多表关联-OneToOne

Jpa-多表关联-OneToOne 准备JoinColumnOneToOne属性targetEntitycascade*PERSISTMERGEREMOVEREFRESH orphanRemovalfetchoptionalMappedBy* OneToOne在 hibernate中用于对表与表之间进行维护关联 准备 import com.alibaba.fastjson.JSON; import jakarta.persistence.*; impor…

AI8-文本检测

文本检测任务是找出图像或视频中的文字位置。不同于目标检测任务,目标检测不仅要解决定位问题,还要 解决目标分类问题。 文本在图像中的表现形式可以视为一种‘目标‘,通用的目标检测的方法也适用于文本检测,从任务本身上来 看: • 目标检测:给定图像或者视频,找出目…

本地部署 faster-whisper

本地部署 faster-whisper 1. 创建虚拟环境2. 安装依赖模块3. 创建 Web UI4. 启动 Web UI5. 访问 Web UI 1. 创建虚拟环境 conda create -n faster-whisper python3.11 -y conda activate faster-whisper2. 安装依赖模块 pip install torch2.2.2 torchvision0.17.2 torchaudio…

bilibili实习生一面0625

OSI七层模型 物理层:将帧中的比特传送到下一个节点(比特) 数据链路层:将数据包装成帧并传送到路径上下一个节点,将相邻节点间不可靠的物理链路变成可靠的逻辑链路(帧) 网络层:路由寻…

Qt 5.14安装(配置MSVC 2017)

Qt 5.14安装(配置MSVC 2017) 记录一下自己安装配置Qt的步骤。 我需要安装Qt,并使用MSVC编译,所以才写了这篇文章。 一、环境 操作系统:windows 11 (64位) Qt:Qt 5.14.2 vs&…

怎么读取FRM、MYD、MYI数据文件

一、介绍frm、MYD、MYI文件 在MySQL中,使用MyISAM存储引擎时,数据库表会被分割成几个不同的文件文件描述功能扩展名FRM 文件表结构定义文件存储表的结构信息,字段、索引等.FRMMYD 文件数据文件包含表的实际数据.MYD(MYData&#x…

[米联客-安路飞龙DR1-FPSOC] UDP通信篇连载-04 IP层程序设计

软件版本:Anlogic -TD5.9.1-DR1_ES1.1 操作系统:WIN10 64bit 硬件平台:适用安路(Anlogic)FPGA 实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台:https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

学习笔记-MYSQL 事务

目录 一、什么是事务? 二、事务的四个特征(ACID)【面试常考项】 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability&#x…