欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4479|回復: 8
收起左側

單片機串口接收中斷只進入一次?

[復制鏈接]
ID:500189 發表于 2021-4-27 17:32 | 顯示全部樓層 |閱讀模式
串口接收中斷只進入一次,做的是攝像頭循跡小車  串口sbuf長度只留了一個字節    接受完之后  傳遞到其他數組   并及時清0
回復

使用道具 舉報

ID:752974 發表于 2021-4-28 08:36 | 顯示全部樓層
讀接收數據后要記著清中斷標志位。
回復

使用道具 舉報

ID:500189 發表于 2021-4-28 10:51 | 顯示全部樓層
清除中斷標志位試了,  也不行,   串口中斷只進入一次,以0x0d 0x0a 結尾,

  1. void USART1_IRQHandler(void)                        //串口1中斷服務程序
  2. {
  3.         u8 Res=0;
  4.         static u8 Rxbuf[10];
  5.         //u8 theta_err=0;

  6.         if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中斷(接收到的數據必須是0x0d 0x0a結尾)
  7.         {
  8.                 Res = USART_ReceiveData(USART1);//(USART1->DR);        //讀取接收到的數據
  9.                
  10.                 if((USART_RX_STA&0x8000)==0)//接收未完成
  11.                 {
  12.                         if(USART_RX_STA&0x4000)//接收到了0x0d
  13.                         {
  14.                                 if(Res!=0x0A)
  15.                                         USART_RX_STA=0;//接收錯誤,重新開始
  16.                                 else
  17.                                         USART_RX_STA|=0x8000;        //接收完成了
  18.                                
  19.                                
  20.                                        
  21.                         }
  22.                         else //還沒收到0X0D
  23.                         {       
  24.                                 if(Res==0x0d)USART_RX_STA|=0x4000;
  25.                                 else
  26.                                 {                               
  27.                                         USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
  28.                                         USART_RX_STA++;
  29.                                        
  30.                                         if(USART_RX_STA>(USART_REC_LEN-1))
  31.                                                 USART_RX_STA=0;//接收數據錯誤,重新開始接收          
  32.                                 }                 
  33.                         }
  34.                 }                    
  35.   }

  36. }
復制代碼
回復

使用道具 舉報

ID:332214 發表于 2021-4-28 17:08 | 顯示全部樓層
1844952977 發表于 2021-4-28 10:51
清除中斷標志位試了,  也不行,   串口中斷只進入一次,以0x0d 0x0a 結尾,

沒看出來你這有清中斷的語法  加上下面的語句。試試
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中斷(接收到的數據必須是0x0d 0x0a結尾)
{
       USART_ClearITPendingBit(USART1, USART_IT_RXNE);  //這是清中斷標準函數接口
回復

使用道具 舉報

ID:889094 發表于 2021-4-28 23:56 | 顯示全部樓層
中斷服務程序后面的interrupt ?在哪里????
回復

使用道具 舉報

ID:984836 發表于 2021-11-25 21:43 | 顯示全部樓層
遇到了同樣的問題不知道樓主怎么解決的
回復

使用道具 舉報

ID:637144 發表于 2021-11-26 11:11 來自觸屏版 | 顯示全部樓層
清標志位
回復

使用道具 舉報

ID:139866 發表于 2021-11-29 16:53 | 顯示全部樓層
birdzhyli 發表于 2021-4-28 23:56
中斷服務程序后面的interrupt ?在哪里????

這是32的程序,不用寫
回復

使用道具 舉報

ID:211994 發表于 2021-11-29 19:14 | 顯示全部樓層
接收到數據進入中斷,在中斷程序中清除標志位,等下次接收到數據后再進入中斷
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表