STM32F103的GPIO配置方式

发布者:数据旅人最新更新时间:2019-04-27 来源: eefocus关键字:STM32F103  GPIO  配置方式 手机看文章 扫描二维码
随时随地手机看文章

一、GPIO的配置过程


(1)、开启外设时钟


(2)、初始化GPIO


配置成输出模式程序


void GPIO_Config(void)


{


GPIO_InitTypeDef GPIO_InitStruce;//结构体属于变量,变量的声明必须位于函数可执行的语句之前


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//开启GPIOB的时钟


GPIO_InitStruce.GPIO_Mode=GPIO_Mode_Out_PP;


GPIO_InitStruce.GPIO_Pin=GPIO_Pin_5;


GPIO_InitStruce.GPIO_Speed= GPIO_Speed_50MHz;//配置为输入模式时输出驱动电路与端口是断开,所以输出速度配置无意义。


GPIO_Init(GPIOB,&GPIO_InitStruce);


}


说明:


1.1在STM32中选用IO模式 


(1)浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1 


(2)带上拉输入_IPU——IO内部上拉电阻输入 


(3)带下拉输入_IPD—— IO内部下拉电阻输入 


(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电 


(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能 


(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的 


(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA) 


(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)


1.2输出速度


I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口 的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。关键是: GPIO的引脚速度跟应用相匹配,速度配置越高,噪声越大,功耗越大。


带宽速度高的驱动器耗电大、噪声也大,带宽低的驱动器耗电小、噪声也小。使用合适的驱动器可以降低功耗和噪声。


GPIO的引脚速度跟应用匹配(推荐10倍以上)。比如:


1.1.1 对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。


1.1.2 对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。


1.1.3 对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。


1.2 GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。


1.3 在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。


1.4 所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。


1.5 GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。


二、GPIO的相关函数


uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读GPIO某一位的输入


uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);//读GPIO的输入


uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读GPIO某一位的输出


uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);//读GPIO的输出


void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//将GPIO的某个位置位


void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//将GPIO的某个位复位


void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);//写GPIO的某个位


void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);//写GPIO


void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)//GPIO管脚重映射


void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)//GPIO外部中断线配置


三、其他内容


位取反:GPIO_WriteBit(GPIOE,GPIO_Pin_5,(BitAction)((1-GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_5))));



关键字:STM32F103  GPIO  配置方式 引用地址:STM32F103的GPIO配置方式

上一篇:ARM汇编学习的总结
下一篇:ARM7 的中断寄存器的设置方法

推荐阅读最新更新时间:2024-11-06 00:46

