设为首页 加入收藏

TOP

明解STM32—GPIO应用设计篇之API函数及配置使用技巧(三)
2023-07-23 13:26:55 】 浏览:76
Tags:明解 STM32 GPIO 应用设 计篇之 API
p;也可以用于多个引脚电平的置位。

1 GPIO_SetBits(GPIOA, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);

(10)、void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

        作用:清零相应GPIO端口引脚的电平值。

        举例:将GPIOA的pin1管脚电平置为0。

1 GPIO_ResetBits(GPIOA, GPIO_Pin_1);

        也可以用于多个引脚电平的清零。

1 GPIO_ResetBits(GPIOA, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);

(11)、void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);

        作用:将GPIO端口的指定管脚电平置1或置0。

        举例:将GPIOA的pin1管脚电平置为1。

1 GPIO_WriteBit(GPIOA, GPIO_Pin_1, 1);

        也可以用于多个引脚电平操作。

1 GPIO_WriteBit(GPIOA, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3, 1);

(12)、void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

        作用:将GPIO端口的所有管脚电平置1或置0。

        举例:将GPIOA端口的所有管脚电平置为1。

1 GPIO_Write(GPIOA, 1);

(13)、void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

        作用:翻转指定GPIO引脚的输出电平,即0变为1,1变为0。

        举例:翻转GPIOA的pin1管脚电平值。

1 GPIO_ToggleBits(GPIOA , GPIO_Pin_1);

(14)、void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);

        作用:将GPIO的指定管脚配置成复用功能管脚。

        举例:将GPIOA的pin9管脚配置成串口USART1的功能管脚。

1 GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);

三、配置流程

        配置流程主要在实际的驱动配置中对GPIO进行初始化的操作,根据实际项目应用开发中的芯片GPIO引脚的定义,进行合理的配置。图3所示为GPIO的基本配置操作流程。?

图3 GPIO配置流程

(1)、使能对应GPIO的时钟

        在配置GPIO的开始,首先需要将对应的GPIO模块的时钟打开,这样才能为GPIO工作提供动力源,因此只有先将GPIO的时钟打开才能使GPIO正常的工作。

        关于STM32芯片内部整体的时钟系统,可以回顾之前明解STM32时钟系统的文章介绍。STM32的GPIO模块是挂载在芯片内部AHB1总线(AHB:高级高性能总线)上的外设,因此就需要打开GPIO在AHB1总线上对应的时钟。AHB1总线上的外设时钟开关在STM32提供的标准库函数中通过函数 RCC_AHB1PeriphClockCmd ()来实现的。例如调用:

1 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

         这样就将GPIOA的时钟打开,也可以同时打开多个GPIO端口的时钟:

1 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB, ENABLE);

(2)、引脚功能配置

        接下来对GPIO引脚的配置是需要根据实际的项目应用要求,根据各个芯片管脚的定义来对引脚的功能进行合理的配置,主要是根据引脚是使用成普通IO输出还是输入,复用功能还是模拟管脚来调用GPIO_Init()函数进行配置。举例说明:

用于普通IO输出时:

1 GPIO_WriteBit(GPIOA, GPIO_Pin_1, 1);//向引脚输出0或1电平,在GPIO_Init前调用
2 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//设置使用引脚
3 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通IO输出
4 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//根据实际应用配置输出结构类型
5 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//根据实际应用配置输出速度
6 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//根据实际应用配置上拉或下拉电阻
7 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化PA1引脚

        需要注意的是,初始化输

首页 上一页 1 2 3 4 5 下一页 尾页 3/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇痞子衡嵌入式:恩智浦i.MX RT1xxx.. 下一篇《痞子衡嵌入式半月刊》 第 76 期

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目