|
程序實現:在串口調試工具中發送數據,串口調試工具接收到相應數據,有需要的可以借鑒一下。
程序有些瑕疵,發送前幾次會接收不到數據,多發送幾次就可以接收到數據。
有大神愿意賜教,或者有相關資料分享,不勝感激!- #include "system.h"
- #include "SysTick.h"
- #include "led.h"
- #include "usart.h"
- #include "key.h"
- #include "dma.h"
- #include "DMA_RX.h"
- #include <string.h>
- #define send_buf_len 5
- u8 send_buf[send_buf_len]="iACM";
- u8 USART_RX_BUF[35];//接收緩沖
- /*******************************************************************************
- * 函 數 名 : Send_Data
- * 函數功能 : 要發送的數據
- * 輸 入 : p:指針變量
- * 輸 出 : 無
- *******************************************************************************/
- void Send_Data(u8 *p)
- {
-
- u16 i;
- for(i=0;i<send_buf_len;i++)
- {
- *p='5';
- p++;
- }
- }
- /*******************************************************************************
- * 函 數 名 : main
- * 函數功能 : 主函數
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- int main()
- {
- u8 i=0;
- u8 key;
-
- SysTick_Init(72);
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優先級分組 分2組
- LED_Init();
- USART1_Init(9600);
- KEY_Init();
- DMAx_Init(DMA1_Channel4,(u32)&USART1->DR,(u32)send_buf,send_buf_len);
-
- DMA1_4_Init(DMA1_Channel5,(u32)&USART1->DR,(u32)USART_RX_BUF,35);
- //Send_Data(send_buf);
- USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE); //使能串口1的DMA發送
- DMAx_Enable(DMA1_Channel4,send_buf_len); //開始一次DMA傳輸!
- while(1)
- {
- // key=KEY_Scan(0);
- // if(key==KEY_UP)
- // {
-
-
- //等待DMA傳輸完成,此時我們來做另外一些事
- //實際應用中,傳輸數據期間,可以執行另外的任務
- // while(1)
- // {
- // if(DMA_GetFlagStatus(DMA1_FLAG_TC4)!=0)//判斷通道4傳輸完成
- // {
- // DMA_ClearFlag(DMA1_FLAG_TC4);
- // memset(send_buf,0,35);
- // break;
- // }
- // led2=!led2;
- // delay_ms(300);
- // }
- if(USART_RX_BUF[0])
- {
- send_buf[0]=USART_RX_BUF[0];
- USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE); //使能串口1的DMA發送
- DMAx_Enable(DMA1_Channel4,send_buf_len); //開始一次DMA傳輸!
- delay_ms(10);
-
- //printf("%s\r\n",USART_RX_BUF);
- memset(USART_RX_BUF,0,35);
- memset(send_buf,0,35);
- MYDMA_Enable(DMA1_Channel5);
- }
- // }
-
- i++;
- if(i%20==0)
- {
- led1=!led1;
- }
-
- delay_ms(10);
- }
- }
復制代碼 |
-
-
DMA使用實驗1.7z
2019-3-7 00:06 上傳
點擊文件名下載附件
183.28 KB, 下載次數: 29
評分
-
查看全部評分
|