AM335x(TQ335x)学习笔记——GPIO按键驱动移植
还是按照S5PV210的学习顺序来,我们首先解决按键问题。TQ335x有六个用户按键,分别是上、下、左、右、Enter和ESC。开始我想到的是跟学习S5PV210时一样,编写输入子系统驱动解决按键问题,但是浏览driver/input/keyboard目录时意外的发现了gpio-keys.c,大体上看下该驱动程序,其功能是实现了通用的gpio按键。再去看了下DTS,发现DTS中有对gpio-keys的引用,于是猜到,新的内核不需要自己编写输入子系统驱动,可以通过配置DTS直接解决按键问题。本人最终通过实验证实了这个猜想,下面是实验笔记及本人的一些理解。 (1)确定GPIO管脚 通过查看TQ335x的原理图可以看到,TQ335x的6
[单片机]
STM32F103+RTT从零开始(二)——RTT系统中点亮LED
上一篇博客简单说了下如何使用Keil创建STM32F103的工程,并且完成了LED点亮,及让LED等闪烁的功能,那是诸多同学学习单片机的起手式。本篇博客继续上一篇博客的内容,依旧是点亮LED,不同的是,这次点亮LED等,是在RT-Thread操作系统中进行的。 创建工程 创建一个Keil工程,芯片依旧选择STM32F103C8T6,然后在Manage Run-Time Environment对话框中选择需要用的的软件组件,与上文不同的是,我们需要把RTT一起勾上。如下图: 上图中,红线框中即为RTT操作系统的组件,分别为设备驱动,系统内核以及shell。蓝线框中为Keil的RTX操作系统。我们现在要用的是RTT,所以勾
[单片机]
<font color='red'>STM32F103</font>+RTT从零开始(二)——RTT系统中点亮LED
STM32学习手记①-GPIO的输入、输出、检测
/**************************************************************************** * * 文件名: main.c * 内容简述: 本例程演示如何操作GPIO输入和输出。 * 通过检测USER1、USER2按键的状态,点亮不同的LED,同时输出键值到串口1 * * 按键口线分配: * USER1键 : PC6 (低电平表示按下) * USER2键 : PC7 (低电平表示按下) * * LED口线分配: * LED1 : PE0 (输出0点亮) * LED2 : PE1 (输出0点亮) * */ #include "stm32f10x_lib.h"
[单片机]
ILI93xx屏幕坐标系及扫描方式配置(LCD学习笔记1)
前言 博文基于STM32F103ZET6,MDK和3.5.0标准库开发 如有不足之处,多指教 屏幕坐标系(呵呵,我自己给取的名字) R50h~R53h:水平垂直RAM地址位置;用来设定整个屏幕上的显示区域; R50h(HSA ):水平起始地址寄存器; R51h(HEA ):水平结束地址寄存器; R52h(VSA ):垂直起始地址寄存器; R53h(VEA ):垂直结束地址寄存器; 坐标系参数: 从上面的图片中和英文中可以了解,LCD屏幕上的每个像素点所对应GRAM显存单元是不能改变的,LCD屏幕默认为以人们习惯的竖屏方式的模板,以左上角点为坐标系原点,有方向为水平方向,下方向为垂直方向;如下图: 特点: 每个像素
[单片机]
ILI93xx屏幕坐标系及扫描<font color='red'>方式</font><font color='red'>配置</font>(LCD学习笔记1)
stm32f103GPIO原理以及LED的应用(寄存器版)
一.硬件原理图 有两个LED灯D1,D2,分别对应的PIN是PB6,PB7,低电平时点亮LED灯 二.寄存器图 通用GPIO寄存器一共有以下几个寄存器 寄存器可以参考 参考手册,在这里不做详细讨论 三.编程步骤: 1.使能响应的GPIO时钟 2.配置通用GPIO为推挽输出(因为默认低电平,所以此时LED灯会亮起来) 3.输出低电平,熄灭LED灯 4.再次通过程序点亮LED灯 四.程序讲解 代码比较简单,只有几行 /* 1.ENABLE GPIOB CLOCK */ RCC- APB2ENR|= RCC_APB2ENR_IOPBEN; 运行这个,可以在debug中看到GPIOB clock由di
[单片机]
【<font color='red'>stm32f103</font>】<font color='red'>GPIO</font>原理以及LED的应用(寄存器版)
浅析基于stm32f103与涂鸦智能的智能蜜蜂养殖系统
初中有幸与蜜蜂结缘,但是由于要读书,或者平时没在家,而蜜蜂对生成环境计较苛刻,喜欢安静,干燥,并且在黑暗的环境中,如果管理不好就会造成蜜蜂逃的逃,跑的跑,不仅没有产量反而蜜蜂都跑完了,目前就在想有没有可以远程监控蜂箱的方法。 我的方案使采用stm32f103c8t6作为主控,然后用涂鸦的三明治开发板VWXR2接入涂鸦云。 C:UsersdellDesktop涂鸦 如果是新用户先注册一个账号 C:UsersdellDesktop涂鸦涂鸦新建文件夹 注册成功后登陆,然后点击创建产品,流程我上传来,产品创建成功后,下载全部文件,但我发现我做的蜂箱智能养殖系统,系统的功能和我的不符合,这时需要进入自定功能 C:UsersdellDes
[单片机]
浅析基于<font color='red'>stm32f103</font>与涂鸦智能的智能蜜蜂养殖系统
一款全自动电饭煲系统的设计与实现
  现在的电饭煲正在向集煮饭、煲汤、保温于一体的方向发展,虽现在的电饭煲有预约煮饭功能,但由于预约时间过长而影响了米的口感,本文设计的全自动电饭煲融合嵌入式技术和无线通讯技术,不仅实现了煮饭的远程智能化控制,同时保证了煮饭的良好口感。   1 全自动电饭煲的工作原理   设计的电饭煲在未工作时处于待机状态,当SIM900A模块接收到用户手机发来的短信或GPRS的控制指令后,将指令发送到 STM32F103单片机,单片机对指令进行解析,然后控制电饭煲自动漏米、淘米、煮饭的整个过程,并且实时采用温度传感器检测电饭煲的工作温度,同时能够根据电饭煲的工作状态智能报警,保证了电饭煲的可靠稳定工作,系统的总体设计如图1所示。      
[单片机]
一款全自动电饭煲系统的设计与实现
STM32F103C8T 学习 - 环境配置
一、搭建开发环境需要的文件 ST库:https://pan.baidu.com/s/1Nt5SCaaZZ2RjLcYtT7UApg ST-Link v2驱动及 Keil4 开发工具 :https://pan.baidu.com/s/1ibcL8XlMVW-oW7qA9rtp0w 1、首先我们需要一个ST库 ST的官网经常改变,就不放置路径了,毕竟过一段时间也会出错,大家除了在官网找也可以在网上找人家分享的资源,网上也有很多人分享。如果你是用库函数开发的话,则必须要有一个ST库,在找的时候要注意找对应的MCU系列ST库 2、安装MDK软件 MDK的安装很简单,直接下一步最后完成再破解就可以了,大家安装MDK软件时需要注意
[单片机]
<font color='red'>STM32F103</font>C8T 学习 - 环境<font color='red'>配置</font>
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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