一、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))));
上一篇:STM32单片机(二)-ST_LINK V2连接与代码下载
下一篇:STM32F103 系统各部分时钟设置
推荐阅读
史海拾趣
在电子行业的发展过程中,技术创新始终是BROTHER公司的重要驱动力。公司注重研发投入,拥有一支高素质的研发团队,不断推出具有创新性和竞争力的新产品。同时,BROTHER还积极与高校、科研机构等合作,开展产学研合作,推动技术创新和产业升级。通过技术创新,BROTHER不仅提升了产品质量和性能,还降低了生产成本,提高了市场竞争力。
随着技术的不断成熟,Astema开始积极拓展市场。公司制定了一系列市场策略,包括与大型电子设备制造商建立合作关系、参加国际电子展等,以扩大品牌影响力。通过这些努力,Astema逐渐打开了国际市场的大门,其产品远销海外,市场份额稳步提升。
Electron Products Inc(简称EPI)成立于XXXX年,由一群对电子技术充满热情的工程师共同创立。初期,公司主要从事电子产品的设计和研发,致力于为小型企业和消费者提供高质量的电子产品。通过不断创新和优化产品,EPI逐渐在市场上树立了自己的品牌形象。
随着科技的快速发展,EPI意识到只有不断创新才能在竞争激烈的电子行业中立足。因此,公司加大了对研发的投入,并成功推出了一系列具有创新性和领先性的电子产品。这些产品不仅提升了用户体验,还为公司带来了更多的市场份额和利润。
面对制造业转型升级的机遇和挑战,EUtech公司积极探索智能制造领域。他们引进先进的生产设备和自动化生产线,提高生产效率和质量。同时,公司还注重人才培养和技术创新,打造了一支高素质的研发团队和技术工人队伍。在智能制造的助力下,EUtech公司实现了从传统制造向智能制造的转型升级。
以上五个故事均基于EUtech Scientific Engineering公司的实际情况和电子行业的发展趋势进行虚构。希望这些故事能够为您提供一些启示和参考。
随着市场竞争的加剧,AIC公司意识到品质是赢得客户信赖的关键。于是,公司加大了对生产过程的管控力度,从原材料采购到生产流程,再到产品检验,都实行了严格的质量控制。同时,AIC公司还建立了完善的售后服务体系,及时响应客户需求,解决产品使用过程中出现的问题。这些举措使AIC公司的产品赢得了客户的广泛好评,进一步巩固了市场地位。
飞思卡尔在搞抽奖培训呢,单片机,我去听了会儿,还不错,现在能在线免费培训的厂商还真不多吧。RS08内核和RS08KA2的。老大,不知道飞思卡尔?那算了,和你白说,自己google去 好像freescale从moto卖了之后就很强了,前几天说176亿美金又卖 ...… 查看全部问答∨ |
我是在校的学生,这个是我这个学期的课程设计. 我的思路是想实现语音提示,还有最好能有个类似于超市的那种感应小门,在里面有人办理业务的时候关,里面人出去,轮到下一个的时候开一下. 由于在学校一直学的是理论只是,所以真正做实物不知道从什么地方做 ...… 查看全部问答∨ |
急求有没有朋友会用VB开发软件,软件的最基本功能是将屏幕上的数据打包成一定格式的数据包通过网卡(RJ45口)发送出去(与QQ的远程协助有点类似),如果有朋友会的话,希望能够一起合作,详细事宜具体再谈。QQ:474340457 [ 本帖最后由 wenhuawu 于 ...… 查看全部问答∨ |
|
原先是PB通过以太网下载NK.bin到FLASH里面的,但是感觉很麻烦,每次都要启动PB。我想做一个应用程序通过以太网下载NK.bin到FLASH里面。注:EBOOT功能完整… 查看全部问答∨ |
恩智浦在中国大陆和台湾地区启动NFC合作伙伴计划 恩智浦推出独一无二的生态系统,助力NFC技术实现跨设备、跨应用普及 中国上海,2011年6月7日 —— 恩智浦半导体NXP Semiconductors N.V. (NASDAQ:NXPI) 近日宣布推出首个近距离无线通信 ...… 查看全部问答∨ |
注释:以下列表提供了本文使用的TSP指令。这些指令可能无法在某种具体情况下使用,也不适用于所有情况。 配置指令 3700系列: channel.connectrule .指示系统中闭合与断开通道的连接规则。 .channel.BREAK_BEFORE_MAKE或1在 ...… 查看全部问答∨ |