历史上的今天
返回首页

历史上的今天

今天是:2024年09月25日(星期三)

正在发生

2019年09月25日 | STM32总结之GPIO 常用库函数

2019-09-25 来源:eefocus

配置相关函数


1.void  GPIO_Init  (GPIO_TypeDef* GPIOx,GPIO_InitTypeDef* GPIO_InitStruct)


函数解释:GPIO的初始化函数,该函数的作用是对io进行初始化。


参数:

(1)GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。


(2)GPIO_InitStruct,GPIO的初始化相关结构体。该结构体里的成员变量决定了我们具体的初始化参数。以下进行说明:


 GPIO_Pin:指定具体的io脚,如GPIO_Pin_0,GPIO_Pin_1这样的宏定义。


 GPIO_Mode:指定GPIO的模式,有八种模式:


GPIO_Mode_AIN


GPIO_Mode_IN_FLOATING


       GPIO_Mode_IPD


       GPIO_Mode_IPU


       GPIO_Mode_Out_OD


       GPIO_Mode_Out_PP


       GPIO_Mode_AF_OD


       GPIO_Mode_AF_PP


 GPIO_Speed:指定IO最快翻转速度,也就是当使用IO产生频率的最大速度。有四种模式:


                GPIO_Speed_10MHz,


                GPIO_Speed_2MHz


                GPIO_Speed_50MHz


GPIO的读写函数


1.uint8_t  GPIO_ReadInputDataBit  (GPIO_TypeDef* GPIOx , uint16_t GPIO_Pin)


函数解释:读取io输入管脚的值


参数:

(1)GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。


(2)GPIO_Pin:指定具体的io脚,如GPIO_Pin_0,GPIO_Pin_1这样的宏定义。


返回值:输入管脚的值 Bit_SET(高电平),Bit_RESET(低电平)


2.uint16_t  GPIO_ReadInputData (GPIO_TypeDef* GPIOx )


函数解释:读取输入io数据,该函数用于读取一个io分组的所有数据


参数:GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。


返回值:一个io端口的所有数据(输入状态)


3.uint8_t  GPIO_ReadOutputDataBit  (GPIO_TypeDef* GPIOx , uint16_t GPIO_Pin)


函数解释:读取io输出管脚的值


参数:

(1)GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。


(2)  GPIO_Pin:指定具体的io脚,如GPIO_Pin_0,GPIO_Pin_1这样的宏定义。


返回值:输出管脚的值 Bit_SET(高电平),Bit_RESET(低电平)


4.uint16_t  GPIO_ReadOutputData (GPIO_TypeDef* GPIOx )


函数解释:读取输出io数据,该函数用于读取一个io分组的所有数据


参数:GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。


返回值:一个io端口的所有数据(输出状态)


5.void  GPIO_SetBits(GPIO_TypeDef* GPIOx,uint16_t  GPIO_Pin)


函数解释:对io管脚进行置位(输出高电平)。这个函数使用GPIOx_BSRR寄存器来实现原子读或者修改操作。在这种情况下,在读和修改访问时发生一个IRQ中断是没有危险的。


参数:

(1)GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。


(2)GPIO_Pin:指定具体的io脚,如GPIO_Pin_0,GPIO_Pin_1这样的宏定义。


6.void  GPIO_ResetBits(GPIO_TypeDef* GPIOx,uint16_t  GPIO_Pin)


函数解释:对io管脚进行复位(输出低电平)。这个函数使用GPIOx_BSRR寄存器来实现原子读或者修改操作。在这种情况下,在读和修改访问时发生一个IRQ中断是没有危险的。


参数:

(1)GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。


(2)GPIO_Pin:指定具体的io脚,如GPIO_Pin_0,GPIO_Pin_1这样的宏定义。


7.void  GPIO_WriteBit(GPIO_TypeDef* GPIOx,uint16_t  GPIO_Pin,BitActionBitVal)


函数解释:对某一位进行写入操作。


参数:

(1)GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。


(2)GPIO_Pin:指定具体的io脚,如GPIO_Pin_0,GPIO_Pin_1这样的宏定义。


(3)BitVal:写入高电平或者低电平(Bit_RESET:写入低电平 Bit_SET:写入高电平)


8.void  GPIO_Write(GPIO_TypeDef* GPIOx,uint16_t  PortVal)


函数解释:对GPIO端口进行写入操作,适用于对统一端口的多个管脚的写入。


参数:

(1)GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。


(2)BitVal:写入高电平或者低电平(Bit_RESET:写入低电平 Bit_SET:写入高电平)


9.void  GPIO_ToggleBits(GPIO_TypeDef* GPIOx,uint16_t  GPIO_Pin)


函数解释:翻转指定的GPIO口,如果当前io是高电平,则变为低电平。如果当前io是低电平,则变为高电平。


参数:

(1)GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。


 (2)GPIO_Pin:指定具体的io脚,如GPIO_Pin_0,GPIO_Pin_1这样的宏定义。

推荐阅读

史海拾趣

BH Electronics公司的发展小趣事

