|
程序?qū)崿F(xiàn):在串口調(diào)試工具中發(fā)送數(shù)據(jù),串口調(diào)試工具接收到相應(yīng)數(shù)據(jù),有需要的可以借鑒一下。
程序有些瑕疵,發(fā)送前幾次會接收不到數(shù)據(jù),多發(fā)送幾次就可以接收到數(shù)據(jù)。
有大神愿意賜教,或者有相關(guān)資料分享,不勝感激!- #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];//接收緩沖
- /*******************************************************************************
- * 函 數(shù) 名 : Send_Data
- * 函數(shù)功能 : 要發(fā)送的數(shù)據(jù)
- * 輸 入 : p:指針變量
- * 輸 出 : 無
- *******************************************************************************/
- void Send_Data(u8 *p)
- {
-
- u16 i;
- for(i=0;i<send_buf_len;i++)
- {
- *p='5';
- p++;
- }
- }
- /*******************************************************************************
- * 函 數(shù) 名 : main
- * 函數(shù)功能 : 主函數(shù)
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- int main()
- {
- u8 i=0;
- u8 key;
-
- SysTick_Init(72);
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優(yōu)先級分組 分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發(fā)送
- DMAx_Enable(DMA1_Channel4,send_buf_len); //開始一次DMA傳輸!
- while(1)
- {
- // key=KEY_Scan(0);
- // if(key==KEY_UP)
- // {
-
-
- //等待DMA傳輸完成,此時我們來做另外一些事
- //實際應(yīng)用中,傳輸數(shù)據(jù)期間,可以執(zhí)行另外的任務(wù)
- // 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發(fā)送
- 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);
- }
- }
復(fù)制代碼 |
-
-
DMA使用實驗1.7z
2019-3-7 00:06 上傳
點擊文件名下載附件
183.28 KB, 下載次數(shù): 29
評分
-
查看全部評分
|