6573|11

12

帖子

0

资源

一粒金砂(中级)

STM32F407 printf函数打印输出数据到串口调试助手出问题 [复制链接]

 
如题,楼主是STM32F407的板子,用DMA接收数据,DMA接收的数据存放在缓存数组中,然后用printf打印输出缓存数组存放的数据,程序刚加载运行的时候正常,DMA接收到什么数据,printf就打印输出什么数据在串口调试助手显示。但是程序运行一段时间后,就没有数据输出显示了,开始我还以为是因为DMA没有接收到新的数据,所以没有显示。
但是单步debug之后,发现DMA一直有接收到的新数据,因为存放数据的缓存数组里的数据在变化,但是printf不工作了,就是串口调试助手不显示输出了,想请教一下大神,这个是怎么回事,怎么解决,楼主刚做STM32开发没多久,小白一个,希望大神们给一些指点
此帖出自stm32/stm8论坛

回复

1万

帖子

143

资源

版主

如果程序没有重新烧录过,那检查串口相关部分电路、元件的焊接以及连接导线之类。

点评

刚又调试了一下,把DMA接收数据的程序语句注释掉就好使了,想知道这是为什么怎么能够解决  详情 回复 发表于 2017-2-10 11:19
板子是自己焊接的板子,刚刚又调试了一下,在while死循环中只执行 printf(“hello”)一开始串口调试助手有输出显示,然后就卡主没有输出了。想问一下版主,如果元器件焊接有问题,会出现这种情况吗  详情 回复 发表于 2017-2-10 10:42
个人签名上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang

回复

12

帖子

0

资源

一粒金砂(中级)

chunyang 发表于 2017-2-9 18:01
如果程序没有重新烧录过,那检查串口相关部分电路、元件的焊接以及连接导线之类。

程序重新烧录过啊,每次都是重新编译通过,然后重新烧写到板子的。烧写后,一开始有数据输出显示在串口调试助手,一段时间,就没有输出显示了。

点评

那就是典型的软件错误。  详情 回复 发表于 2017-2-10 15:20

回复

110

帖子

2

资源

一粒金砂(中级)

是使用MDK编程的吗 ?不知道是不是设置里没有打开微库导致的printf不好用的问题,可以进MDK魔术棒Target里勾上USE MicroLIB  重新编译下载试一试

点评

刚又调试了一下,把DMA接收数据的程序语句注释掉就好使了,想知道这是为什么怎么能够解决  详情 回复 发表于 2017-2-10 11:19
是使用的MDK编程,刚刚看了下魔术棒里的Target,USE MicroLIB已经勾选上了。 上午我又重新调试了一下,这次我把所有的程序都注释掉了,就写了在while(1)里执行printf(“hello”);情况也是一样,一开始串口调试  详情 回复 发表于 2017-2-10 10:15

回复

12

帖子

0

资源

一粒金砂(中级)

sysjtlwx 发表于 2017-2-10 09:28
是使用MDK编程的吗 ?不知道是不是设置里没有打开微库导致的printf不好用的问题,可以进MDK魔术棒Target里 ...

是使用的MDK编程,刚刚看了下魔术棒里的Target,USE MicroLIB已经勾选上了。
上午我又重新调试了一下,这次我把所有的程序都注释掉了,就写了在while(1)里执行printf(“hello”);情况也是一样,一开始串口调试助手正常输出显示hello,输出一段时间后就不输出了。

回复

12

帖子

0

资源

一粒金砂(中级)

chunyang 发表于 2017-2-9 18:01
如果程序没有重新烧录过,那检查串口相关部分电路、元件的焊接以及连接导线之类。

板子是自己焊接的板子,刚刚又调试了一下,在while死循环中只执行 printf(“hello”)一开始串口调试助手有输出显示,然后就卡主没有输出了。想问一下版主,如果元器件焊接有问题,会出现这种情况吗

点评

不会,这是纯粹的软件问题。  详情 回复 发表于 2017-2-10 15:20

回复

12

帖子

0

资源

一粒金砂(中级)

chunyang 发表于 2017-2-9 18:01
如果程序没有重新烧录过,那检查串口相关部分电路、元件的焊接以及连接导线之类。

刚又调试了一下,把DMA接收数据的程序语句注释掉就好使了,想知道这是为什么怎么能够解决

点评

仔细分析程序流程,弄明白每条指令的意义。  详情 回复 发表于 2017-2-10 15:21

回复

12

帖子

0

资源

一粒金砂(中级)

sysjtlwx 发表于 2017-2-10 09:28
是使用MDK编程的吗 ?不知道是不是设置里没有打开微库导致的printf不好用的问题,可以进MDK魔术棒Target里 ...

刚又调试了一下,把DMA接收数据的程序语句注释掉就好使了,想知道这是为什么怎么能够解决

回复

1万

帖子

143

资源

版主

散飞雪 发表于 2017-2-10 09:04
程序重新烧录过啊,每次都是重新编译通过,然后重新烧写到板子的。烧写后,一开始有数据输出显示在串口调 ...

那就是典型的软件错误。
个人签名上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang

回复

1万

帖子

143

资源

版主

散飞雪 发表于 2017-2-10 10:42
板子是自己焊接的板子,刚刚又调试了一下,在while死循环中只执行 printf(“hello”)一开始串口调试助 ...

不会,这是纯粹的软件问题。
个人签名上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang

回复

1万

帖子

143

资源

版主

散飞雪 发表于 2017-2-10 11:19
刚又调试了一下,把DMA接收数据的程序语句注释掉就好使了,想知道这是为什么怎么能够解决

仔细分析程序流程,弄明白每条指令的意义。

点评

问题已经解决了,原先USART1选择的DMA是通道4数据流5,改成通道4数据流2就好使了,但是还是不明白为什么,STM32的数据手册里也没有写,这两个数据流的区别啊  详情 回复 发表于 2017-2-13 09:30
个人签名上传了一些书籍资料,也许有你想要的:http://download.eeworld.com.cn/user/chunyang

回复

12

帖子

0

资源

一粒金砂(中级)

chunyang 发表于 2017-2-10 15:21
仔细分析程序流程,弄明白每条指令的意义。

问题已经解决了,原先USART1选择的DMA是通道4数据流5,改成通道4数据流2就好使了,但是还是不明白为什么,STM32的数据手册里也没有写,这两个数据流的区别啊

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

最新文章 更多>>
    关闭
    站长推荐上一条 1/6 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表