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
结构体成员介绍
-
Pin
-
类型:
uint32_t
-
说明: 指定要配置的GPIO引脚。
-
可选值: 使用预定义的宏来指定,例如
GPIO_PIN_0
,GPIO_PIN_1
, ...,GPIO_PIN_15
或者使用GPIO_PIN_All
来选择所有引脚。也可以通过按位或运算符 (|
) 组合多个引脚。
-
-
Mode
-
1.类型:
uint32_t
-
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
: 事件触发模式,上升沿和下降沿
-
-
-
Pull
-
类型:
uint32_t
-
说明: 指定选定引脚的上拉或下拉激活状态。
-
可选值:
-
GPIO_NOPULL
: 不使用上拉/下拉 -
GPIO_PULLUP
: 启用上拉电阻 -
GPIO_PULLDOWN
: 启用下拉电阻
-
-
-
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, 仅适用于某些系列)
-
-
-
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 的中断。