在快速发展的过程中,BH Electronics始终注重产品品质的提升。公司引入了先进的品质管理体系,对生产过程中的每一个环节进行严格把控。同时,BH Electronics还加强了与供应商的合作,确保原材料的质量符合公司要求。这些措施有效提升了产品的整体品质,赢得了客户的信任和好评。

Dau Semiconductor Inc公司的发展小趣事

在市场竞争日益激烈的今天,Dau Semiconductor Inc公司深知只有不断创新和升级技术,才能保持市场竞争力。因此,公司不断加大对研发的投入,引进先进的设备和人才,探索新的技术方向。近年来,公司成功研发出了多款具有创新性的半导体芯片产品,如基于人工智能技术的智能芯片、基于物联网技术的低功耗传感器芯片等。这些产品的推出,不仅为公司带来了更多的商业机会,也为行业的发展注入了新的活力。

爱普特半导体(APTSEMI)公司的发展小趣事

爱普特半导体的产品因其卓越的性能和稳定的质量,赢得了众多大型企业的青睐。公司与小米、美的、阿里、LG等多家知名企业建立了战略合作关系。这些合作不仅为爱普特带来了稳定的订单和市场份额,还提升了公司的品牌影响力和行业地位。通过与这些企业的深度合作,爱普特不断吸收行业最新技术和管理经验,推动了自身技术水平和市场竞争力的提升。

High Voltage Semiconductor Inc公司的发展小趣事

随着市场需求的多样化,美高测开始提供更加定制化的高压半导体测试解决方案。公司深入了解客户的具体需求,从产品设计到售后服务,全程参与并提供专业指导。例如,针对某些特定行业的高压电缆测试需求,美高测设计并生产了具有超长测试距离和高精度测试结果的专用设备,赢得了包括军工、航空航天在内的多个高端客户的青睐。

AMOTECH(阿莫泰克)公司的发展小趣事

在多年的发展中,AMOTECH始终坚持以技术创新为核心竞争力。除了压敏电阻技术的突破外,公司还在多个领域取得了显著成果。例如,在LED照明和传感器领域,AMOTECH通过不断研发和创新,成功在韩国安山建立了第四工厂,进一步提升了公司的技术实力和产能规模。这些技术的不断突破和创新,使得AMOTECH在电子行业中始终保持领先地位。

Gravitech公司的发展小趣事

1994年,AMOTECH在韩国创立,凭借创始人的远见卓识和技术团队的扎实能力,公司迅速在电子行业中崭露头角。经过两年的努力,1996年,AMOTECH被政府通讯部评为“光明前途企业”,这是对其技术实力和市场潜力的肯定。随后,公司不断加大研发投入,终于在2000年获得ISO9000认证,这标志着AMOTECH在产品质量管理上达到了国际标准。

问答坊 | AI 解惑

安防视频监控攻守兼备 五大趋势供需利好

安防视频监控行业具备长期向好的大逻辑。首先,安全需求随着经济发展和生活水平提高而快速增长,中国社会经济加速转型也使得安全问题突出,以视频监控为主导的技术防范手段获得良好发展机遇;其次,视频监控减少对人防的依赖,符合经济发展和产业升 ...…

查看全部问答>

LM3S1138对GPIO口的操作

  刚开始使用LM3S1138,在开发例程里面看到对GPIO口引脚操作的函数,问题:有没有直接读写8bit端口的方法,就像以前的51单片机那样,P0=0xff,等等。谢谢!    …

查看全部问答>

大哥!wince 怎么做窗体嵌套啊,没有mdi

pc 程序中很容易做父子窗体 ,可是wince 中怎么实现啊,实在找不到.设置parent也不可以,说是不是预计的数据. …

查看全部问答>

图片渐进渐出效果

RT,要实现图片渐进渐出效果, 我是通过改变图片透明度来做的,但是这样速度太慢了,不行啊; 有什么好的算法或者资料吗? 谢谢! …

查看全部问答>

插上USB线,系统就很慢

插上USB线,系统就很慢 而且开发板上显示“已经连接” 但PC机上却是一直显示“正在连接” Why? …

查看全部问答>

Linux精品教程

朋友们来下载吧,绝对精品,包含全部内容!…

查看全部问答>

菜虫请教:stm32的定时器与外部中断的问题

请问stm32定时器输入捕获模式下的中断与外部中断有什么区别?都是捕捉到信号的边沿之后执行中断程序啊…

查看全部问答>

无线传感器网络和传统的传感器网络的优势劣势

小弟新人,想知道这方面的知识,希望哪位大侠给出个一二三来,让小弟好好比较比较,正在左右徘徊呀。…

查看全部问答>

FPGA 对两个同频率信号 计数 ,计数值不相等

大家好,请教各位朋友FPGA的计数器问题: FPGA(EP4CE6)设计了个双路的 计数器,对输入的两路方波信号连续计数,并每隔1us将两路计数值相减,结果送到DA输出, 如果两路输入信号是同频率的方波信号,那么DA输出的波形应该是一条直线,这在models ...…

查看全部问答>