STM32学习之:GPIO最简单操作步骤

 

需用到的".c"库函数为 stm32f10x_gpio.c 和stm32f10x_rcc.c
 
1.  启动相应Port x的RCC(复位始终控制)
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE);
    x可以是A到G , GPIO都由APB2(高速外设)时钟控制
2.  GPIO初始结构中的三个参数赋值(该结构名需程序前定义:"GPIO_InitTypeDef  GPIO_InitStructure;")
    三个参数分别为
    引脚:GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;
    速度:GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
    模式:GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
    三个参数的取值可查《固件函数库》
3.  用GPIO初始化函数  GPIO_Init(GPIOx,&GPIO_InitStructure) ,将前面赋完值的结构定义到Port x上
    x可以是A到G;
4.  接着即可用GPIO_ResetBits(GPIOx,GPIO_Pin_y) 函数将引脚置0 
     或  用GPIO_SetBits(GPIOx,GPIO_Pin_y) 函数将引脚置1
     x可以是:A到F;
     y可以是:0到15;多个可用" | "隔开,如:GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9
5.  也可以用GPIO_ReadInputDataBit(GPIOx,GPIO_Pin_y)函数读取输入引脚的值
      或 用GPIO_ReadOutputDataBit(GPIOx,GPIO_Pin_y)函数读取输出引脚的值
      x可以是:A到F;
      y可以是:0到15;多个可用" | "隔开,如:GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9
注:a)读取整个Port 值的函数为GPIO_ReadInputData(GPIOx)和GPIO_ReadOutputData(GPIOx)
        b)写整个Port 值的函数为GPIO_Write(GPIOx,数值)
        c)一般按前3步启动后,被设定的GPIO引脚都会被置0(低电平)
 
 

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 下面是一个简单STM32MP157 GPIO程序的示例: 1.首先,您需要在STM32CubeMX中配置GPIO引脚。 2.然后,在您的代码中包含以下头文件: ```c #include "stm32mp1xx_hal.h" #include "stm32mp1xx_hal_gpio.h" ``` 3.在您的代码中定义GPIO端口和引脚: ```c GPIO_TypeDef *GPIOx; uint16_t GPIO_Pin; ``` 4.初始化GPIO: ```c void GPIO_Init(void) { GPIOx = GPIOA; GPIO_Pin = GPIO_PIN_5; __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = GPIO_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOx, &GPIO_InitStruct); } ``` 5.在您的代码中使用GPIO: ```c HAL_GPIO_WritePin(GPIOx, GPIO_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOx, GPIO_Pin, GPIO_PIN_RESET); ``` 这是一个简单GPIO程序示例,您可以根据自己的需求进行修改和扩展。希望对您有所帮助! ### 回答2: 写STM32MP157的GPIO程序可以通过以下步骤实现: 1. 首先,需要在代码中包含STM32MP157的GPIO头文件。这可以通过以下代码完成: ```c #include "stm32mp157_gpio.h" ``` 2. 接下来,需要初始化所需的GPIO引脚。可以使用`HAL_GPIO_Init()`函数来设置引脚的模式、速度和上下拉电阻。例如,如果我们要初始化GPIOA的引脚5为输出模式,可以使用以下代码: ```c GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); ``` 3. 如果需要读取GPIO引脚的状态,可以使用`HAL_GPIO_ReadPin()`函数。例如,如果我们要读取GPIOB的引脚3的状态,可以使用以下代码: ```c GPIO_PinState pinState = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3); ``` 4. 如果需要将GPIO引脚设置为高或低电平,可以使用`HAL_GPIO_WritePin()`函数。例如,如果我们要将GPIOC的引脚2设置为高电平,可以使用以下代码: ```c HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_SET); ``` 以上是一个简单STM32MP157的GPIO程序的基本框架,可以根据具体的需求进行相应的修改和扩展。 ### 回答3: 写STM32MP157的GPIO程序需要以下步骤: 1. 首先,引入STM32MP1的HAL库和相关头文件。可以使用CubeMX来生成代码模板,以确保正确引入和配置。 2. 在主函数中,初始化GPIO引脚。通过调用HAL库中的函数可以实现这一步骤。例如,使用`HAL_GPIO_Init()`函数来配置GPIO引脚的模式、速度和上下拉等参数。 3. 在主循环中,可以使用`HAL_GPIO_ReadPin()`函数来读取GPIO引脚的状态。这个函数接受一个GPIO引脚的参数,并返回其状态(高或低)。 4. 如果需要,可以使用`HAL_GPIO_WritePin()`函数来设置GPIO引脚的状态。这个函数接受一个GPIO引脚的参数和一个状态参数(高或低),并将引脚设置为相应的状态。 5. 如果需要实现外部中断,可以通过适当的配置来使用GPIO引脚的外部中断功能。可以使用`HAL_GPIO_EXTI_Callback()`函数来定义中断发生时的回调函数,并在回调函数中执行相应的操作。 6. 最后,在`main()`函数的末尾,可以使用`HAL_GPIO_DeInit()`函数来释放GPIO引脚的资源。 以上是一个基本的GPIO程序示例,可根据具体需求进行修改和扩展。但是请注意,在编写STM32MP157的GPIO程序时,需要确保正确配置和初始化相关引脚的时钟和寄存器等参数。此外,还需注意GPIO引脚的多路复用功能和推挽/开漏输出等设置,以适应实际需求和应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值