中级会员
 
- 积分
- 323
- 金钱
- 323
- 注册时间
- 2018-1-23
- 在线时间
- 40 小时
|
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!")
}
}
|
|