新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32單片機(jī)中UART的使用過程

STM32單片機(jī)中UART的使用過程

作者: 時(shí)間:2013-02-22 來源:網(wǎng)絡(luò) 收藏

而后使能收發(fā)中斷。如:

/* Enable USART1 Receive and Transmit interrupts */

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

USART_ITConfig(USART1, USART_IT_TXE, ENABLE);

// USART_ITConfig(USART1, USART_IT_TXE, DISABLE);

注意:一般不將TXE中斷使能。因?yàn)橐坏⒋酥袛嗍鼓?,如?a class="contentlabel" href="http://2s4d.com/news/listbylabel/label/UART">UART發(fā)送緩沖區(qū)空,則會(huì)立即進(jìn)入中斷中,因此可在程序中需要發(fā)送數(shù)據(jù)處,使能TXE中斷。在中斷種用USART_SendData()來發(fā)送數(shù)據(jù)。

完成中斷使能后,還需要使能UART口:

如:

/* Enable the USART1 */

USART_Cmd(USART1, ENABLE);

/* Enable the USART2 */

USART_Cmd(USART2, ENABLE);

中斷程序(stm32f10x_it.c)可以如下完成發(fā)送:注意所有的的串口中斷需要在中斷服務(wù)程序中判斷中斷源以分別處理。

void USART1_IRQHandler(void)

{

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

{

/* Read one byte from the receive data register */

RxBuffer1[RxCounter1++] = USART_ReceiveData(USART1);

if(RxCounter1 == NbrOfDataToRead1)

{

USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);//發(fā)送完成后,將RXNE禁止。

}

}

if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)

{

USART_SendData(USART1, TxBuffer1[TxCounter1++]);

if(TxCounter1 == NbrOfDataToTransfer1)

{

USART_ITConfig(USART1, USART_IT_TXE, DISABLE);

}

}

}


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: STM32 UART 單片機(jī)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