STM32学习记录之GPIO篇

来源:互联网 发布:网络21 编辑:程序博客网 时间:2024/05/16 10:22

本篇学习目的:
一、学会对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_Allvoid 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);}