OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2594|回复: 4

usart用DMA方式接收不,也保存不了,谁有从串口发送数据到LCD上显示的,也可以发给我参考一下,程序如下:

[复制链接]

4

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-9
在线时间
63 小时
发表于 2017-3-9 13:39:25 | 显示全部楼层 |阅读模式
1金钱
//DMA#define USART_LENTH_BUF  64
u8 USART_RX_BUF[USART_LENTH_BUF];  //½óêÕ»o′棬×î′ó64
u8 USART_TX_BUF[USART_LENTH_BUF];  //·¢Ëí»o′棬×î′ó64
u32 USART_Rx=0; //½óêÕμ½μÄêy¾Y
u8 LENTH_USART = 0; //½óêÕμ½μÄêy¾YμÄ3¤¶è



DMA_InitTypeDef DMA_InitStructure;

        DMA_DeInit(DMA1_Channel5);
        DMA_InitStructure.DMA_PeripheralBaseAddr=(u32)&USART1->DR;   //íaéèμØÖ·
        DMA_InitStructure.DMA_MemoryBaseAddr=(u32)USART_RX_BUF;
        DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;  //íaé裬×÷ÎaÄ¿μÄμØÖ·
        DMA_InitStructure.DMA_BufferSize=64;
        DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;
        DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;
        DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Byte;
        DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Byte;
        DMA_InitStructure.DMA_Mode=DMA_Mode_Normal;
        DMA_InitStructure.DMA_Priority=DMA_Priority_High;
        DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;
        DMA_Init(DMA1_Channel5,&DMA_InitStructure);
        DMA_Cmd(DMA1_Channel5, ENABLE);
        /* Enable USART1 DMA RX request */
  USART_DMACmd(USART1, USART_DMAReq_Rx, ENABLE);



//usart配置
USART_InitTypeDef  USART_InitStructure;

        USART_InitStructure.USART_BaudRate=9600;   //éèÖÃ′®¿úí¨DÅê±μÄ2¨ìØÂêÎa921600
        USART_InitStructure.USART_WordLength=USART_WordLength_8b;  //éèÖÃêy¾Yλ3¤¶è8¸öλ
        USART_InitStructure.USART_StopBits=USART_StopBits_1;      //ÔúÖ¡½áÎ2′«êä1¸öí£Ö1λ
        USART_InitStructure.USART_Parity=USART_Parity_No;           //éèÖÃD£Ñéλ¡°ÎT¡±
        USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;   //éèÖÃó2¼t¿ØÖÆá÷ê§Äü
        USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;   //éèÖ÷¢Ëíoí½óêÕê1Äü

        USART_Init(USART1,&USART_InitStructure);
       
        USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);  //èô×üÏß¿ÕÏD£¬2úéúÖD¶Ï
        //USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);   //½óêÕÖD¶ÏÔêDí
        USART_Cmd(USART1,ENABLE);          //¿aÆôUSART1
        USART_ClearFlag(USART1,USART_FLAG_TC);




//usart1中断处理


extern u8 LENTH_USART;
u8 FLAG_USART_RX=0;

void USART1_IRQHandler(void)
{
        u8  i=0;

        if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET)//ÅD¶ÏêÇ2»êǽóêÕÖD¶Ï
        {
                 i = USART1->SR;
                 i = USART1->DR;
                 DMA_Cmd(DMA1_Channel5, DISABLE); //1رÕDMA
                 USART_ClearITPendingBit(USART1, USART_IT_IDLE);//Çå3yÖD¶Ï±êÖ¾
                 USART_ITConfig(USART1, USART_IT_IDLE, DISABLE); //½ûÖ1ÖD¶Ï£¬·àÖ1¸2¸Ç
                 LENTH_USART = 64 -  DMA_GetCurrDataCounter(DMA1_Channel5);  //μÃμ½ÕæÕyμĽóêÕ¸öêy
                 DMA1_Channel5->CNDTR = 64; //ÖØDÂéèÖýóêÕ¸öêy
                 DMA_Cmd(DMA1_Channel5, ENABLE);  //¿aÆôDMA
                 FLAG_USART_RX = 1; //½óêÕ±ê־λÖÃò»
                 USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);  //Ôù′οaÆôÖD¶Ï
                 printf("LENTH_USART=%d\n",LENTH_USART);
                 
        }


}





最佳答案

查看完整内容[请看2#楼]

DMA接收,论坛有例子哦。搜索解决
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-9 13:39:26 | 显示全部楼层
DMA接收,论坛有例子哦。搜索解决
回复

使用道具 举报

3

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2013-12-24
在线时间
28 小时
发表于 2017-3-9 13:57:24 | 显示全部楼层
逻辑很简单,串口接收的字符存在一个数组里,接收完成后,将他们现实在屏幕上,怎么会出问题呢?
回复

使用道具 举报

4

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-9
在线时间
63 小时
 楼主| 发表于 2017-3-9 14:01:33 | 显示全部楼层
wmaxwell 发表于 2017-3-9 13:57
逻辑很简单,串口接收的字符存在一个数组里,接收完成后,将他们现实在屏幕上,怎么会出问题呢?

数据保存不了
回复

使用道具 举报

4

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-9
在线时间
63 小时
 楼主| 发表于 2017-3-14 10:37:49 | 显示全部楼层
正点原子 发表于 2017-3-13 21:44
DMA接收,论坛有例子哦。搜索解决

谢谢,已经解决了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-16 19:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表