stm32-GPIO 模式配置如何?

发布者:数字航海家最新更新时间:2023-08-24 来源: elecfans关键字:模式配置  微控制器 手机看文章 扫描二维码
随时随地手机看文章

作为嵌入式系统的一种重要硬件平台,STM32 微控制器在许多应用场合都有广泛的应用。GPIO(General Purpose Input Output)即通用输入输出口,是 STM32 微控制器中非常重要的一个外设模块。在 STM32 的开发中,通过 GPIO 模式配置,可以实现多种不同外设的输入输出功能,如 LED 灯、按键、电机等。本文就来详细介绍 STM32 的 GPIO 模式配置。


首先,STM32 的 GPIO 可以分为四个部分,即 A、B、C、D 四个端口,每个端口包括多个 GPIO 引脚。我们可以根据实际需要,选择相应的 GPIO 引脚来实现输入输出的功能。


其次,在进行 GPIO 的模式配置之前,我们需要了解 GPIO 总线的基本工作原理。GPIO 可以通过软件设置为输入和输出模式,同时也可以设置 GPIO 的速率、下拉和上拉电阻等。GPIO 在输入模式下,可以检测输入信号或者检测输入信号变化;在输出模式下,可以通过软件控制输出电压高低。

接下来,我们看一下 STM32-GPIO 的模式配置方法:


1. 首先,需要开启 GPIO 外设时钟,一般使用如下代码:


```

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE);

```


这段代码会将 A、B、C、D 四个端口的 GPIO 外设时钟打开。


2. 然后,将 GPIO 设置为输入或输出模式:


```

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 选择 GPIO 引脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 设置 GPIO 输出模式

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 设置 GPIO 速率

GPIO_Init(GPIOA,&GPIO_InitStructure); // 对 GPIO 进行配置

```


以上代码中,GPIO_InitStructure 是 GPIO 设备的配置结构体,其中 GPIO_Pin 是对应的引脚编号,GPIO_Mode 是选择输入或输出模式,GPIO_Speed 是设置 GPIO 速率。


在设置输入模式时,可以选择上拉或下拉模式。下拉模式是指当引脚未接到高位时,其输出电平会被拉低;而上拉模式则相反,引脚未接到低位时,输出电平被拉高。


3. 最后,根据具体需求,对 GPIO 进行操作。


例如,对 GPIO 设置输出电平:


```

GPIO_SetBits(GPIOA, GPIO_Pin_0); // 将 GPIO 引脚设置为高电平

GPIO_ResetBits(GPIOA, GPIO_Pin_0); // 将 GPIO 引脚设置为低电平

```


总之,STM32-GPIO 模式配置是非常重要和基础的一项开发任务。通过了解和掌握 GPIO 的基本工作原理,以及使用相应的代码库,我们能够实现多种不同外设的输入输出功能。在 STM32 的实际开发中, GPIO 的灵活应用是非常关键的一部分。


关键字:模式配置  微控制器 引用地址:stm32-GPIO 模式配置如何?

上一篇:如何利用PCB设计stm32单片机
下一篇:STM32比较常见的BUG总结

推荐阅读最新更新时间:2024-11-12 15:28

