STM32单片机GPIO口配置问题

发布时间:2022-12-27  

  在学习STM32F单片机时,我们常常困惑什么时候才能叫入门,采用什么样的教材入门,或者采用什么的编程软件。在学习类的教材中,以神州,原点教材布局很多,但是相信很多人看到这类教材也是一头雾水,需要你花费巨大的精力从寄存器的最底层去学习和了解,学习时间还是相对漫长。在采用的编程软件中,KEIL和IAR各有优势吧,在这里我选用的是KEIL。


  在开始学习编程时,我采用的是库函数开发指南。在安装完成KEIL软件和添加项目工程时,就开始学习库函数编程。


  在编写一个GPIO口控制时,首先我们要知道我们要实现的功能,连接的IO口和怎么配置GPIO口。最常见的以LED举例来说。比如我采用PB13引脚连接LED灯的负极,按照硬件的逻辑需要置位该引脚为低电平,LED才点亮。置位高电平,LED灯熄灭。按照库函数编程的规则,我需要创建一个LED.C和一个LED.H文件,当然,也可以省事,两个不需要创建,创建的好处,方便以后直接移植修改和便于阅读理解。只有main函数中包含LED.H文件,这个头文件才会被调用,LED.C文件需要被添加进来。


  在图示中配置为引脚配置为LED灯控制引脚,在这里GPIO口配置为输出。GPIO口可以灵活配置为输入和输出。输入模式一般为四种,一般为模拟输入,浮空输入,上拉输入和下拉输入模式,也有人认为输入为模拟输入,浮空输入,弱上拉输入,强上拉输入,弱下拉输入和强下拉输入。输出一般开漏输出,推挽输出,复用开漏输出,复用推挽输出。针对输出几种模式这么来理解,开漏输出和推挽输出的最大差别在于开漏输出无法输出高电平,一般需要IO口外部默认为上拉,才能输出高电平。其电平状态要不就是0.要不就是悬空状态(在没有配置外部上拉的情况下)。推挽输出可以输出高电平和低电平。


  对于输出模式的开漏输出,推挽输出,复用开漏输出,复用推挽输出怎么理解复用这二字呢。一个GPIO口若是纯作为GPIO口,则无需考虑复用二字,若是GPIO口配置为串口,I2C,ADC,SPI等等,则是必须要考虑复用二字。


  在对GPIO口进行配置时,我们可以在LED.C文件中对GPIO口进行初始化配置,如下例所示:


  void LED_GPIO_Config(void)

  {

  //定义一个GPIO_InitTypeDef类型的结构体

  GPIO_InitTypeDef GPIO_InitStructure;

  //开启GPIO口的外部时钟

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

  //配置GPIO口

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 ;

  //配置为推挽输出

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

  //配置引脚速率50MHz*

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  //调用库函数,初始化GPIOB;

  GPIO_Init(GPIOB, &GPIO_InitStructure);

  //开启LED灯

  GPIO_ResetBits(GPIOB, GPIO_Pin_13 );

  }

  在LED.H文件中,我们需要包含#include "stm32f10x.h"和void LED_GPIO_Config(void);即可。当然也可以写一些内联函数,主要是关于GPIO口高低电平的配置。在头文件中,切记只能出现include,DEFINE,VOID等函数,不能出现类似于U8,U32等函数。


  随后我们在main函数中可以通过SET或RESET对GPIO口进行高低电平配置。当然也可以在LED.H头文件写一些内联函数,如1,0或者ON,OFF定义高低电平,然后在main函数中直接调用。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    干什么是由所使用的C语言编译器决定的。 一、问题提出 今天在单片机led模块定义函数中看到一个有趣的问题提问者在进行基本的C51编程实验,编写了一个简单的C51程序如下: 程序执行完之后,可以......
    stm32单片机5v电压怎么提供;STM32单片机一般需要供电电压为3.3V,但也有一些型号的单片机可以工作在5V电压下。在供电电压方面,有几种方法可以为STM32单片机提供5V电压:使用......
    用于输入和输出信号。GPIO引脚通常被用作LED灯、按钮、传感器等外部设备的控制和连接。   外部中断引脚:STM32单片机提供了多个外部中断引脚,可以用于处理外部事件和触发中断。外部中断引脚通常用于连接按钮、开关、传感......
    大概分为4种,分别是电源、时钟、控制和I/O引脚。stm32的引脚一般有GPIO和AFIO两种用途。 比如有的引脚是电源正极和黑色标记的电源负极,这是来给单片机提供电源的,要把......
    应商提供了改用较低级别硬件但保留原始应用程序代码的能力,使其更容易在不同设计之间迁移。支持AUTOSAR的设计旨在简化开发流程,降低总成本。在使用AUTOSAR时,Microchip为功能安全应用提供了ASIL B单片机抽象层(MCAL),为单片机提......
    嵌入式技能-51单片机仿真芯片调试; 程序是调出来的!!经常有小伙伴在知乎里面提问,说怎么实现花样流水灯,怎么实现按键控制LED灯,还有C语言的一些例子怎么输出的和自己想的不一样等等诸如此类的问题......
    ,从外部执行程序);ALE、PSEN引脚悬空即可。 (5)其他32个引脚为单片机的输入输出接口。 3.晶振电路 晶振电路是单片机的时钟源,为单片机提供执行程序的基准源,它的周期决定了单片机......
    器人项目旨在检测并避开机器人车辆路径上的障碍物。为此,在该项目中使用了超声波传感器对,它与单片机连接。如果超声波传感器检测到任何障碍物,则会向单片机提供信号,单片机又会生成适当的输出信号。该输出信号被馈送到电动机驱动器IC,该电动机驱动器IC......
    什么是51单片机?又该如何自学51单片机;51 单片机是目前使用最多的单片机之一,那么什么是 51 单片机呢?作为新手,又该如何自学 51 单片机?为帮助大家更好的学习 51 单片机,本文将对这两个问题......
    轻松地在CloudTrail Lake中分析亚马逊云科技的活动事件。现在,通过这项新功能,用户可以用自然语言提问有关亚马逊云科技API及其用户活动相关问题,例如“过去一周内每个服务记录了多少错误,每个......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>