本篇学习目的:
一、学会对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);
}
上一篇:STM32之GPIO按键实验
下一篇:使用stm32f103 PA11不能正常使用IO问题
推荐阅读最新更新时间:2024-03-16 16:13