单片机多路数据采集汇编源程序
单片机多路数据采集汇编源程序在下面 源程序: 单路采集程序: MOV DPTR,#0F8FFH MOV R0,#00H ;将存储器的首地址存在R0,R1两个寄存器中 MOV R1,#00H MOV R2,#200D ;设置循环 MOV R3,#4 MOV R4,#8D MAIN: CLR P1.1 ;选中ADC0809 PUSH DPL ;DPTR入栈 PUSH DPH MOVX @DPTR,A ;启动AD转换 ACALL DELAY ;延时5ms 保证采集数据频率为200HZ MOVX A,@DPTR ;读数据 SETB P1.1 ;选中存储器 MOV DPL,R0 ;将存
[单片机]
单片机---HLK-W801蓝牙遥控点灯
昨天吧demo运行明白了,今天那就来看一下手机通过蓝牙远程遥控点亮开发板的LED吧,虽然这并不是低功耗蓝牙的典型用法,但是通过这种手段,能够快速学习一下W801这套恶心的SDK代码,也算是一种福报。嚯,正好这个芯片是阿里生产的,这不是正应了马老的一句话么。 调试工具 这里用的手机蓝牙调试工具叫nRF connect。应用商店也可以搜索BLE,就能搜索到很多蓝牙开发的工具,不过都会各种申请手机权限,定位啊,相册啊,不允许就没法用,简直就是流氓行为,这国家早就说过了这种问题,无奈就是没办法啊。 不过这款软件倒是挺好的,没有申请什么权限 直接就可以使用。让人感动。 自动启动server 原有的demo中,我们知道了需要让开发
[单片机]
<font color='red'>单片机</font>---HLK-W801蓝牙遥控点灯
lpc1114单片机红外遥控程序
#include lpc11xx.h #include ct.h #include ili9325.h #include w25q16.h uint8_t pulse_start=0; // 脉冲开始标志 uint8_t pulse_bnum=0; // 脉冲计数器 uint8_t pulse_ok=0; // 发现前导码 uint8_t key_repeat=0; // 持续按键 uint16_t tc_buf=0; uint16_t ir_buf ; // 装载用户码和数据码 uint8_t user_code_hi; uint8_t user_code_lo; uint16_t user
[单片机]
单片机串口通信编程注意事项
在紧张的工作中,现在对单片机的串口通信编程有了一个新的认识,下面就针对下面不同的几个工程程序文件的区别做一个比较详细的总结。 本次小结的主要目的是更加明确单片机的串口中断是如何发生的。即:是如何触发串口中断的发送功能的。在说明中我使用特殊的字体颜色来强调重点部分和注意事项。 程序一: 本程序是使用软件设置TI来实现串口中断的触发,如果在初始化函数中不增加 TI=1; 这条语句,那么是不会触发中断的 #include STC89C5X.h //包含51单片机的头文件 #define uint unsigned int #define uchar unsigned char void InitUart(voi
[单片机]
哪种蓝牙MCU最适合您的设计?
当今的蓝牙微控制器是集成的微小奇迹。即使是空间要求最小的嵌入式设计中也适用,并将CPU、内存资源和外设以及射频功能所需的元件封装在一起。但蓝牙MCU的型号以及其具有的“蓝色色调”多得让人眼花缭乱、无从选择。 为了帮助缩小选择范围并为您的设计找到恰当的色调,考虑设备功能和射频性能这两种不同类别的参数很有用。我们仔细了解一下每个参数。 功能变化 这涵盖了蓝牙MCU的能力和不足。需要考虑的关键区别是支持的蓝牙版本、专有协议的使用以及MCU的连接资源。 Bluetooth SIG版本(4.2、5.0、5.1等) Bluetooth SIG的每个标准版本中,都有必选和可选功能。必选功能确保认证设备满足最低限度的功能,而可
[网络通信]
哪种蓝牙<font color='red'>MCU</font>最适合您的设计?
基于AVR单片机和温度传感器实现智能温控系统的设计
引言 在工农业生产和日常生活中,温度的测量及控制越来越重要。传统的温度控制系统采用热敏电阻器或热电偶测量温度,但是由于模拟温度传感器输出的是模拟信号,必须经过A/D转换等环节才能获得数字信号,再加上这种温度采集电路有时需要冷端补偿电路,这样增加了电路的复杂性,且电路易受干扰,使采集到的数据准确性不高。随着技术的发展,目前国际上新型温度传感器已从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展。智能化温度传感器DS18B20将温度传感器、寄存器、接口电路集成在一个芯片中,能直接输出数字信号。本论文设计了以ATmega16单片机和DS18B20为主构成的智能温控系统,该系统的温度启控点可以根据用户需要而自行设定。 1、 系统
[单片机]
基于AVR<font color='red'>单片机</font>和温度传感器实现智能温控系统的设计
PIC单片机的中断讨论
******************** 中断服务代码 btfss INTCON,T0IE ; 判断是否为 T0中断 goto other_int btfss INTCON,T0IF ; it s the time of T0 int goto other_int bcf INTCON,T0IF ; 是T0中断,清除中断标 志 movlw 0x10 ; 微秒的高位字节加上定时时间 256x16分频=4096=0x1000的高位 (0x10) addwf us+1 goto end_int other_int ; 可 添加其他
[单片机]
【GD32 MCU 入门教程】二、GD32 MCU 烧录说明 (2)SWD/JTAG在线下载
GD32系列MCU支持SWD和JTAG(部分型号不支持)接口进行下载调试,这些功能通过ARM CoreSight组件的标准配置和链状连接的TAP控制器来实现的。调试和跟踪功能集成在ARM Cortex-M内核中。调试系统支持串行(SW)调试和跟踪功能,部分型号也支持JTAG调试。调试和跟踪功能具体请参考下列文档: Cortex-M4技术参考手册; ARM调试接口V5结构规范。 目前GD32 MCU主要支持的调试下载设备有:J-linkV8/V9、U-link、标准的CMSIS-DAP调试工具如GD-link。SWD/JTAG的优势在于及下载和调试功能一体,可直接在集成开发环境IDE(如MDK、IAR)中进行下载和在线仿真。同时
[单片机]
【GD32 <font color='red'>MCU</font> 入门教程】二、GD32 <font color='red'>MCU</font> 烧录说明 (2)SWD/JTAG在线下载

