<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      之前沒有寫調試記錄的習慣,導致前段時間剛弄過的一個東西,現在拿起來要么翻之前的代碼,要么就再慢慢調,雖然知道自己肯定是可以戰勝困難,但總是浪費很多時間,所以以后準備多寫一些記錄,方便自己用的時候查。嘻嘻

      STM32CubeMX這個工具用習慣了還是很爽的,就是有些傻逼的地方是,他并不能給你弄到位,有的東西還是得自己調一下。

      打開串口并使能中斷后,如果要開啟DMA收發的功能,只需要使能對應的通道就可以了。

      生成代碼的過程就不廢話了。

      在串口初始化里面調用這個函數來定義串口中斷接受長度。

      HAL_UART_Receive_IT(&huart1, (uint8_t *)aRx1Buffer, 1);

      不要忘記在中斷函數里面再次調用。

      一個完整的發送周期如下,清除完成標志也可以放在下次發送的開始。

      void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
      {
          static uint8_t sta = 0;
          if(huart->Instance==USART1)//è?1?ê?′??ú1
          {
      //        USART_RX1_BUF[Usart1_len]=aRx1Buffer[0];
      //        Usart1_len++;
      //        if(Usart1_len == 0x04)                             
      //    {
              HAL_UART_Transmit_DMA(&huart1,(uint8_t*)aRx1Buffer,USART_RX1_LEN);
              while(1)
                  {
                      if(__HAL_DMA_GET_FLAG(&hdma_usart1_tx,DMA_FLAG_TCIF3_7))//μè′yDMA2_Steam7′?ê?íê3é
                      {
                          __HAL_DMA_CLEAR_FLAG(&hdma_usart1_tx,DMA_FLAG_TCIF3_7);//??3yDMA2_Steam7′?ê?íê3é±ê??
                          HAL_UART_DMAStop(&huart1);      //′?ê?íê3éò?oó1?±?′??úDMA
                          break; 
                      }
                                  //    __HAL_DMA_GET_COUNTER(&hdma_usart1_tx);
                                  }
              switch(sta)
              {
                  case 0:if(aRx1Buffer[0] == 0x55) sta = 1;break;
                  case 1:if(aRx1Buffer[0] == 0xaa) mode = 1,sta = 2;else sta = 0;break;
                  case 2:mode = 0;sta = 0;break;
              }        
              HAL_UART_Receive_IT(&huart1, (uint8_t *)aRx1Buffer, RX1BUFFERSIZE);   
      //        }            
          }
          if(huart->Instance==USART2)//è?1?ê?′??ú2
          {
              HAL_UART_Transmit_DMA(&huart2,(uint8_t*)aRx2Buffer,USART_RX2_LEN);
              while(1)
                  {
                      if(__HAL_DMA_GET_FLAG(&hdma_usart2_tx,DMA_FLAG_TCIF2_6))//μè′yDMA2_Steam7′?ê?íê3é
                      {
                          __HAL_DMA_CLEAR_FLAG(&hdma_usart2_tx,DMA_FLAG_TCIF2_6);//??3yDMA2_Steam7′?ê?íê3é±ê??
                          HAL_UART_DMAStop(&huart2);      //′?ê?íê3éò?oó1?±?′??úDMA
                          break; 
                      }
                                  //    __HAL_DMA_GET_COUNTER(&hdma_usart2_tx);
                                  }    //·¢?í?óê?μ?μ?êy?Y
              while(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_TC)!=SET);        //μè′y·¢?í?áê?
              HAL_UART_Receive_IT(&huart2, (uint8_t *)aRx2Buffer, RX2BUFFERSIZE);   
          }
          if(huart->Instance==USART3)//è?1?ê?′??ú3
          {
              HAL_UART_Transmit_DMA(&huart3,(uint8_t*)aRx3Buffer,USART_RX3_LEN);
              while(1)
                  {
                      if(__HAL_DMA_GET_FLAG(&hdma_usart3_tx,DMA_FLAG_TCIF3_7))//μè′yDMA2_Steam7′?ê?íê3é
                      {
                          __HAL_DMA_CLEAR_FLAG(&hdma_usart3_tx,DMA_FLAG_TCIF3_7);//??3yDMA2_Steam7′?ê?íê3é±ê??
                          HAL_UART_DMAStop(&huart3);      //′?ê?íê3éò?oó1?±?′??úDMA
                          break; 
                      }
                                  //    __HAL_DMA_GET_COUNTER(&hdma_usart1_tx);
                                  }    //·¢?í?óê?μ?μ?êy?Y
              while(__HAL_UART_GET_FLAG(&huart3,UART_FLAG_TC)!=SET);        //μè′y·¢?í?áê?
              HAL_UART_Receive_IT(&huart3, (uint8_t *)aRx3Buffer, RX3BUFFERSIZE);   
          }
          if(huart->Instance==UART4)//è?1?ê?′??ú4
          {
              HAL_UART_Transmit_DMA(&huart4,(uint8_t*)aRx4Buffer,USART_RX4_LEN);
              while(1)
                  {
                      if(__HAL_DMA_GET_FLAG(&hdma_uart4_tx,DMA_FLAG_TCIF0_4))//μè′yDMA2_Steam7′?ê?íê3é
                      {
                          __HAL_DMA_CLEAR_FLAG(&hdma_uart4_tx,DMA_FLAG_TCIF0_4);//??3yDMA2_Steam7′?ê?íê3é±ê??
                          HAL_UART_DMAStop(&huart4);      //′?ê?íê3éò?oó1?±?′??úDMA
                          break; 
                      }
                                  //    __HAL_DMA_GET_COUNTER(&hdma_uart4_tx);
                                  }    //·¢?í?óê?μ?μ?êy?Y
              while(__HAL_UART_GET_FLAG(&huart4,UART_FLAG_TC)!=SET);        //μè′y·¢?í?áê?
              HAL_UART_Receive_IT(&huart4, (uint8_t *)aRx4Buffer, RX4BUFFERSIZE);   
          }
      }

       

      這個我是放在中斷里實現串口自收自發的。

       

       1 void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
       2 {
       3         uint32_t isrflags   = READ_REG(huart->Instance->ISR);//?????,???????SR
       4         if((__HAL_UART_GET_FLAG(huart, UART_FLAG_PE))!=RESET)
       5         {
       6                         READ_REG(huart->Instance->RDR);//PE???,????DR
       7                         __HAL_UART_CLEAR_IT(huart, UART_CLEAR_PEF);//???
       8         }
       9         if((__HAL_UART_GET_FLAG(huart, UART_FLAG_FE))!=RESET)
      10         {
      11                         READ_REG(huart->Instance->RDR);//FE???,????DR
      12                         __HAL_UART_CLEAR_IT(huart, UART_CLEAR_FEF);
      13         }
      14         
      15         if((__HAL_UART_GET_FLAG(huart, UART_FLAG_NE))!=RESET)
      16         {
      17                         READ_REG(huart->Instance->RDR);//NE???,????DR
      18                         __HAL_UART_CLEAR_IT(huart, UART_CLEAR_NEF);
      19         }        
      20         
      21         if((__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE))!=RESET)
      22         {
      23                         READ_REG(huart->Instance->RDR);//ORE???,????CR
      24                         __HAL_UART_CLEAR_IT(huart, UART_CLEAR_OREF);
      25         }        
      26 } 

       

      posted on 2019-05-16 16:42  李小牛。  閱讀(2027)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 9久久伊人精品综合| 视频一区视频二区卡通动漫 | 亚洲高清国产拍精品熟女| 大香伊蕉在人线国产最新2005| 国产成年女人特黄特色大片免费| 大香蕉av一区二区三区| 亚洲午夜福利精品无码不卡| 午夜视频免费试看| 国产伦精品一区二区亚洲| 337P日本欧洲亚洲大胆精品555588| 肃南| 18禁视频一区二区三区| 国产一区二区不卡在线| 无码中文字幕av免费放| 99久久精品国产综合一区| 日韩 一区二区在线观看| 亚洲另类激情专区小说婷婷久| 亚洲熟妇自偷自拍另欧美| 国产免费午夜福利片在线| 久久综合干| 午夜视频免费试看| 日韩高清不卡一区二区三区| 国产综合久久久久久鬼色| 亚洲av一本二本三本| 91偷自国产一区二区三区| 国产综合久久久久久鬼色| 国产中文99视频在线观看| 国产精品色哟哟在线观看| 婷婷色综合成人成人网小说| 丰满岳乱妇久久久| 桃花岛亚洲成在人线AV| 2021最新国产精品网站| 欧美一区二区三区性视频| 国产中文字幕在线精品| 202丰满熟女妇大| 国产精品一区二区久久岳| 99久久亚洲综合精品成人网 | 四虎影院176| 国产精品十八禁一区二区| 熟女熟妇伦av网站| 国产自拍在线一区二区三区|