久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5563|回復: 0
打印 上一主題 下一主題
收起左側

STM32F103串口DMA程序 發送前幾次會接收不到數據,多發送幾次就可以

[復制鏈接]
跳轉到指定樓層
樓主
ID:361044 發表于 2019-3-6 17:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
程序實現:在串口調試工具中發送數據,串口調試工具接收到相應數據,有需要的可以借鑒一下。
程序有些瑕疵,發送前幾次會接收不到數據,多發送幾次就可以接收到數據。
有大神愿意賜教,或者有相關資料分享,不勝感激!
  1. #include "system.h"
  2. #include "SysTick.h"
  3. #include "led.h"
  4. #include "usart.h"
  5. #include "key.h"
  6. #include "dma.h"
  7. #include "DMA_RX.h"
  8. #include <string.h>
  9. #define send_buf_len 5
  10. u8 send_buf[send_buf_len]="iACM";
  11. u8 USART_RX_BUF[35];//接收緩沖
  12. /*******************************************************************************
  13. * 函 數 名         : Send_Data
  14. * 函數功能                   : 要發送的數據
  15. * 輸    入         : p:指針變量                        
  16. * 輸    出         : 無
  17. *******************************************************************************/
  18. void Send_Data(u8 *p)
  19. {
  20.         
  21.         u16 i;
  22.         for(i=0;i<send_buf_len;i++)
  23.         {
  24.                 *p='5';
  25.                 p++;
  26.         }
  27. }


  28. /*******************************************************************************
  29. * 函 數 名         : main
  30. * 函數功能                   : 主函數
  31. * 輸    入         : 無
  32. * 輸    出         : 無
  33. *******************************************************************************/
  34. int main()
  35. {
  36.         u8 i=0;
  37.         u8 key;
  38.         
  39.         SysTick_Init(72);
  40.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中斷優先級分組 分2組
  41.         LED_Init();
  42.         USART1_Init(9600);
  43.         KEY_Init();
  44.         DMAx_Init(DMA1_Channel4,(u32)&USART1->DR,(u32)send_buf,send_buf_len);
  45.         
  46.         DMA1_4_Init(DMA1_Channel5,(u32)&USART1->DR,(u32)USART_RX_BUF,35);
  47.         //Send_Data(send_buf);
  48.         USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);  //使能串口1的DMA發送     
  49.         DMAx_Enable(DMA1_Channel4,send_buf_len);     //開始一次DMA傳輸!
  50.         while(1)
  51.         {
  52. //                key=KEY_Scan(0);
  53. //                if(key==KEY_UP)
  54. //                {
  55.                         
  56.                

  57.                         //等待DMA傳輸完成,此時我們來做另外一些事
  58.                         //實際應用中,傳輸數據期間,可以執行另外的任務
  59. //                        while(1)
  60. //                        {
  61. //                                if(DMA_GetFlagStatus(DMA1_FLAG_TC4)!=0)//判斷通道4傳輸完成
  62. //                                {
  63. //                                        DMA_ClearFlag(DMA1_FLAG_TC4);
  64. //                                        memset(send_buf,0,35);
  65. //                                        break;
  66. //                                }
  67. //                                led2=!led2;
  68. //                                delay_ms(300);        
  69. //                        }
  70.                         if(USART_RX_BUF[0])   
  71.                         {
  72.                                 send_buf[0]=USART_RX_BUF[0];
  73.                                 USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);  //使能串口1的DMA發送     
  74.                          DMAx_Enable(DMA1_Channel4,send_buf_len);     //開始一次DMA傳輸!
  75.                         delay_ms(10);
  76.                         
  77.                         //printf("%s\r\n",USART_RX_BUF);
  78.                         memset(USART_RX_BUF,0,35);
  79.                         memset(send_buf,0,35);                                
  80.                         MYDMA_Enable(DMA1_Channel5);
  81.                         }
  82. //                }
  83.                
  84.                 i++;
  85.                 if(i%20==0)
  86.                 {
  87.                         led1=!led1;
  88.                 }
  89.                
  90.                 delay_ms(10);        
  91.         }
  92. }
復制代碼

DMA使用實驗1.7z

183.28 KB, 下載次數: 29

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色吊丝2 | 日韩欧美国产一区二区三区 | 99小视频| 中文在线播放 | 国产精品久久久久一区二区三区 | 四虎在线播放 | 五月激情综合网 | 韩国主播午夜大尺度福利 | 黄色网址大全在线观看 | 欧美精品网| 一级毛片免费视频观看 | 亚洲成人免费 | 最新国产在线 | 高清成人免费视频 | 亚洲精品2区 | 国产精品久久久久久吹潮日韩动画 | 国产精品一区在线播放 | 91视频免费视频 | 久久久91精品国产一区二区精品 | 欧美激情久久久 | 成年无码av片在线 | 日韩精品在线观看一区二区三区 | 久久久久国产一区二区三区四区 | 久久久久久久久久久国产 | xxxcom在线观看 | 久久久精彩视频 | 欧美日韩在线一区二区 | 日韩免费一区二区 | 国产精品一卡 | 亚洲国产欧美日韩 | 伊人网在线综合 | 亚洲精品片 | 欧美一区二区三区在线视频 | 天天综合日日夜夜 | 在线一区二区三区 | 一级片av| 欧美精品一区二区免费 | 亚洲一区二区精品视频 | 天天干夜夜 | 91精品国产99 | 日韩精品一区二区三区 |