GPIO
示例
初始化
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度 50MHz,只有配置为输出的IO引脚需要配置速率
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数配置 GPIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOE,
ENABLE); //使能 GPIOB,GPIOE 端口时钟, sys.h
IO口读写
GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5); // IO读
GPIO_SetBits(GPIOB, GPIO_Pin_5); // IO写
PBout(5); // 对ODR的位操作,返回值是PB.5的电平值,同时可以作为左值接受对PB.5的赋值
PEin(5); // 对IDR的位操作,返回值是PB.5接收到的电平值,只读
相关原型说明
初始化函数
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
用于初始化的结构体
typedef struct {
uint16_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
} GPIO_InitTypeDef;
GPIO_Mode可选模式
typedef enum {
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 // 复用推挽
} GPIOMode_TypeDef;
GPIO_Speed可选速率
typedef enum {
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
} GPIOSpeed_TypeDef;
GPIO读写
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) // IO读
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); // IO写 1
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); // IO写 0
GPIO时钟使能
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
typedef enum {
DISABLE = 0,
ENABLE = !DISABLE
} FunctionalState;
串口
示例
串口初始化基本步骤
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1); // 时钟使能
USART_DeInit(USART1); // 串口复位
USART_InitStructure.USART_BaudRate = bound; // 波特率设置,bound手动传入
USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 字长为 8 位数据格式
USART_InitStructure.USART_StopBits = USART_StopBits_1; // 一个停止位
USART_InitStructure.USART_Parity = USART_Parity_No; // 无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl
= USART_HardwareFlowControl_None; // 无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; // 收发模式
USART_Init(USART1, &USART_InitStructure); // 初始化串口
开启串口接收中断
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; // 抢占优先级 3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; // 响应优先级 3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // IRQ 通道使能
NVIC_Init(&NVIC_InitStructure); // 中断优先级初始化
标签:NVIC,Pin,USART,记录,STM32,InitStructure,Mode,GPIO,库函数
From: https://www.cnblogs.com/kimkey/p/stm32_standard_library_record.html