STM32学习笔记(随时补充中)

RCC使能函数(待补充)

GPIO_InitTypeDef

GPIO_InitTypeDef 是一个结构体,用于配置STM32微控制器的GPIO引脚。这个结构体包含了多个成员变量,每个成员变量用来设置GPIO的不同属性,比如模式(输入/输出)、类型(推挽/开漏)、速度等。在使用标准外设库(SPL)或硬件抽象层(HAL)时,你需要填充这个结构体来初始化GPIO引脚。

在标准外设库(SPL)中,GPIO_InitTypeDef 结构体定义如下:

typedef struct
{
  uint16_t GPIO_Pin;            // 要配置的GPIO引脚
  GPIOSpeed_TypeDef GPIO_Speed; // GPIO引脚的速度
  GPIOMode_TypeDef GPIO_Mode;   // GPIO引脚的工作模式
}GPIO_InitTypeDef;

而在较新的HAL库中,GPIO_InitTypeDef 结构体可能会包含更多的选项,例如上拉/下拉配置。下面是一个HAL库中的 GPIO_InitTypeDef 结构体的例子:

typedef struct
{
  uint32_t Pin;               // 指定要配置的GPIO引脚
  uint32_t Mode;              // 引脚模式:输入、输出、复用功能、模拟
  uint32_t Pull;              // 上拉/下拉配置
  uint32_t Speed;             // 输出速度
  uint32_t Alternate;         // 复用功能选择
}GPIO_InitTypeDef;

GPIO_InitTypeDef 结构体成员介绍

  1. Pin
    • 类型: uint32_t

    • 说明: 指定要配置的GPIO引脚。

    • 可选值: 使用预定义的宏来指定,例如 GPIO_PIN_0GPIO_PIN_1, ..., GPIO_PIN_15 或者使用 GPIO_PIN_All 来选择所有引脚。也可以通过按位或运算符 (|) 组合多个引脚。

  2. Mode      
  3. 1.类型: uint32_t    

  4.  2. 说明: 指定选定引脚的操作模式。

    • 可选值:

      • GPIO_MODE_INPUT: 输入模式

      • GPIO_MODE_OUTPUT_PP: 推挽输出模式

      • GPIO_MODE_OUTPUT_OD: 开漏输出模式

      • GPIO_MODE_AF_PP: 复用推挽输出模式

      • GPIO_MODE_AF_OD: 复用开漏输出模式

      • GPIO_MODE_ANALOG: 模拟模式

      • GPIO_MODE_IT_RISING: 中断触发模式,上升沿

      • GPIO_MODE_IT_FALLING: 中断触发模式,下降沿

      • GPIO_MODE_IT_RISING_FALLING: 中断触发模式,上升沿和下降沿

      • GPIO_MODE_EVT_RISING: 事件触发模式,上升沿

      • GPIO_MODE_EVT_FALLING: 事件触发模式,下降沿

      • GPIO_MODE_EVT_RISING_FALLING: 事件触发模式,上升沿和下降沿

  5. Pull
    • 类型: uint32_t

    • 说明: 指定选定引脚的上拉或下拉激活状态。

    • 可选值:

      • GPIO_NOPULL: 不使用上拉/下拉

      • GPIO_PULLUP: 启用上拉电阻

      • GPIO_PULLDOWN: 启用下拉电阻

  6. Speed
    • 类型: uint32_t

    • 说明: 指定选定引脚的速度。

    • 可选值:

      • GPIO_SPEED_FREQ_LOW: 低速 (最高2 MHz)

      • GPIO_SPEED_FREQ_MEDIUM: 中速 (最高10 MHz)

      • GPIO_SPEED_FREQ_HIGH: 高速 (最高50 MHz)

      • GPIO_SPEED_FREQ_VERY_HIGH: 极高速 (最高100 MHz, 仅适用于某些系列)

  7. Alternate
    • 类型: uint32_t

    • 说明: 当引脚被设置为复用功能时,指定要连接到所选引脚的外设功能。

    • 可选值: 根据具体的硬件手册来确定,通常是一个数字,表示特定的复用功能编号。

GPIO标准外设库接口函数:

  GPIO 读取和写入

  • uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 从指定的GPIO端口GPIOx读取单个引脚GPIO_Pin的状态。

  • uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx); 从指定的GPIO端口GPIOx读取所有输入引脚的状态。

  • void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal); 将指定的GPIO端口GPIOx上的某个引脚GPIO_Pin设置为BitVal状态(高或低)。

  • void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); 向指定的GPIO端口GPIOx的所有引脚写入数据PortVal

  • void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 设置指定GPIO端口GPIOx上一个或多个引脚GPIO_Pin为高电平。

  • void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 设置指定GPIO端口GPIOx上一个或多个引脚GPIO_Pin为低电平。

  • void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 切换指定GPIO端口GPIOx上一个或多个引脚GPIO_Pin的状态。

其他功能

  • void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 锁定指定GPIO端口GPIOx上的引脚配置,防止意外改变。

  • FlagStatus GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 读取指定GPIO端口GPIOx上输出引脚GPIO_Pin的实际输出值。

  • 	//循环执行语句
    	//GPIO_ResetBits(GPIOA, GPIO_Pin_0);//低电平,亮
    	GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET); //与上句效果相同
    	Delay(10000);
    	//GPIO_SetBits( GPIOA, GPIO_Pin_0);//高电平 ,灭
        GPIO_WriteBit(GPIOA, GPIO_Pin_0,Bit_SET); //前两个选择 引脚 ,第三个参数选择高低电平
    	Delay(10000);

外部中断

EXTI 中断向量

STM32F10x 系列微控制器的 EXTI 中断向量包括以下几种:

  • EXTI0_IRQn:处理 EXTI 线 0 的中断。

  • EXTI1_IRQn:处理 EXTI 线 1 的中断。

  • EXTI2_IRQn:处理 EXTI 线 2 的中断。

  • EXTI3_IRQn:处理 EXTI 线 3 的中断。

  • EXTI4_IRQn:处理 EXTI 线 4 的中断。

  • EXTI9_5_IRQn:处理 EXTI 线 5 到 9 的中断。

  • EXTI15_10_IRQn:处理 EXTI 线 10 到 15 的中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值