STM32F103ZET6 —— GPIO

发布者:MindfulYogi最新更新时间:2021-11-04 来源: eefocus关键字:STM32F103ZET6  GPIO 手机看文章 扫描二维码
随时随地手机看文章

STM32 的 GPIO 可以由软件配置成为几种不同的模式,每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问:


A. 芯片侧:


1. 输入:

image.png

2. 输出:

image.png

B. 硬件侧:


对应的单板,有两个GPIO连接到LED上:

使用的是 GPIO 的 Port G 的 Pin13 和 Pin14 脚


C. 代码侧:


配置上述两个 GPIO 工作需要的步骤如下:


1. 使能对应的 GPIO_G 的时钟


2. 配置 GPIO_G13/GPIO_G14 为通用推挽输出,配置口线翻转速度50M


3. 配置完成后,设置端口的输出为1/0即可控制 GPIO 的输出。


1. 时钟设置:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG , ENABLE); // 此处 RCC_APB2Periph_GPIOG 为 (0x01 << 8)

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

{

  /* Check the parameters */

  assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));

  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)

  {

    RCC->APB2ENR |= RCC_APB2Periph;

  }

  else

  {

    RCC->APB2ENR &= ~RCC_APB2Periph;

  }

}


2. 配置 GPIO_G13/GPIO_G14 为通用推挽输出,50M速度

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

 

GPIO_Init(GPIOG, &GPIO_InitStructure);

3.  配置输出:


STM32 配置 GPIO 的输出1/0,提供了多种方式,有端口直接写入1/0的寄存器(GPIOx_ODR),也有专门设置 1 值的寄存器(GPIOx_BSRR),同样有专用用于设置 0 值的寄存器(GPIOx_BRR)。可以随意使用:


#define LED1_ON GPIO_SetBits(GPIOG, GPIO_Pin_13);  

#define LED1_OFF GPIO_ResetBits(GPIOG, GPIO_Pin_13); 

 

#define LED2_ON GPIO_SetBits(GPIOG, GPIO_Pin_14);  

#define LED2_OFF GPIO_ResetBits(GPIOG, GPIO_Pin_14); 

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

{

  /* Check the parameters */

  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  assert_param(IS_GPIO_PIN(GPIO_Pin));

  

  GPIOx->BSRR = GPIO_Pin;

}

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

{

  /* Check the parameters */

  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  assert_param(IS_GPIO_PIN(GPIO_Pin));

  

  GPIOx->BRR = GPIO_Pin;

}

关键字:STM32F103ZET6  GPIO 引用地址:STM32F103ZET6 —— GPIO

上一篇:STM32F103ZET6 — 端口Remap
下一篇:STM32F103ZET6 时钟(2)—— 代码篇

推荐阅读最新更新时间:2024-11-13 08:13

