STM32串口设置

串口设置的一般步骤:

  1. 串口时钟使能,GPIO时钟使能
  2. 串口复位
  3. GPIO端口模式设置
  4. 串口参数初始化
  5. 开启中断并且初始化NVIC(需要开启中断才需要这个步骤)
  6. 使能串口
  7. 编写中断处理程序

串口时钟使能:

串口是挂载在APB2下面的外设,所以使能函数如下:
RCC_APB2PeriphClockCmd(RCC_APB2Perip_USART1);

串口复位:

void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
__注:__第一个参数入口是指定初始化的串口标号;第二个参数入口是一个USART_InitTypeDef类型的结构体指针,该结构体指针变量用来设置一些参数。一般实现格式如下:

USART_InitStructure.USART_BaudRate = 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); //初始化串口

数据发送与接收:

库函数操作USART_DR寄存器
数据发送函数:
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
读取接收到数据的函数:
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);

串口状态:

串口状态可以通过状态寄存器USART_SR读取
读取串口状态的函数是:
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
注: 第二个入口参数表示要查看串口的哪种状态
判断读寄存器是否非空(RXNE):
USART_GetFlagStatus(USART1, USART_FLAG_RXNE);
判断发送是否完成(TC):
USART_GetFlagStatus(USART1, USART_FLAG_TC);
标识的宏定义:

#define USART_IT_PE ((uint16_t)0x0028)
#define USART_IT_TXE ((uint16_t)0x0727)
#define USART_IT_TC ((uint16_t)0x0626)
#define USART_IT_RXNE ((uint16_t)0x0525)
#define USART_IT_IDLE ((uint16_t)0x0424)
#define USART_IT_LBD ((uint16_t)0x0846)
#define USART_IT_CTS ((uint16_t)0x096A)
#define USART_IT_ERR ((uint16_t)0x0060)
#define USART_IT_ORE ((uint16_t)0x0360)
#define USART_IT_NE ((uint16_t)0x0260)
#define USART_IT_FE ((uint16_t)0x0160)

串口使能:

USART_Cmd(USART1, ENABLE);

开启串口响应中断:

使能串口中断的函数是:
void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState)
注: 该函数第二个参数入口是表示使能串口的类型,即使能哪种中断。例如在接收数据的时候开启中断的方法是:
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启中断,接收到数据中断
在发送数据结束要产生中断的方法是:
USART_ITConfig(USART1, USART_IT_TC, ENABLE);

获取相应的状态:

判断中断的类型使用的函数是:
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT)
判断到底是否是串口发送完成中断方法是:
USART_GetITStatus(USART1, USART_IT_TC)
返回值是SET,说明串口发送完成中断发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值