打印
[牛人杂谈]

发现半主机调试的一个问题

[复制链接]
3509|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
与时俱进|  楼主 | 2014-4-5 12:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发送到串口的字符有时会被吃掉最后的几个。
比如:
     for( i=0; i<256; i++)
          PrintHex(i);
        while(1);
在keil的UART1窗口显示 0x00 0x01 0x02……0xFD

到0xFD就结束了,后面的0xFE 0xFF被吃掉了。
沙发
从小木丁丁| | 2014-4-5 12:17 | 只看该作者
吃掉了?

使用特权

评论回复
板凳
niuyaliang| | 2014-4-5 20:41 | 只看该作者
PrintHex(i);
不可能我看看你的这个函数写的了

使用特权

评论回复
地板
与时俱进|  楼主 | 2014-4-5 21:43 | 只看该作者
本帖最后由 与时俱进 于 2014-4-5 21:47 编辑

移植圈圈写的函数
char HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

void PrintHex(char x)
{
SendChar('0');
SendChar('x');
SendChar(HexTable[x>>4]);
SendChar(HexTable[x&0xf]);
SendChar(' ');
}

使用特权

评论回复
5
与时俱进|  楼主 | 2014-4-5 21:56 | 只看该作者
niuyaliang 发表于 2014-4-5 20:41
PrintHex(i);
不可能我看看你的这个函数写的了

它不是真正被“吃掉”,是暂时的,如果有后续字符发送,被吃掉的又会显示出来。

使用特权

评论回复
6
江枫渔火| | 2014-4-6 01:28 | 只看该作者
好像是有这个问题。楼主细心。
去年的某次我也试过用半主机,当时好像也有这个情况,没放心头。

前段时间用ITM,就没这问题,楼主可以换用ITM,放了半主机吧

使用特权

评论回复
7
与时俱进|  楼主 | 2014-4-6 07:10 | 只看该作者
江枫渔火 发表于 2014-4-6 01:28
好像是有这个问题。楼主细心。
去年的某次我也试过用半主机,当时好像也有这个情况,没放心头。

ITM似乎有些复杂?

使用特权

评论回复
8
niuyaliang| | 2014-4-6 07:16 | 只看该作者
半主机这么用?不是吧,我直接用printf()函数打印,从来没错过,LZ那是用的串口打印。。。

使用特权

评论回复
9
niuyaliang| | 2014-4-6 07:17 | 只看该作者
江枫渔火 发表于 2014-4-6 01:28
好像是有这个问题。楼主细心。
去年的某次我也试过用半主机,当时好像也有这个情况,没放心头。

这样用不叫半主机吧。。。顶多叫串口打印

使用特权

评论回复
10
niuyaliang| | 2014-4-6 07:18 | 只看该作者
与时俱进 发表于 2014-4-5 21:56
它不是真正被“吃掉”,是暂时的,如果有后续字符发送,被吃掉的又会显示出来。 ...

没全部读出来?我回家了,手头没片子,无法验证,你试试直接用printf打印

使用特权

评论回复
11
john_lee| | 2014-4-6 08:37 | 只看该作者
貌似缓冲了,查查有没有类似flush的功能,把缓冲强制输出。

使用特权

评论回复
评分
参与人数 1威望 +5 收起 理由
xyz549040622 + 5
12
江枫渔火| | 2014-4-6 12:39 | 只看该作者
niuyaliang 发表于 2014-4-6 07:16
半主机这么用?不是吧,我直接用printf()函数打印,从来没错过,LZ那是用的串口打印。。。 ...

楼主说的就是半主机,是printf是输出在mdk的界面,但经常是漏掉最后一两个字符的样子,如果后面再输出一次,那前面漏掉的又输出来了。比如你printf("abc"),可能c不见了,但你又再次printf("def"),输出则是“cde”,说的是这个情况,以前遇到过,但不记得解决了没有。现在不用那个了。用ITM也很好。

使用特权

评论回复
评论
与时俱进 2014-4-6 15:36 回复TA
对,就是这个意思。 
13
江枫渔火| | 2014-4-6 12:40 | 只看该作者
与时俱进 发表于 2014-4-6 07:10
ITM似乎有些复杂?

网上有教程,也很简单的说。printf 输出时在debug printf,而不是uartxxx

使用特权

评论回复
14
john_lee| | 2014-4-6 14:07 | 只看该作者
cortex-m0没有itm。

使用特权

评论回复
15
与时俱进|  楼主 | 2014-4-6 15:44 | 只看该作者
江枫渔火 发表于 2014-4-6 12:39
楼主说的就是半主机,是printf是输出在mdk的界面,但经常是漏掉最后一两个字符的样子,如果后面再输出一 ...

请教一个问题:程序中没找到#define _NO_USE_HXT_,可是#ifdef _NO_USE_HXT_分支被编译了,为什么?_NO_USE_HXT_符号与config设置有关是吗?

使用特权

评论回复
16
与时俱进|  楼主 | 2014-4-6 15:47 | 只看该作者
config设置能不能在bin文件里指定?
似乎有bin文件还要有config值,才能正确烧写M0芯片?

使用特权

评论回复
17
江枫渔火| | 2014-4-6 15:48 | 只看该作者
如果你自己代码里没有定义此符号,那就是在工程配置里预定义了。查看设置里有没有哪里定义了就是了。
有此一问说明工程不是你自己建立的,应该去看看工程配置。

使用特权

评论回复
18
与时俱进|  楼主 | 2014-4-6 16:04 | 只看该作者
江枫渔火 发表于 2014-4-6 15:48
如果你自己代码里没有定义此符号,那就是在工程配置里预定义了。查看设置里有没有哪里定义了就是了。
有此 ...

移植BSP代码啊。

使用特权

评论回复
19
骗子的片子| | 2014-4-6 22:07 | 只看该作者
又见半主机调试

使用特权

评论回复
20
uopy2002| | 2015-1-16 14:56 | 只看该作者
你好 我是知前有詢問過你NANO130設計USB + SPI FLASH 部分的人
我按照著你知前發的帖一步一步操作,的確也有遇到你記錄的一些問題也有跟著修正(DATA重新排列 ADDRESS 512大小)

但我目前有卡到一個是當HOST傳輸批次檔案只要0X10000之類的大小,就會傳輸到死當,而且感覺不是這麼穩定

可以請問你在修改過程中還有哪些要注意嗎,還是純粹SPI寫法問題

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

1290

帖子

2

粉丝