1. 中断说明
TXE(Tansmit Data Register empty interrupt) - 发送数据寄存器空,产生中断。当使能TXE后,只要Tx DR空了,就会产生中断。---写寄存器DR清零
TC(Transmission Complete interrupt) - 发送一个字节后才进入中断。---读/写寄存器DR清零,也可软件手动清零
RXNE(Receive Data register not empty interrupt)- 每接受到一个字节产生中断,接受寄存器不为空时,产生中断 ---读寄存器DR清零,也可软件手动清零
IDLE(Idle line detection interrupt) - 每接受到一帧数据产生中断(需要设置IDLE时延)
2. 串口写数据
实质:向DR寄存器中写入数据
/* Transmit Data */ USARTx->DR = (Data & (uint16_t)0x01FF);
发送数据时,如何使用 TC,TXE?
1) 使用TC 中断
/******* 功能:中断方式发送字符串.采用判断TC的方式.即 判断 发送后中断 位. 输入:字符串的首地址 输出:无 *******/ void USART_SendDataString( u8 *pData ) { pDataByte = pData; USART_ClearFlag(USART1, USART_FLAG_TC);//清除传输完成标志位,否则可能会丢失第1个字节的数据.网友提供. USART_SendData(USART1, *(pDataByte++) ); //必须要++,不然会把第一个字符t发送两次 }
/******** * Function Name : USART1_IRQHandler * Description : This function handles USART1 global interrupt request. * Input : None * Output : None * Return : None *********/ void USART1_IRQHandler(void) { if( USART_GetITStatus(USART1, USART_IT_TC) == SET ) { if( *pDataByte == '