stm32中一些常用基本库函数以及串口配置步骤
2018-12-28 来源:eefocus
常用基本库函数:
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)//使能端口时钟
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;
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)//设置端口中某引脚高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)//设置端口中某引脚低电平
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)//读取输入电平
串口配置的一般步骤:
//需要分别设置传输和接收端口
//①时钟使能
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
//②串口复位
void USART_DeInit(USART_TypeDef* USARTx);
//③端口模式设置
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
//USARTx_TX模式设置为复用推挽GPIO Mode_AF_PP;USARTx_RX模式设置为浮空或上拉输入GPIO Mode_IN_FLOATING;
//④串口参数初始化
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
//⑤开启中断并初始化NVIC
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
typedef struct
{
uint8_t NVIC_IRQChannel; //IRQ通道
uint8_t NVIC_IRQChannelPreemptionPriority; //抢占优先级
uint8_t NVIC_IRQChannelSubPriority; //子优先级
FunctionalState NVIC_IRQChannelCmd; //通道使能
} NVIC_InitTypeDef;
void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);
//⑥使能串口
void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
//⑦编写中断处理函数
USARTx_IRQHandler();
//⑧串口数据收发
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
typedef struct
{
uint32_t USART_BaudRate; //波特率
uint16_t USART_WordLength; //字长
uint16_t USART_StopBits; //停止位
uint16_t USART_Parity; //奇偶校验
uint16_t USART_Mode; //发送/接收使能
uint16_t USART_HardwareFlowControl; //硬件流控制
} USART_InitTypeDef;
//⑨串口状态获取
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);