推荐帖子

【电机套件 P-NUCLEO-IHM测评】-3.1、任务打卡(基本任务和自评测任务)
前面说了那么多,接下来赶紧把完成的任务总结一下:任务一:电机运行时,使用P-NUCLEO-IHM002测量三电阻电流采样波形,并且通过DA输出此波形,并且截图用MotorWorkbench设置电流Ia从DAC1输出,然后用示波器测量DAC输出。任务二:得到FOC控制时的关键变量:Ia,Ib,Ic,Ialpha,Ibeta,Id,Iq,Vd,Vq,并且截图任务三:监控任意数据变量,并且截图这两个任务感觉任务二可以代表任务三(特例一定满足一般
yang_alex stm32/stm8
在Windows mobile下对无标题窗体怎么实现鼠标按下的拖动效果?
因为mobile上没有WM_NCLBUTTONDOWN等类似的消息,怎么实现拖动窗体时,就像点击到标题栏上拖动的虚线框效果?抓鼠标消息,然后移动窗体的回答就免了,那种我做出来了。在Windowsmobile下对无标题窗体怎么实现鼠标按下的拖动效果?帮顶一下.难道没有人知道吗?楼主描述清楚点吧就是当鼠标点到窗体上,鼠标拖动,窗体随鼠标移动。有标题栏的窗体,我点到标题栏上移动,就可以移动窗体的位置引用楼主abcix的回复:因为mobile上没有WM_NCLBUTTONDO
liyi885 嵌入式系统
关于keil MDK 6和5版编译器的奇怪问题
我在将使用旧版项目升级到新版后,发现程序不能顺利执行了,通过查找原因竟然是因为使用的MKD编译器版本不同造成的。旧版使用MDK5版编译通过,工作正常,新版使用MDK6版编译通过,但是工作不正常了。旧版使用MDK6编译也工作不正常。通过查找问题出在函数指针上面,编写了下面的验证程序段复现问题,//声明代码#defineinx_1st0typedefuint16_t(*fun_cmd)(uint16_t,uint16_t);constfun_cmdcmd_lis
bigbat 编程基础
奧本海姆的離散時間信號處理的英文版
上次传了个中文版这次上英文奧本海姆的離散時間信號處理的英文版中文的在哪哦??还有吗??顶了这个应该是了:https://bbs.eeworld.com.cn/viewthread.php?tid=100758回复沙发qixiangyujj的帖子對,是這個,名字也剛剛改回來了回复板凳EEWORLD社区的帖子谢谢LZ感谢楼主的慷慨
flyingdsp DSP 与 ARM 处理器
stm32f407修改rom地址后编译不变是咋回事?
我创建了一个工程,想让他指令是从0x8020000开始执行,因此在keil的rom设置时改了地址。但是编译出来的hex文件地址仍然是在0x8000000.我想请教什么设置下会出现这种情况。因为我重新创建了一个工程,修改keil的rom地址就是有效的。我想知道我原来的那个工程到底哪里出错了?stm32f407修改rom地址后编译不变是咋回事?哦,我找到原因了。。。。是sct文件没修改。。用__at__也可以定位的
helenhll stm32/stm8
节奏器小程序
用S7-200加两个小蜂鸣器制作的节奏器,程序如下:i0.0:节奏变快i0.1:节奏变慢i1.0:复位i0.2:四分之二拍i0.3:四分之三拍i0.4:四分之四拍i1.1:小节提示音选择q0.7:拍子输出q1.0:小节提示音TITLE=子例行程序注解Network1//调整节奏速度输入LDSM0.5AI0.0LDSM0.5AI0.1LDI1.0CTUDC10,100Network2//节奏速度
wdxyx 工控电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved