OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 93|回复: 2

DMA实验 没有0-100%的动态变化 为什么?

[复制链接]

  离线 

14

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
金钱
305
注册时间
2018-1-23
在线时间
28 小时
发表于 2018-6-14 22:15:42 | 显示全部楼层 |阅读模式
正点原子公众号
DMA实验 没有0-100%的动态变化  为什么?
我只是把原子哥的代码去掉了按键和小灯,其他的基本上一样的
这个是什么原因呢,在转换那插入500ms的延时也只有0和100两个状态,而且还是很快,求大神指点

#include "stm32f10x.h”
#include "lcd.h"
#include "delay.h"
#include "usart.h"
#include "dma.h"

#define SEND_BUF_SIZE 8200        //·¢Ëíêy¾Y3¤¶è,×îoÃμèóúsizeof(TEXT_TO_SEND)+2μÄÕûêy±¶.
u8 SendBuff[SEND_BUF_SIZE];        //·¢Ëíêy¾Y»o3åÇø
const u8 TEXT_TO_SEND[]={"ALIENTEK Elite STM32F1 DMA ′®¿úêμÑé"};


int main()
{
        u16 i;
        u8 t=0;
        u8 j,mask=0;
        float pro=0;//½ø¶è
       
        delay_init();                                                                                //LCD±ØDëÏè3õê¼»ˉÑóê±oˉêy è»oó′®¿ú ÔùLCD  init
        uart_init(115200);
        LCD_Init();

       
        POINT_COLOR=RED;
        LCD_ShowString(40,50,200,24,24,"David creating!");
       
        MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)SendBuff,SEND_BUF_SIZE);                //3õê¼»ˉDMAí¨μ࣬½«USart1μØÖ·×÷Îaíaéè»ùμØÖ·£¬Äú»ùμØÖ·£¬o«»o′æ′óD¡
       
        j=sizeof(TEXT_TO_SEND);          
        for(i=0;i<SEND_BUF_SIZE;i++)//ìî3äêy¾Yμ½SendBuff
    {
                if(t>=j)//¼óèë»»DD·û
                {
                        if(mask)
                        {
                                SendBuff[i]=0x0a;
                                t=0;
                        }else
                        {
                                SendBuff[i]=0x0d;
                                mask++;
                        }       
                }else//¸′ÖÆTEXT_TO_SENDóï¾ä
                {
                        mask=0;
                        SendBuff[i]=TEXT_TO_SEND[t];
                        t++;
                }              
    }                 
        POINT_COLOR=BLUE;//éèÖÃ×ÖìåÎaà¶é«          
        i =0;
        while(1)
        {
                LCD_ShowString(30,150,200,16,16,"Start Transimit....");
                LCD_ShowString(30,170,200,16,16,"   %");//ÏÔê¾°ù·ÖoÅ
                printf("\r\nDMA DATA:\r\n");             
               
                USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);                        // USart1DMA·¢Ëí¿aÆô
                MYDMA_Enable(DMA1_Channel4);
                while(1)
                {
                        if(DMA_GetFlagStatus(DMA1_FLAG_TC4)!=RESET)                                //»ñè¡í¨μà4±ê־룬ÅD¶ÏêÇ·ñ′«êäíê3é
                        {
                                DMA_ClearFlag(DMA1_FLAG_TC4);
                                break;
                        }
                        pro = DMA_GetCurrDataCounter(DMA1_Channel4);   //»ñè¡ê£óàêy¾Yá¿
                        pro = 1-pro/SEND_BUF_SIZE;
                        pro*=100;                                                                                                                                 //×a»»°ù·Ö±è
                        LCD_ShowNum(30,170,pro,3,16);       
                       
                }
                //        LCD_ShowNum(30,170,100,3,16);//ÏÔê¾100%          
        //        LCD_ShowString(30,150,200,16,16,"Transimit Finished!")
        }
}


回复

使用道具 举报

  离线 

4

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2014-10-21
在线时间
14 小时
发表于 2018-6-14 23:24:15 来自手机 | 显示全部楼层

回帖奖励 +5

顶顶,记得原先的例程是按下按键触发发送的吧,按键去掉的话,那就一使能马上发送了,至于没有慢慢发送,应该是逻辑哪里有问题,单步运行看看
回复 支持 反对

使用道具 举报

  离线 

14

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
金钱
305
注册时间
2018-1-23
在线时间
28 小时
 楼主| 发表于 2018-6-15 07:58:48 | 显示全部楼层
你干嘛 发表于 2018-6-14 23:24
顶顶,记得原先的例程是按下按键触发发送的吧,按键去掉的话,那就一使能马上发送了,至于没有慢慢发送,应 ...

之前是改过一些东西,调试出问题之后基本上直接把原子哥的代码粘过来了,但是没有出现动态过程
回复 支持 反对

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-6-25 23:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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