串口USART结构体:
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;
串口USART相关库函数:
void USART_DeInit(USART_TypeDef* USARTx);
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef*
USART_InitStruct);
void USART_StructInit(USART_InitTypeDef* USART_InitStruct);
void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef*
USART_ClockInitStruct);
void USART_ClockStructInit(USART_ClockInitTypeDef*
USART_ClockInitStruct);
void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT,
FunctionalState NewState);
void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq,
FunctionalState NewState);
void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address);
void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp);
void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState
NewState);
void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t
USART_LINBreakDetectLength);
void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
void USART_SendBreak(USART_TypeDef* USARTx);
void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t
USART_GuardTime);
void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t
USART_Prescaler);
void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState
NewState);
void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState
NewState);
void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState
NewState);
void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState
NewState);
void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState
NewState);
void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode);
void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState);
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t
USART_FLAG);
void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t
USART_IT);
初始化系统
初始化GPIO、串口外设时钟
初始化串口引脚
初始化串口外设
串口发送
实验代码:(用单片机给发出a)
usart.h
#ifndef USART_H_
#define USART_H_
void my_usart_init(void);
#endif
usart.c
#include"stm32f10x.h"
#include"usart.h"
void my_usart_init(void)
{
GPIO_InitTypeDef GPIOInitstruct;
USART_InitTypeDef Usart_initstruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);
//A9
GPIOInitstruct.GPIO_Pin = GPIO_Pin_9;
GPIOInitstruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIOInitstruct.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIOInitstruct);
//A10
GPIOInitstruct.GPIO_Pin =GPIO_Pin_10;
GPIOInitstruct.GPIO_Mode =GPIO_Mode_IPU;
GPIO_Init(GPIOA,&GPIOInitstruct);
//A10
Usart_initstruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
Usart_initstruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
Usart_initstruct.USART_BaudRate = 115200;
Usart_initstruct.USART_Parity = USART_Parity_No;
Usart_initstruct.USART_StopBits = USART_StopBits_1;
Usart_initstruct.USART_WordLength = USART_WordLength_8b;
USART_Init(USART1,&Usart_initstruct);
USART_Cmd(USART1,ENABLE); //使能串口外设
}
main.c
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "shake.h"
#include "usart.h"
void delay(uint16_t time)
{
uint16_t i=0;
while(time--)
{
i =12000;
while(i--);
}
}
int main()
{
my_usart_init();
while(1)
{
USART_SendData(USART1,'a'); //向串口发送a
}
}
实验结果
嵌入式STM32学习——串口USART 2.1(串口发送字符串和字符)-CSDN博客
嵌入式STM32学习——串口USART 2.0(printf重定义及串口发送)-CSDN博客
嵌入式STM32学习——串口USART 2.2(串口中断接收)-CSDN博客