STM32中对GPIO的配置与使用
2017-06-05 20:08
190 查看
笔记写入一份到博客里,没事还可以查看一下,自己的也大致总结了一下自己对这个知识的理解
其实学习单片机最先熟悉的无非就是I/O口的操作。STM32的GPIO也好理解,就8种模式。了解什么功能使用什么模式,怎么配置就可以了。废话不多说,了解一下GPIO口吧。学习时大家应该都有资料,我就不多贴资料了,下图是GPIO(STM32F10x)的电路图。(51的I/O口不需要配置,电平输送不但简单,而且不能像GPIO集成各种协议一起使用,如SPI,SPI协议后面也会介绍)
我大致将配置模式介绍一下,并将使用该模式的功能也对应一下
输入模式:(相对MCU)
1. 浮空--外部输入何种电平,该引脚就是何种电平。 结构体模式配置:GPIO_Mode_IN_FLOATING
2.上拉--顾名思义,接VDD的开关开启,接上上拉电阻。 结构体模式配置:GPIO_Mode_IPU (在我的开发板上,key1,key2,key3外接GND, 所以这里使用上拉,红外接收也使用到)
3.下拉--接VSS的开关开启,接上下拉电阻。 结构体模式配置:GPIO_Mode_IPD (而key_up外接3.3V,所以这里用下拉)
4.模拟输入--IO端口的数据直接进入ADC模块。 结构体模式配置:GPIO_Mode_AIN (DAC,ADC数据采集就要用到)
输出模式:(相对MCU)
1.开漏输出:MCU可以向IO端口写“0”。写“1”时由外部电路决定,例如上拉则为1,下拉则为0. 输入寄存器可以读取IO端口的电平值。 结构体模式配置:GPIO_Mode_Out_OD
2.开漏复用:与开漏输出差不多,由MCU控制转由外设模块控制而已。 结构体模式配置:GPIO_Mode_AF_OD
3.推挽式输出:MCU向I/O端口可写“0”写“1”。类似51的IO操作。使用较多 。 结构体模式配置:GPIO_Mode_Out_PP (对于直接连接的就用这个了,数码管,蜂鸣器等)
4.推挽式复用功能: 向I/O端口写“0”写“1”的 功能交给外设模块而已。使用也多。 结构体配置:GPIo_Mode_AF_PP (PWM,UASRT,TFT,SPI,DMA..使用外设都要使用)
void LED_Init()
{
GPIO_InitTypeDef GPIO_InitStructure; /*
配置GPIO的结构体*/
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_ALL;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&GPIO_InitStructure); //这是点亮外接IO的LED的一个配置,故使用推挽输出
}
其他内容会贴在博客上,回顾一下
其实学习单片机最先熟悉的无非就是I/O口的操作。STM32的GPIO也好理解,就8种模式。了解什么功能使用什么模式,怎么配置就可以了。废话不多说,了解一下GPIO口吧。学习时大家应该都有资料,我就不多贴资料了,下图是GPIO(STM32F10x)的电路图。(51的I/O口不需要配置,电平输送不但简单,而且不能像GPIO集成各种协议一起使用,如SPI,SPI协议后面也会介绍)
我大致将配置模式介绍一下,并将使用该模式的功能也对应一下
输入模式:(相对MCU)
1. 浮空--外部输入何种电平,该引脚就是何种电平。 结构体模式配置:GPIO_Mode_IN_FLOATING
2.上拉--顾名思义,接VDD的开关开启,接上上拉电阻。 结构体模式配置:GPIO_Mode_IPU (在我的开发板上,key1,key2,key3外接GND, 所以这里使用上拉,红外接收也使用到)
3.下拉--接VSS的开关开启,接上下拉电阻。 结构体模式配置:GPIO_Mode_IPD (而key_up外接3.3V,所以这里用下拉)
4.模拟输入--IO端口的数据直接进入ADC模块。 结构体模式配置:GPIO_Mode_AIN (DAC,ADC数据采集就要用到)
输出模式:(相对MCU)
1.开漏输出:MCU可以向IO端口写“0”。写“1”时由外部电路决定,例如上拉则为1,下拉则为0. 输入寄存器可以读取IO端口的电平值。 结构体模式配置:GPIO_Mode_Out_OD
2.开漏复用:与开漏输出差不多,由MCU控制转由外设模块控制而已。 结构体模式配置:GPIO_Mode_AF_OD
3.推挽式输出:MCU向I/O端口可写“0”写“1”。类似51的IO操作。使用较多 。 结构体模式配置:GPIO_Mode_Out_PP (对于直接连接的就用这个了,数码管,蜂鸣器等)
4.推挽式复用功能: 向I/O端口写“0”写“1”的 功能交给外设模块而已。使用也多。 结构体配置:GPIo_Mode_AF_PP (PWM,UASRT,TFT,SPI,DMA..使用外设都要使用)
void LED_Init()
{
GPIO_InitTypeDef GPIO_InitStructure; /*
配置GPIO的结构体*/
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_ALL;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&GPIO_InitStructure); //这是点亮外接IO的LED的一个配置,故使用推挽输出
}
其他内容会贴在博客上,回顾一下
相关文章推荐
- STM32 GPIO 的配置与使用
- ①这次画的板子将stm32的jtag口作为gpio使用了,在网上找到的设置方法留着备用
- STM32的GPIO口的8种配置模式
- stm32 GPIO配置以及什么时候用 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU
- stm32的jatg口配置为普通io口使用
- STM32 重新理解GPIO配置以及配置PWM波输出
- STM32复用的GPIO引脚配置方式
- 关于STM32的GPIO模式配置
- stm32 学习---GPIO简单使用实例
- STM32的GPIO输入输出模式配置
- STM32的GPIO使用的函数剖析
- STM32使用之GPIO
- STM32之中断与事件---一个使用GPIO作为外部中断的示例
- STM32GPIO——快速IO的使用
- STM32 GPIO 配置之ODR, BSRR, BRR 详解
- ①这次画的板子将stm32的jtag口作为gpio使用了,在网上找到的设置方法留着备用
- STM32为什么必须先配置时钟再配置GPIO
- STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK)
- stm32 使用 printf 串口输出 配置
- stm32之 GPIO_Remap_SWJ_Disable之后无法使用swd下载 程序解决方法