Day5 STM32之GPIO(?)

1. 什么是GPIO

        General Purpose Input Output,通用输入输出端口

        输入        采集外部器件的信息

        输入        控制外部器件工作

2. GPIO的八种模式分析

        输入浮空        输入用,完全浮空,状态不定

        输入上拉        输入用,用内部上拉,默认高电平

        输入下拉        输入用,用内部下拉,默认低电平

        模拟功能        ADC、DAC

        开漏输出        软件IIC的SDL、SCL等

        推挽输出        驱动能力强,25mA(max),通用输出

        开漏式复用功能        片上外设功能

        推挽式复用功能        片上外设功能

3. GPIO寄存器介绍

        CRL、CRH        配置工作模式,输出速度

        IDR        输入数据

       ODR        输出数据

        BSRR        设置ODR寄存器的值

        BRR        不用管

        LCKR        配置锁定,不怎么用

4. 通用外设驱动模型(四步法)

        初始化        时钟设置、参数设置、IO设置、中断设置

        读函数        从外设读取数据

        写函数        从外设写入数据

        中断服务函数        根据中断标志,处理外设各种中断事务

5. GPIO配置步骤

        使能时钟        __HAL_RCC_GPIOx_CLK_ENABLE()

        设置工作模式        HAL_GPIO_Init()

        设置输出状态        HAL_GPIO_WritePin()、HAL_GPIO_TogglePin()

        读取输入状态        HAL_GPIO_ReadPin()

6. 相关HAL库函数简介

6.1 __HAL_RCC_GPIOx_CLK_ENABLE()

        用于启用特定GPIO端口的时钟

6.2 HAL_GPIO_Init()

        函数定义        void HAL_GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_Init)

        函数描述        根据GPIO_Init中指定的参数初始化GPIOx外设

        参数                GPIOx: 外设选择

                               GPIO_Init: GPIO句柄
// 创建一个GPIO_InitTypeDef结构体并初始化
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_0;            // 引脚0
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  // 推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL;          // 无上下拉电阻
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 低速输出

// 初始化GPIOA的引脚0
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
6.3 HAL_GPIO_WritePin() 

        函数定义        void HAL_GPIO_WritePin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

        函数描述        设置或清除选中的端口位

        参数               GPIOx:外设选择

                              GPIO_Pin:指定要写入的端口位,这个参数可以是GPIO_PIN_x中的一个

                              PinState:指定要写入的值

// 将GPIOA的引脚0设置为高电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);

// 将GPIOB的引脚1设置为低电平
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
6.4 HAL_GPIO_TogglePin()

        函数定义        void HAL_GPIO_TogglePin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin)

        函数描述        翻转指定的GPIO引脚

        参数               GPIOx:外设选择

                              GPIO_Pin:指定要写入的端口位,这个参数可以是GPIO_PIN_x中的一个

// 翻转GPIOA的引脚0状态
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);

// 翻转GPIOB的引脚1状态
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);
6.5 HAL_GPIO_ReadPin()

        函数定义        GPIO_PinState HAL_GPIO_ReadPin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin)

        函数描述        读取指定端口引脚

        参数              GPIOx:外设选择

                             GPIO_Pin:指定要写入的端口位,这个参数可以是GPIO_PIN_x中的一个

        返回值           输出端口引脚值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值