|
程序实现:在串口调试工具中发送数据,串口调试工具接收到相应数据,有需要的可以借鉴一下。
程序有些瑕疵,发送前几次会接收不到数据,多发送几次就可以接收到数据。
有大神愿意赐教,或者有相关资料分享,不胜感激!- #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);
- }
- }
复制代码 |
评分
-
查看全部评分
|