历史上的今天

今天是:2024年08月24日(星期六)

2019年08月24日 | STM32F103的GPIO配置方式

发布者:静默思考 来源: 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配置方式

上一篇:STM32单片机(二)-ST_LINK V2连接与代码下载
下一篇:STM32F103 系统各部分时钟设置

推荐阅读

泰捷作为专业级音视频技术领创者,早期就专注于智能电视及OTT电视机顶盒领域Android平台方案的技术服务,拥有成熟的技术实力并积累了丰富的经验。历久弥新的品质与无与伦比的视觉体验,而且很多媒体和用户称其为“盒子中的苹果手机”,固然是网红泰捷雄踞京东电视机顶盒销量第一的重要原因,但在小编看来,背后的售后服务更是泰捷赢得市场的重要法宝! (...
在某种程度上,它的低利润使它更有利可图。 长期以来,对亚马逊持怀疑态度的人们一直在重复一个论调:这家电子商务巨头并不赚钱,它用来打压竞争对手的微薄利润率是不可持续的,它的商业模式最终肯定会失败。 几乎每一个财政季度,我都会为亚马逊的季度收益制作同样的图表,数年的表格似乎印证了这种说法。下图将亚马逊的收入(灰色线)与利润(红线)进行...
据 HEVC Advance官方8月17日消息,HEVC Advance的HEVC/H.265专利池中的部分专利权⼈在德国杜塞尔多夫地区法院提起针对Vestel Germany GmbH (以下简称“Vestel”) 和Xiaomi Technology Germany GmbH、Xiaomi Technology Netherlands B.V.、Xiaomi Technology France S.A.S.和 Xiaomi Inc. (以下统称“小米”)的专利诉讼,称这几家公司侵...
花一些时间来整理下各个研究机构对于今年汽车行业整体的产量预测。由于芯片短缺减产带来的影响,不确定因素在增加,所以目前的这些预测可能并不准确,但我们还是可以根据这些调研数据来看到一些结论。 一、几家研究机构的预测 (1)AFS Auto Forecast SolutionsAuto Forecast Solutions 的统计方式,主要是根据统计车企的报告+对比数据的方式,所以...

史海拾趣

问答坊 | AI 解惑

8-32位微处理器免费培训,想去的都来看看,搭个伴

飞思卡尔在搞抽奖培训呢,单片机,我去听了会儿,还不错,现在能在线免费培训的厂商还真不多吧。RS08内核和RS08KA2的。老大,不知道飞思卡尔?那算了,和你白说,自己google去   好像freescale从moto卖了之后就很强了,前几天说176亿美金又卖 ...…

查看全部问答∨

请教一米线提醒器的设计方案

我是在校的学生,这个是我这个学期的课程设计. 我的思路是想实现语音提示,还有最好能有个类似于超市的那种感应小门,在里面有人办理业务的时候关,里面人出去,轮到下一个的时候开一下. 由于在学校一直学的是理论只是,所以真正做实物不知道从什么地方做 ...…

查看全部问答∨

请问有没有朋友会用VB做软件的?

急求有没有朋友会用VB开发软件,软件的最基本功能是将屏幕上的数据打包成一定格式的数据包通过网卡(RJ45口)发送出去(与QQ的远程协助有点类似),如果有朋友会的话,希望能够一起合作,详细事宜具体再谈。QQ:474340457 [ 本帖最后由 wenhuawu 于 ...…

查看全部问答∨

如何在DXP2004里面直接设置PCB板子的大小?

我以前做板子都是先摆好元件封装在框起板子,定尺寸。但是现在要求直接设置板子大小后在往里放元件封装,不知如何设置,请教大家。…

查看全部问答∨

FLASH测试求助

最近在调spansion的8M NOR FLASH,本来已测试成功,可昨天再运行的时候,总莫名奇妙的挂住; manufacturerid和deviceid可以正确读出,跟踪调试后发现问题出在调用CFI指令的地方。 flash是挂在PCI总线上。 望各位赐教。 …

查看全部问答∨

如何用单片机设计断电延时型电子定时器?

我第一次上这个网,谁知道请告诉我,我急用. 请告诉我详细的设计方案 谢谢啦…

查看全部问答∨

应用程序通过以太网下载NK到FLASH?

原先是PB通过以太网下载NK.bin到FLASH里面的,但是感觉很麻烦,每次都要启动PB。我想做一个应用程序通过以太网下载NK.bin到FLASH里面。注:EBOOT功能完整…

查看全部问答∨

恩智浦在中国大陆和台湾地区启动NFC合作伙伴计划

恩智浦在中国大陆和台湾地区启动NFC合作伙伴计划 恩智浦推出独一无二的生态系统,助力NFC技术实现跨设备、跨应用普及   中国上海,2011年6月7日 —— 恩智浦半导体NXP Semiconductors N.V. (NASDAQ:NXPI) 近日宣布推出首个近距离无线通信 ...…

查看全部问答∨

附件A – TSP指令

注释:以下列表提供了本文使用的TSP指令。这些指令可能无法在某种具体情况下使用,也不适用于所有情况。   配置指令   3700系列: channel.connectrule .指示系统中闭合与断开通道的连接规则。 .channel.BREAK_BEFORE_MAKE或1在 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

更多每日新闻

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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