STM32 GPIO管脚工作模式和输出速度总结笔记
GPIO 输出速度 I/O口输出模式下有三种输出速度可选(2MHz,10MHz,50MHz),这个速度是指I/O口驱动电路的响应速度;I/O管脚内部有多个响应不同的驱动电路,用户可以根据自己的需要选择合适的驱动电路。 高低频比较 高频驱动电路:输出频率高,噪音大,功耗高,电磁干扰强; 低频驱动电路:输出频率低,噪音小,功耗低,电磁干扰弱;提高系统EMI(电磁干扰)性能; 总结:通过选择速度来选择不同的输出驱动模块,达到最佳的噪音控制和降低功耗的目的如果需要选择较高频率信号,但是却选择了低频驱动模块,很有可能会失真的输出信号;所以GPIO的引脚速度应与应用匹配。 举几个栗子: 1. 对于串口来说,加入最大波特率为115200,这样只
[单片机]
STM32 <font color='red'>GPIO</font>管脚工作模式和输出速度总结笔记
TI - MCU - MSP430使用指南12 -> GPIO
GPIO即通用输入输出接口,是MCU最基本的功能,可以控制I/O口的高低电平,输入输出或映射到其他模块等功能。 如下图所示,为MSP430FR2355芯片的引脚图: 在图中,每个引脚后标注的则是每个引脚具备的复用功能,GPIO是基本功能,除去电源,地,时钟等引脚,每个引脚都可作为通用IO口使用,那么如何按照自己的要求配置每个引脚的功能呢? 下面就描述下GPIO引脚相关的寄存器(MSP430FR2xx/FR4xx): 注:并非每个MSP430 MCU都包含下属所有的寄存器,根据MCU功能的复杂性决定,具体包含的寄存器名称和数量,请查看每个芯片的datasheet和user’s guide。 首先先整体看一下GP
[单片机]
TI - MCU - MSP430使用指南12 -> <font color='red'>GPIO</font>
S3C2440裸机------SPI_程序框架使用GPIO实现SPI协议操作OLED
1.oledfont.h #ifndef __OLEDFONT_H #define __OLEDFONT_H const unsigned char oled_asc2_8x16 = { {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},// 0 {0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00},//!1 {0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,
[单片机]
基于STM32的八种GPIO输入输出模式解析
最近在看数据手册的时候,发现STM32的GPIO输入输出模式的配置种类有8种之多(输入和输入各4种): (1)GPIO_Mode_AIN模拟输入 (2)GPIO_Mode_IN_FLOATING浮空输入 (3)GPIO_Mode_IPD下拉输入 (4)GPIO_Mode_IPU上拉输入 (5)GPIO_Mode_Out_OD开漏输出 (6)GPIO_Mode_Out_PP推挽输出 (7)GPIO_Mode_AF_OD复用开漏输出 (8)GPIO_Mode_AF_PP复用推挽输出 我们平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种,但对于各种模式下IO口的内部电路和典型应用,STM32的数据手册中也未曾做过详细的说明和归纳
[单片机]
基于STM32的八种<font color='red'>GPIO</font>输入输出模式解析
stm32f103 GPIO——一灯大师之I/O口输出模式的寄存器配置
在讲述寄存器配置之前,我们先来看看二进制中,在不改变其他位的条件下,对某个位的置1和清零。 先看口诀: 清零用& (对某一位,进行 与 操作。与0相与,会清零。与1相与,不改变) 置1用 | (对某一位,进行 或 操作。与0相或,不改变。与1相或,会置1) 例如: 二进制:0001 1100,我想要在不改变其他位的情况下,将第四位清零。因为,清零用&,与0相与,会清零,与1相与,不改变。所以: 0001 1100 & ~(0x01 3) == 0001 0100 注意:0x01 3 == 0000 1000(这里由于要和8位的二进制数相与,所以这里会自动扩展成8位)(而且注意这里
[单片机]
stm32f103 <font color='red'>GPIO</font>——一灯大师之I/O口输出模式的寄存器配置
小熊stm32学习总结:stm32f407 GPIO_PinAFConfig 函数
备用功能配置(除ADC和DAC外的所有非GPIO功能),使用函数 void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF) * This GPIO_AF can be one of the following values: * @arg GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin to AF0 (default after reset) * @arg GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2) to AF0
[单片机]
ARM开发之用linux通用GPIO接口宏函数操作IO口
ARM开发板:S5PV210 驱动步骤: 1.定义一个cdev设备结构体变量 2.给cdev申请设备号 3.定义一个文件操作集 4.设备初始化 5.注册设备进内核 6.申请GPIO口 GPIO相关函数接口: 1.gpio_request(引脚,给引脚的名字) ----申请GPIO口 第一个参数: 在内核代码 \arch\arm\mach-s5pv210\include\mach\gpio.h 中有定义,如下图(部分) 如GPJ2寄存器的第一个引脚,就是 S5PV210_GPJ2(0) 第二个参数: 为管脚起一个名字而已。 例如: 申请GPJ2CON
[单片机]
ARM开发之用linux通用<font color='red'>GPIO</font>接口宏函数操作IO口
小广播
设计资源 培训 开发板 精华推荐

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

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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