####学到啥记录啥
传送模式
单工模式 :例如:广播 只能发送信号,不能接收信号
半双工模式:例如: 对讲机
全工模式: 例如: 手机
串口1用于下载程序,串口2用于WiFi模块的连接
PA9发送引脚,PA10接收引脚
stm32:串行的异步通信
传送一个字节需传送八个位,从高位到低位依次发送,有 发送起始位0 和 发送停止位1,
编 写 流 程
- 串口时钟、GPIO时钟使能 RCC_APB2PeriphClockCmd();
- GPIO端口模式设置 GPIO_Init();
- 串口参数初始化 USART_Init();//配置方法和GPIO 配置方法一样
- 开启中断并且初始化NVIC //通常串口要配合中断使用 NVIC_Init; USART_ITConfig();
- 使能串口 USART_Cmd();
- 编写中断处理函数 USARTx_IRQHandler();
引脚模式的设置
串口数据收发 :void USART_SendData();//发送数据 单片机通过串口向外发送或者接收数据
uint16_t USART_ReceiveData();//接收数据
//串口传输状态
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)//用来清除和中断相关的标志位
TXE: 发送数据寄存器空 //非常重要
TC: 发送完成 //非常重要
RXNE: 读数据寄存器非空
TXE: 当TDR寄存器中的数据被硬件转移到移位寄存器的时候,该位被硬件置位。如果USART_CR1寄存器中的TXEIE为1,则产生中断。对USART_DR的写操作,将该位清零
0 :数据还没有被转移到移位寄存器
1: 数据已经被转移到移位寄存器
TC: 当包含有数据的一帧发送完成后,并且TXE=1时,由硬件将该位 置 1,如果USART_CR1中的TCE 为1,则产生中断,由软件序列清楚该位(先读USART_SR,然后写入USART_DR),TC位可以通过写入0来清除,只有在多缓存通讯中才推荐这种清除程序
0:发送未完成
1:发送完成
RXNE: 当RDR移位寄存器中的数据被转移到USART_DR寄存器中,该位被硬件置位,如果USART_CR1寄存器中的RXNEIE为1,则产生中断。对USART_DR的读操作可以将该位清零,
0:数据没有收到
1:收到数据,可以读出
状态寄存器USART_SR 复位值 0x00c0
转化成16进制后,对应 位7 位6 值为1 位5值为0 即TXE TC 的复位值为1,RXNE的复位值为0! //单片机刚上电,位6 位7值为1
控制寄存器1 USART_CR1
位7 TXEIE:发送缓冲区空 中断使能 该位由软件设置或清除
0:禁止产生中断
1:当USART_SR中的TXE 为1 时,产生USART中断
位6 TCIE :发送完成中断使能 该位由软件设置或清除
0:禁止产生中断
1:当USART_SR中的TC 为1 时,产生USART中断
位5 RXNEIE: 接收缓冲区 非空 中断使能 该位由软件设置或清除
0:禁止产生中断
1:当USART_SR中的ORE或者RXNE为1时,产生USART中断