寫在前面的話,以警示所有程序員。
你們或許還沒有發(fā)現(xiàn),隨著我們深入編程領域的時間越久,我們程序員的思維越來越簡單,情商也越來越低,這就是編程行業(yè)對我們自身的影響。整體跟邏輯的東西打交道,思維當然會固化。如何避免呢?想知道的話留個言,我會在下一篇博文中更新。
還要警示的是:做一個程序員的能力是有限的,一個程序員團隊才可以做成大事。無論哪種語言,哪種程序,都不重要,重要的是我們的思路和邏輯,語言只是工具,不是目的!
//串口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) 讀取接收到的數(shù)據(jù)
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中斷服務函數(shù)
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); //清除中斷標志位
}
//主循環(huán):接收到數(shù)據(jù),判斷結束后,及時發(fā)送到電腦
while(1)
{
if(USART_RX_STA&0x80)
{
len=USART_RX_STA&0x7F;//讀取接收數(shù)據(jù)的長度
uart1SendChars(USART_RX_BUF,len);//發(fā)送
USART_RX_STA=0; //一定要清零,否則重復執(zhí)行if以及無法接收新數(shù)據(jù)
}
}
|