要使用NVIC中断控制器的话,那么就得加入misc.c文件,在这个文件里面包含了NVIC的主要功能代码。
1.关于USART_InitTypeDef结构体
直接看代码:
typedef struct {
uint32_t USART_BaudRate;//设置波特率
uint32_t USART_Mode;//设置模式是读还是写或者两者都是
uint32_t USART_WordLength;//设置传输的数据位长度
uint32_t USART_StopBits;//设置停止位
uint32_t USART_HardwareFlowControl;//设置硬件数据流控制
uint32_t USART_Parity;//设置是否需要奇偶校验
} USART_InitTypeDef;
下面看看每个结构体成员可以取的值:
USART_Mode
- USART_Mode_Rx: 只读
- USART_Mode_Tx: 只写
- USART_Mode_Rx | USART_Mode_Tx: 读写
USART_WordLength
- USART_WordLength_8b:
- USART_WordLength_9b: 如果开启了奇偶校验的话那么最好数据位是9位,因为校验位会插入在数据位的最高位上
USART_StopBits
- USART_StopBits_1: 一位停止位
- USART_StopBits_0_5: 0.5个停止位
- USART_StopBits_2: 2个停止位
- USART_StopBits_1_5: 1.5个停止位
USART_Parity
- USART_Parity_No: 不设置奇偶校验位
- USART_Parity_Even: 设置偶检验位
- USART_Parity_Odd: 设置奇校验位
需要注意的地方:经过计算出来得到的校验位被放在数据位的最高位,所以为了避免乱码,最好在开启了奇偶校验的话那么就将USART_WordLength设置为9位
USART_HardwareFlowControl
- USART_HardwareFlowControl_None: 不需要硬件流控制
- USART_HardwareFlowControl_RTS: request to send
- USART_HardwareFlowControl_CTS: clear to send
- USART_HardwareFlowControl_RTS_CTS:
2.相关库函数的大致使用流程
这里以伪代码简易介绍一下:
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.xxx = xxx;//填充好这个USART_InitTypeDef对象
USART_Init(USARTx, &USART_InitStructure);//应用配置
USART_Cmd(USARTx, ENABLE);//使能具体的USART
当然,前面还得配置一下端口。需要注意的是如果端口的默认功能就是用作USART的话,那么不需要开启AFIO时钟,我们只需要开启端口时钟以及usart时钟。还有就是对于STM32F103ZE来说,我们的usart1属于APB2外设。
网友评论