STM32标准库函数学习笔记 --- GPIO部分

//标准库函数学习
//GPIO部分:
//常用函数:
     1.void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState);
    /*
        函数功能:打开AHB1外设时钟
        返回值:void
        形参:
            ①uint32_t RCC_AHB1Periph-----------RCC_AHB1Periph_GPIOx(对应具体IO口)
            ②FunctionalState NewState----------具体状态(使能 / 禁止)
    */
    
    2.void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
    /*
        函数功能:初始化GPIO
        返回值:void
        形参:
            ①GPIO_TypeDef* GPIOx-------------GPIOx(具体GPIO端号)
            ②GPIO_InitTypeDef* GPIO_InitStruct-----------------&GPIO_InitStruct(具体GPIO结构体地址)
    */
    
    3.void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    /*
        函数功能:管脚置位
        返回值:void
        形参:
            ①GPIO_TypeDef* GPIOx---------------GPIOx(具体GPIO端号)
            ②uint16_t GPIO_Pin----------------GPIO_Pin_x(具体管脚号)
    */
    
    3.void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    /*
        函数功能:管脚复位
    */
    
    4.uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    /*
        函数功能:读取对应位输入数据
        返回值:uint8_t
        形参:
            ①GPIO_TypeDef* GPIOx---------------GPIOx(具体GPIO端号)
            ②uint16_t GPIO_Pin----------------GPIO_Pin_x(具体管脚号)
    */
    
    5.uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    /*
        函数功能:读取对应位输出数据
        返回值:uint8_t
        形参:
            ①GPIO_TypeDef* GPIOx---------------GPIOx(具体GPIO端号)
            ②uint16_t GPIO_Pin----------------GPIO_Pin_x(具体管脚号)
    */
    
    6.void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
    /*
        函数功能:向对应管脚写入对应数据
        返回值:void
        形参:
            ①GPIO_TypeDef* GPIOx---------------GPIOx(具体GPIO端号)
            ②uint16_t GPIO_Pin----------------GPIO_Pin_x(具体管脚号)
            ③BitAction BitVal-----------------Bit_RESET / Bit_SET(复位或置位)
    */
    
    7.void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);
    /*
        函数功能:配置管脚复用映射关系
        返回值:void
        形参:
            ①GPIO_TypeDef* GPIOx---------------GPIOx(具体GPIO端号)
            ②uint16_t GPIO_PinSource-----------GPIO_PinSource_x(具体复用管脚号)
            ③uint8_t GPIO_AF-------------------GPIO_AF_xxxx(具体外设复用对象)
    */


//GPIO初始化中相关结构体成员解析:
    1.GPIO_InitStruct.GPIO_Pin = ;//引脚选择
    //可选填如下:
    #define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */
    #define GPIO_Pin_1                 ((uint16_t)0x0002)  /* Pin 1 selected */
    #define GPIO_Pin_2                 ((uint16_t)0x0004)  /* Pin 2 selected */
    #define GPIO_Pin_3                 ((uint16_t)0x0008)  /* Pin 3 selected */
    #define GPIO_Pin_4                 ((uint16_t)0x0010)  /* Pin 4 selected */
    #define GPIO_Pin_5                 ((uint16_t)0x0020)  /* Pin 5 selected */
    #define GPIO_Pin_6                 ((uint16_t)0x0040)  /* Pin 6 selected */
    #define GPIO_Pin_7                 ((uint16_t)0x0080)  /* Pin 7 selected */
    #define GPIO_Pin_8                 ((uint16_t)0x0100)  /* Pin 8 selected */
    #define GPIO_Pin_9                 ((uint16_t)0x0200)  /* Pin 9 selected */
    #define GPIO_Pin_10                ((uint16_t)0x0400)  /* Pin 10 selected */
    #define GPIO_Pin_11                ((uint16_t)0x0800)  /* Pin 11 selected */
    #define GPIO_Pin_12                ((uint16_t)0x1000)  /* Pin 12 selected */
    #define GPIO_Pin_13                ((uint16_t)0x2000)  /* Pin 13 selected */
    #define GPIO_Pin_14                ((uint16_t)0x4000)  /* Pin 14 selected */
    #define GPIO_Pin_15                ((uint16_t)0x8000)  /* Pin 15 selected */
    #define GPIO_Pin_All               ((uint16_t)0xFFFF)  /* All pins selected */
    
    2.GPIO_InitStruct.GPIO_Mode = ;//模式选择
    //可选填如下:
    GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */---输入模式
    GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */---输出模式
    GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */--复用模式
    GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */---模拟模式

    3.GPIO_InitStruct.GPIO_Speed = ;//输出速度选择
    //可选填如下:
    #define  GPIO_Speed_2MHz    GPIO_Low_Speed    
    #define  GPIO_Speed_25MHz   GPIO_Medium_Speed 
    #define  GPIO_Speed_50MHz   GPIO_Fast_Speed 
    #define  GPIO_Speed_100MHz  GPIO_High_Speed 
    
    4.GPIO_InitStruct.GPIO_OType = ;//输出类型选择
    //可选填如下:
    GPIO_OType_PP = 0x00 --- 浮空
    GPIO_OType_OD = 0x01 --- 开漏

    5.GPIO_InitStruct.GPIO_PuPd = ;//上下拉选择
    //可选填如下:
    GPIO_PuPd_NOPULL = 0x00 --- 无上下拉
    GPIO_PuPd_UP     = 0x01 --- 上拉
    GPIO_PuPd_DOWN   = 0x02 --- 下拉


//库函数初始化LED与点亮例程:

#include "led.h"


#define  LED3_ON  (GPIO_ResetBits(GPIOB,GPIO_Pin_9))//点亮LED3
#define  LED3_OFF  (GPIO_SetBits(GPIOB,GPIO_Pin_9))//熄灭LED3

#define  LED4_ON  (GPIO_ResetBits(GPIOB,GPIO_Pin_8))//点亮LED4
#define  LED4_OFF  (GPIO_SetBits(GPIOB,GPIO_Pin_8))//熄灭LED4

#define  LED3_TAG  (GPIOB->ODR ^= 1 << 9)//翻转LED3
#define  LED4_TAG  (GPIOB->ODR ^= 1 << 8)//翻转LED4


/*
    函数功能:LED初始化
    返回值:void
    形参:void
    函数说明:
    LED4----PB8-----R----通用推挽输出
    LED3----PB9-----G----通用推挽输出
*/
void Led_Init(void)
{
    //打开时钟GPIOB
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);//打开GPIOB的时钟
    
    //初始化IO口
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;//输出模式
    GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;//推挽输出类型
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;//管脚
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;//无上下拉
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//输出速度
    GPIO_Init(GPIOB,&GPIO_InitStruct);
    
    
    //配置LED默认电平
    GPIO_SetBits(GPIOB,GPIO_Pin_8);//拉高PB8
    GPIO_SetBits(GPIOB,GPIO_Pin_9);
    
    
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值