一 初始化GPIO流程 以及点亮LED

点亮LED 需要单片机上的GIPIO端口引脚 输出对应的电压来对LED进行点亮 ,关于GPIO的初始化流程其实我们只需要牢牢记住这张图即可
具体参考: https://blog.csdn.net/k666499436/article/details/123971479
一 初始化GPIO流程 以及点亮LED_第1张图片

1. GPIO的初始化 流程

  1. 使能时钟

    • 在stm32中, 每个GPIO 端口都有一个与之对应的时钟线,在使用GPIO之前,必须使能其时钟,通常 通过修改RCC(Reset and Clock Control) 相关的寄存器来实现
  2. 配置GPIO的引脚模式

    • 根据需要选择对应的输出模式 ,比如 输入模式(GPIO_Mode_IN)、输出模式(GPIO_Mode_OUT)、模拟模式(GPIO_Mode_AN)
  3. 设置输出类型(有图选择输出模式的话就是走下面的部分)

    • 如推挽输出(GPIO_OType_PP)或开漏输出(GPIO_OType_OD)。
  4. 配置引脚速度

    • 设置GPIO引脚的输出速度。这可以是低速(GPIO_Speed_2MHz)、中速(GPIO_Speed_25MHz)、高速(GPIO_Speed_50MHz)或非常高速(GPIO_Speed_100MHz)
  5. 配置上拉/下拉电阻

    • 选择是否需要内部上拉 (GPIO_PuPd_UP)或下拉(GPIO_PuPd_DOWN)电阻,或者无上拉下拉(GPIO_PuPd_NOPULL)。
  6. 初始化GPIO的引脚

    • 选择对应需要的引脚
  7. (可选)配置中断:

  • 如果需要,配置GPIO引脚以触发中断。这通常涉及到中断优先级,设置以及中断处理函数的编写。
  1. (可选)配置替代功能:
  • 如果GPIO引脚被用作替代功能(如用于USART、SPI或I2C通信),还需要配置替代功能寄存器(AFR)来选择具体的外设功能。

2. 代码


#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
/*使用32控制 gpiob-> pin_8 引脚 */

void delay(uint32_t time) ;
int main()
{     

      //使能时钟
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);


      GPIO_InitTypeDef GPIO_InitStruct ; 
      GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8 ; 
      GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT ; 
      GPIO_InitStruct.GPIO_OType = GPIO_OType_PP ; 
      GPIO_InitStruct.GPIO_PuPd =  GPIO_PuPd_UP ; 
      GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz ; 

      //GPIO 初始化
     GPIO_Init(GPIOB,  &GPIO_InitStruct);

    //寄存器输出 
    //  void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    // void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);   
    while(1)
    {
    //清除ODR寄存器中的对应位来将GPIOB的8号引脚清零(设置为低电平)
      GPIO_ResetBits(GPIOB ,  GPIO_Pin_8 ) ; 
      delay(1000); 
     // 在BSRR寄存器中写入对应的位,将GPIOB的8号引脚设置为高电平。
      GPIO_SetBits(GPIOB ,  GPIO_Pin_8 ) ; 
      delay(1000); 
    } 
}
void delay(uint32_t time)
{
  uint32_t i , j ; 
  for(i = 0 ; i < time ; i++)
  {
    for(j = 0 ; j < 0xfff ; j++)
    { }
  }
}

你可能感兴趣的:(STM32,单片机,stm32,嵌入式硬件)