OpenEdv-开源电子网

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

DMA例程串口无数据显示

[复制链接]

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
发表于 2016-1-5 13:47:53 | 显示全部楼层 |阅读模式
用了原子哥的DMA例程,只是屏蔽了LCD的语句,但是为什么串口不显示呢?我换了按键,因为我用的103c8t6的核心板,按键是PA0的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2014-2-27
在线时间
71 小时
发表于 2016-1-5 13:50:26 | 显示全部楼层
屏蔽了LCD?然后呢,要显示到哪儿。
回复 支持 反对

使用道具 举报

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
 楼主| 发表于 2016-1-5 13:55:08 | 显示全部楼层
xgzxgyf 发表于 2016-1-5 13:50
屏蔽了LCD?然后呢,要显示到哪儿。

串口啊,不是串口也能显示的么,例程里面也能串口显示啊
回复 支持 反对

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2014-2-27
在线时间
71 小时
发表于 2016-1-5 14:13:12 | 显示全部楼层
你说的是用 printf() 吧,仿真看看 printf() 能执行到么。
回复 支持 反对

使用道具 举报

354

主题

1475

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
8097
金钱
8097
注册时间
2015-10-15
在线时间
2919 小时
发表于 2016-1-5 14:22:32 | 显示全部楼层
液晶初始化有用printf,printf使用必须初始化串口1.。。问题应该在这里。。你可以修改一下去掉printf。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
 楼主| 发表于 2016-1-5 14:23:45 | 显示全部楼层
xgzxgyf 发表于 2016-1-5 14:13
你说的是用 printf() 吧,仿真看看 printf() 能执行到么。

不是,程序是这样的,led0显示正常

#define SEND_BUF_SIZE 8200       
u8 SendBuff[SEND_BUF_SIZE];       
const u8 TEXT_TO_SEND[]={" DMA 串口实验"};
int main(void)
{         
        u16 i;
        u8 t=0;
        u8 j,mask=0;
        //float pro=0;

        delay_init();                   
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        uart_init(115200);                
        LED_Init();                                 
        KEY_Init();                       
        j=sizeof(TEXT_TO_SEND);          
        for(i=0;i<SEND_BUF_SIZE;i++)
    {
                if(t>=j)
                {
                        if(mask)
                        {
                                SendBuff=0x0a;
                                t=0;
                        }else
                        {
                                SendBuff=0x0d;
                                mask++;
                        }       
                }else
                {
                        mask=0;
                        SendBuff=TEXT_TO_SEND[t];
                        t++;
                }              
    }                 
        i=0;
        while(1)
        {
                t=KEY_Scan(0);
                if(t==WKUP_PRES )
                {
                        //printf("\r\nDMA DATA:\r\n");             
                    USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);   
                        MYDMA_Enable(DMA1_Channel4);  
               
                    while(1)
                    {
                                if(DMA_GetFlagStatus(DMA1_FLAG_TC4)!=RESET)       
                                {
                                        DMA_ClearFlag(DMA1_FLAG_TC4);
                                        break;
                                }
//                                pro=DMA_GetCurrDataCounter(DMA1_Channel4);
//                                pro=1-pro/SEND_BUF_SIZE;  
//                                pro*=100;      
                        }                            
                       
                }
                i++;
                delay_ms(10);
                if(i==20)
                {
                        LED0=!LED0;
                        i=0;
                }                  
        }
}


回复 支持 反对

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2014-2-27
在线时间
71 小时
发表于 2016-1-5 15:12:38 | 显示全部楼层
康仔呦 发表于 2016-1-5 14:23
不是,程序是这样的,led0显示正常

#define SEND_BUF_SIZE 8200       

你没有进行DMA的初始化?
回复 支持 反对

使用道具 举报

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
 楼主| 发表于 2016-1-5 16:07:37 | 显示全部楼层
xgzxgyf 发表于 2016-1-5 15:12
你没有进行DMA的初始化?

有啊MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)SendBuff,SEND_BUF_SIZE);漏掉复制了
回复 支持 反对

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2014-2-27
在线时间
71 小时
发表于 2016-1-5 16:43:34 | 显示全部楼层
康仔呦 发表于 2016-1-5 16:07
有啊MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)SendBuff,SEND_BUF_SIZE);漏掉复制了

SendBuff=0x0a;
SendBuff=0x0d;
SendBuff=TEXT_TO_SEND[t];
这个是不是写错了。
回复 支持 反对

使用道具 举报

3

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-8
在线时间
14 小时
发表于 2016-1-5 20:59:52 | 显示全部楼层
原子用的是串口1,你用的是串口几,在串口初始化前面的那个函数对用的修改成你用的串口
回复 支持 反对

使用道具 举报

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
 楼主| 发表于 2016-1-6 09:27:20 | 显示全部楼层
songling 发表于 2016-1-5 20:59
原子用的是串口1,你用的是串口几,在串口初始化前面的那个函数对用的修改成你用的串口

直接用的原子的例程啊
回复 支持 反对

使用道具 举报

3

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-12-8
在线时间
14 小时
发表于 2016-1-6 20:11:41 | 显示全部楼层
康仔呦 发表于 2016-1-6 09:27
直接用的原子的例程啊

你的芯片 跟原子的芯片不一样,你在看一下配置有没有问题呢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 06:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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