×
单片机 > 单片机程序设计 > 详情

串口发送数据查询方式与中断方式

发布时间:2020-08-21 发布时间:
|

单片机采用中断或查询方式使用串口,这是根据实际应用的需要确定的,没有好/坏之分。有时之所以采用查询方式处理串口程序,是因为应用程序不苛刻单片机的时间资源,采用查询的方式就能满足应用的需要,所以没采用中断。


大量连续的向串口发送数据,就没有必要使用中断了,因为单片机根本没有时间去处理其它事务,这样采用查询的方式反而效率更高,实际应用中向串口发送数据很少使用中断,更多的是使用接收中断,除非单片机的时间资源特别的紧张,连等待一个数据的发送时间也得利用。


一般发送数据采用查询方式:


以stm32串口为例


void Send_String(uint8_t *str)

{

    uint8_t index = 0;

do

{

 USART_SendData(USART2, str[index]);

 while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);

 index++;

}while(str[index] != 0);


}


接受数据一般采用中断方式


这样对时间进行了充分利用, 有数据就产生中断接受,没数据时不用管。


以stm32为例:


void USART2_IRQHandler(void)

{

uint8_t temp;

if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET){

USART_ClearITPendingBit(USART2,USART_IT_RXNE);

temp = USART_ReceiveData(USART2);

if((temp == 'x') || (RXCUNT == 20)){    //字符串以x结尾发送或者超过20个字符时发送

RXCUNT = 0;

RXOVER = 1;  //接收完成标志位置位

USART_ITConfig(USART2,USART_IT_RXNE,DISABLE);

}

else{

USART_RXBUF[RXCUNT] = temp;

++RXCUNT;

}

}

}


关键字:串口  发送数据  查询方式  中断方式 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C8051F020的UART