DMA串口接收开始乱码,随后正常

2019-07-20 20:59发布

本帖最后由 Illidan 于 2016-8-3 07:40 编辑

代码如下:
#include "LED.h"
#include "DMA.h"
#include "KEY.h"
#include "stm32f4xx.h"
#include "delay.h"
#include "usart.h"

#define SEND_BUF_SIZE 8200

u8 SENDBUFF[SEND_BUF_SIZE];
u8 TEXTBUFF[]={"ALIENTEK Explorer STM32F4 DMA ′®¿úêμÑé"};

int main(void)
{
        u8 j,t;
        u16 i;
        LED_init();
        delay_init(168);
        key_init();
        uart_init(115200);
        led1=0;
        USART_DMACmd(USART1,USART_DMAReq_Tx,DISABLE);
        MYDMA_Config(DMA2_Stream7,DMA_Channel_4,(u32)&USART1->DR,(u32)SENDBUFF,SEND_BUF_SIZE);
        j=sizeof(TEXTBUFF);
        for(i=0;i<SEND_BUF_SIZE;i++)
        {
                SENDBUFF=TEXTBUFF[t];
                t++;
                if(t==j)
                {
                        SENDBUFF[i++]=0x0d;
                        SENDBUFF[i++]=0x0a;
                        t=0;
                }
        }
        i=0;
        while(1)
        {
                if(key_scan(0)==1)
                {
                        USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);
                        MYDMA_Enable(DMA2_Stream7,SEND_BUF_SIZE);
                        while(!DMA_GetFlagStatus(DMA2_Stream7,DMA_FLAG_TCIF7));
                        DMA_ClearFlag(DMA2_Stream7,DMA_FLAG_TCIF7);
                }
        }

}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
壁虎
1楼-- · 2019-07-20 23:03
 精彩回答 2  元偷偷看……
Illidan
2楼-- · 2019-07-21 01:27
壁虎 发表于 2016-8-2 23:50
时序没有对上,你把程序暂停,串口软件清屏。程序reset就好了

我初学者,怎么暂停?怎么清屏?我在网上没有找到相应的做法
正点原子
3楼-- · 2019-07-21 06:54
直接用的我们例程么?
Illidan
4楼-- · 2019-07-21 11:46
 精彩回答 2  元偷偷看……

一周热门 更多>