OpenEdv-开源电子网

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

串口助手为什么在没用使用printf时为什么会有数据显示?

[复制链接]

41

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2018-1-18
在线时间
23 小时
发表于 2018-9-12 18:15:50 | 显示全部楼层 |阅读模式
串口助手为什么在没用使用printf时为什么会有数据显示

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10574
金钱
10574
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-9-12 18:34:54 | 显示全部楼层
描述不详细,得截图看看代码怎么写的
回复 支持 反对

使用道具 举报

41

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2018-1-18
在线时间
23 小时
 楼主| 发表于 2018-9-12 19:01:04 | 显示全部楼层
peng1554 发表于 2018-9-12 18:34
描述不详细,得截图看看代码怎么写的

要不我发你邮箱里吧,你给我一个邮箱,我需要发送给你一个工程
回复 支持 反对

使用道具 举报

41

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2018-1-18
在线时间
23 小时
 楼主| 发表于 2018-9-12 19:02:53 | 显示全部楼层
工程

4.PNG
回复 支持 反对

使用道具 举报

41

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2018-1-18
在线时间
23 小时
 楼主| 发表于 2018-9-12 19:04:38 | 显示全部楼层
zhangzhiheng 发表于 2018-9-12 19:01
要不我发你邮箱里吧,你给我一个邮箱,我需要发送给你一个工程

不好意思,我发错了
回复 支持 反对

使用道具 举报

41

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2018-1-18
在线时间
23 小时
 楼主| 发表于 2018-9-12 19:07:00 | 显示全部楼层
peng1554 发表于 2018-9-12 18:34
描述不详细,得截图看看代码怎么写的

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"                           
#include "lcd.h"
#include "key.h"
#include "dma.h"          
//ALIENTEK战舰STM32开发板 实验22
//DMA 实验
//技术支持:www.openedv.com
//广州市星翼电子科技有限公司  

#define SEND_BUF_SIZE 8200        //发送数据长度,最好等于sizeof(TEXT_TO_SEND)+2的整数倍.

u8 SendBuff[SEND_BUF_SIZE];        //发送数据缓冲区
const u8 TEXT_TO_SEND[]={"ALIENTEK WarShip STM32F1 DMA 串口实验"};         

int main(void)
{       
        u16 i;
        u8 t=0;
        u8 j,mask=0;
        float pro=0;                        //进度
        Stm32_Clock_Init(9);        //系统时钟设置
        uart_init(72,115200);        //串口初始化为115200
        delay_init(72);                            //延时初始化
        LED_Init();                                  //初始化与LED连接的硬件接口
        LCD_Init();                                   //初始化LCD        
        KEY_Init();                                //按键初始化                        
        MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)SendBuff,SEND_BUF_SIZE);//DMA1通道4,外设为串口1,存储器为SendBuff,长度SEND_BUF_SIZE.
        POINT_COLOR=RED;//设置字体为红色
        LCD_ShowString(30,50,200,16,16,"WarShip STM32");       
        LCD_ShowString(30,70,200,16,16,"DMA TEST");       
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2015/1/15");       
        LCD_ShowString(30,130,200,16,16,"KEY0:Start");
        //显示提示信息       
        j=sizeof(TEXT_TO_SEND);          
        for(i=0;i<SEND_BUF_SIZE;i++)//填充数据到SendBuff
    {
                if(t>=j)//加入换行符
                {
                        if(mask)
                        {
                                SendBuff=0x0a;
                                t=0;
                        }else
                        {
                                SendBuff=0x0d;
                                mask++;
                        }       
                }else//复制TEXT_TO_SEND语句
                {
                        mask=0;
                        SendBuff=TEXT_TO_SEND[t];
                        t++;
                }              
    }                 
        POINT_COLOR=BLUE;//设置字体为蓝色          
        i=0;
        while(1)
        {
                t=KEY_Scan(0);
                if(t==KEY0_PRES)//KEY0按下
                {
                        LCD_ShowString(30,150,200,16,16,"Start Transimit....");
                        LCD_ShowString(30,170,200,16,16,"   %");//显示百分号
//                        printf("\r\nDMA DATA:\r\n");             
                    USART1->CR3=1<<7;           //使能串口1的DMA发送      
                        MYDMA_Enable(DMA1_Channel4);//开始一次DMA传输!          
                    //等待DMA传输完成,此时我们来做另外一些事,点灯
                    //实际应用中,传输数据期间,可以执行另外的任务
                    while(1)
                    {
                                if(DMA1->ISR&(1<<13))//等待通道4传输完成
                                {
                                        DMA1->IFCR|=1<<13;//清除通道4传输完成标志
                                        break;
                        }
                                pro=DMA1_Channel4->CNDTR;//得到当前还剩余多少个数据
                                pro=1-pro/SEND_BUF_SIZE;//得到百分比          
                                pro*=100;      //扩大100倍
                                LCD_ShowNum(30,170,pro,3,16);          
                    }                            
                        LCD_ShowNum(30,170,100,3,16);//显示100%          
                        LCD_ShowString(30,150,200,16,16,"Transimit Finished!");//提示传送完成
                }
                i++;
                delay_ms(10);
                if(i==20)
                {
                        LED0=!LED0;//提示系统正在运行       
                        i=0;
                }                  
        }
}



回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 08:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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