STM32学习记录之GPIO篇

本篇学习目的:
一、学会对STM32芯片GPIO的基本操作
二、对GPIO的相关函数进行二次封装,以便于后期开发

开发板GPIO原理图如下
这里写图片描述

由图可知LED接在GPIOC的PC0-PC7

STM的GPIO有如下8中模式
这里写图片描述

GPIO相关库函数
GPIO模式配置函数:GPIO_Init(GPIO_TypeDef *GPIOx,GPIO_InitTypeDef *GPIO_InitStruct);
第一个参数用来指定GPIO口,取值范围GPIOA—GPIOG
第二个参数用来初始化参数结构体指针,参数结构体定义如下:

typedef struct{
    uint16_t GPIO_Pin; //选择要设置的Pin口
    GPIOSpeed_TypeDef GPIO_Speed;//设置IO的速率
    GPIOMode_TypeDef GPIO_Mode;//设置IO的工作模式
}GPIO_InitTypeDef;

GPIO实验例程:

#define LED  GPIO_Pin_All
void Led_Init(){
    GPIO_InitTypeDef GPIO_InitStruct;   //声明一个参数结构体变量

    SystemInit();//初始化系统时钟
    RCC_APB2PerichClockCmd(RCC_APB2Perich_GPIOC,ENABLE);

    //具体参数配置
    GPIO_InitStruct.GPIO_Pin = LED;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
    //初始化GPIO
    GPIO_Init(GPIOC,&GPIO_InitStruct);
}

GPIO输出函数
GPIO_Write(GPIO_TypeDef* GPIOx,u16 PortVal);
该函数一次操作一组GPIO。

GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
该函数将相应的位置为1

GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
该函数将相应的位置为0

实验例程:

void Led_DisPlay(){
    GPIO_SetBits(GPIOC,LED); // close
    delay(6000000);//自定义延迟函数,约1s
    GPIO_ResetBits(GPIOC,LED);// open
    delay(6000000);
}

猜你喜欢

转载自blog.csdn.net/u012778549/article/details/78745697