首页 > 其他分享 >STM32标准库函数记录

STM32标准库函数记录

时间:2022-12-04 17:57:45浏览次数:46  
标签:NVIC Pin USART 记录 STM32 InitStructure Mode GPIO 库函数

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

相关文章