亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
STM32單片機串口接收不定長無標志位字符串定時器判斷結束
[打印本頁]
作者:
51黑黑黑
時間:
2016-2-23 19:04
標題:
STM32單片機串口接收不定長無標志位字符串定時器判斷結束
寫在前面的話,以警示所有程序員。
你們或許還沒有發現,隨著我們深入編程領域的時間越久,我們程序員的思維越來越簡單,情商也越來越低,這就是編程行業對我們自身的影響。整體跟邏輯的東西打交道,思維當然會固化。如何避免呢?想知道的話留個言,我會在下一篇博文中更新。
還要警示的是:做一個程序員的能力是有限的,一個程序員團隊才可以做成大事。無論哪種語言,哪種程序,都不重要,重要的是我們的思路和邏輯,語言只是工具,不是目的!
//串口1中斷服務程序
void USART1_IRQHandler(void)
{
u8 rec_data;
u8 i=0;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中斷
{
rec_data =(u8)USART_ReceiveData(USART1); //(USART1->DR) 讀取接收到的數據
if((USART_RX_STA & 0x80)==0) //接收未完成,未檢測到 0x0d0x0a的結束符
{
USART_RX_BUF[USART_RX_STA & 0X7F]=rec_data;
USART_RX_STA++;
if(USART_RX_STA>127){USART_RX_STA=0;}//接收超過127,直接復位,重新接收
else {U1_Rx_Tout=0;Tout_Start=1;} //置零,開始計時
}
}
}
//定時器2中斷服務函數
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET) //溢出中斷
{
if(Tout_Start==1){
U1_Rx_Tout++;//接收超時累加
if(U1_Rx_Tout>=2){USART_RX_STA|=0x80;Tout_Start=0;}}//超過20ms,接收結束
}
TIM_ClearITPendingBit(TIM2,TIM_IT_Update); //清除中斷標志位
}
//主循環:接收到數據,判斷結束后,及時發送到電腦
while(1)
{
if(USART_RX_STA&0x80)
{
len=USART_RX_STA&0x7F;//讀取接收數據的長度
uart1SendChars(USART_RX_BUF,len);//發送
USART_RX_STA=0; //一定要清零,否則重復執行if以及無法接收新數據
}
}
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1