标签:http ini cloc ext mamicode enable center 延时 ble
作用:初始化一个或者多个io口(同一组)的工作方式和速度
该函数主要是操作GPIO CRL(CRH)寄存器,在上拉或者下拉的时候有设置BSRR或者BRR寄存器
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
注意:外设(包括GPIO)在使用之前,几乎都要先使能对应的时钟
第一个参数:
GPIOA
GPIOB
GPIOC
GPIOD
GPIOE
GPIOF
GPIOG
第二个参数为一个结构体,三个变量成员
GPIO_Pin
GPIO_Pin_0
GPIO_Pin_1
GPIO_Pin_2
GPIO_Pin_3
GPIO_Pin_4
GPIO_Pin_5
GPIO_Pin_6
GPIO_Pin_7
GPIO_Pin_8
GPIO_Pin_9
GPIO_Pin_10
GPIO_Pin_11
GPIO_Pin_12
GPIO_Pin_13
GPIO_Pin_14
GPIO_Pin_15
GPIO_Speed
GPIO_Speed_10MHz = 1, GPIO_Speed_2MHz, GPIO_Speed_50MHz
GPIO_Mode
GPIO_Mode_AIN = 0x0,//模拟输入 GPIO_Mode_IN_FLOATING = 0x04,//浮空输入 GPIO_Mode_IPD = 0x28,//下拉输入 GPIO_Mode_IPU = 0x48,//上拉输入 GPIO_Mode_Out_OD = 0x14,//开漏输出 GPIO_Mode_Out_PP = 0x10,//通用推挽输出 GPIO_Mode_AF_OD = 0x1C,//复用开漏输出 GPIO_Mode_AF_PP = 0x18//复用推挽
作用:读取某个GPIO的输入电平
实际操作的是GPIOx_IDR寄存器
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:读取某组GPIO的输入电平
实际操作的是GPIOx_IDR寄存器
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
作用:读取某个GPIO的输出电平
实际操作的是GPIO_ODR寄存器
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
作用:读取某组GPIO的输出电平
实际操作的是GPIO_ODR寄存器
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal); void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
led.h
#ifndef __LED_H #define __LED_H void LED_Init(void); #endif
led.c
#include "led.h" #include "stm32f10x.h" //在任何地方都要引用头文件stm32f10x.h,使用固件库必须要用到的头文件 void LED_Init(void){ GPIO_InitTypeDef GPIO_InitStruct;// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能gpioB的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能gpioA的时钟 //初始化gpio GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStruct);//&取地址 GPIO_SetBits(GPIOB,GPIO_Pin_5);//设置io输出低电平 //初始化gpio GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOE,&GPIO_InitStruct);//&取地址 GPIO_SetBits(GPIOE,GPIO_Pin_5);//设置io口输出低电平 }
main.c
#include "stm32f10x.h" #include "led.h" #include "delay.h" int main(void){ //初始延时 delay_init(); LED_Init(); while(1) { GPIO_SetBits(GPIOB,GPIO_Pin_5); GPIO_SetBits(GPIOE,GPIO_Pin_5); delay_ms(500); GPIO_ResetBits(GPIOB,GPIO_Pin_5); GPIO_ResetBits(GPIOE,GPIO_Pin_5); delay_ms(500); } }
标签:http ini cloc ext mamicode enable center 延时 ble
原文地址:https://www.cnblogs.com/-wenli/p/10599293.html