新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32串口中斷的一些資料

STM32串口中斷的一些資料

作者: 時間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
在研究STM32串口接收發(fā)送中斷的時候找到不少不錯的資料,現(xiàn)在備份在這里。以供自己查閱,以及方便其他人。

TC====TXE

本文引用地址:http://butianyuan.cn/article/201611/318082.htm

順便預(yù)告下最近會寫個有關(guān)串口處理數(shù)據(jù)的帖子,從查詢和中斷方面以及數(shù)據(jù)處理的方式,從隊(duì)列以及FIFO方面寫起。

SECTION1

SECTION2

先說TC。即TransmissionComplete。發(fā)送一個字節(jié)后才進(jìn)入中斷,這里稱為“發(fā)送后中斷”。和原來8051的TI方式一樣,都是發(fā)送后才進(jìn)中斷,需要在發(fā)送函數(shù)中先發(fā)送一個字節(jié)觸發(fā)中斷。發(fā)送函數(shù)如下

/*
功能:中斷方式發(fā)送字符串.采用判斷TC的方式.即判斷發(fā)送后中斷位.
輸入:字符串的首地址
輸出:無
*/
voidUSART_SendDataString(u8*pData)
{
pDataByte=pData;

USART_ClearFlag(USART1,USART_FLAG_TC);//清除傳輸完成標(biāo)志位,否則可能會丟失第1個字節(jié)的數(shù)據(jù).網(wǎng)友提供.

USART_SendData(USART1,*(pDataByte++));//必須要++,不然會把第一個字符t發(fā)送兩次
}


中斷處理函數(shù)如下
/
*FunctionName:USART1_IRQHandler
*Description:ThisfunctionhandlesUSART1globalinterruptrequest.
*Input:None
*Output:None
*Return:None
*/
voidUSART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1,USART_IT_TC)==SET)
{
if(*pDataByte==