打印
[技术问答]

NuTiny-EVB- M0518SD2AE Debug串口不输出

[复制链接]
4176|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
    各位大牛,小弟新买一块NuTiny-EVB- M0518SD2AE(64pin),用uVision4 + Nu-Link-Me,能编译,能单步调试。但是用开发板自带光盘里的uart示例程序,debugport不能输出打印。示例程序:
Nuvoton\BSP Library\M0518BSP_CMSIS_v3.00.002\SampleCode\StdDriver\UART_TxRx_Function\KEIL
单步调试发现,(printf("......"))停在循环:
void SendChar_ToUART(int ch)
{
  while(DEBUG_PORT->FSR & UART_FSR_TX_FULL_Msk);
。。。。
}
按理说我用的全套新塘原版的东西(开发板+示例程序),所以电路没错,库函数没错,应该可以直接从UART0打印出字符!
    迷茫中。。。难道我要用示波器去看波形,然后修改库函数??没必要这么搞吧?我相信示例函数不会出错的!
沙发
Harry-Nu| | 2015-10-9 18:02 | 只看该作者
我用同样的软硬件平台,没有发现你说的现象哦。以下是打印出来的信息:

CPU @ 50000000Hz


UART Sample Program
+-----------------------------------------------------------+
|  UART Function Test                                       |
+-----------------------------------------------------------+
|  Description :                                            |
|    The sample code will print input char on terminal      |
|    Please enter any to start     (Press '0' to exit)      |
+-----------------------------------------------------------+

使用特权

评论回复
板凳
icenover|  楼主 | 2015-10-9 19:19 | 只看该作者
请问 Harry-Nu 兄,您是把
17 PB.0,UART0_RXD
18 PB.1,UART0_TXD
脚外接到uart-RS232后在超级终端中看到的吗?还是在uVision4的Debug(printf) Viewer窗口看到的?
请问您在该工程的uVision上设置过什么吗?还是修改了该示例工程的部分代码?
我只修改了编译优化参数为level-0,其他什么都没有修改。直接用usb把板子接到PC机的。把17,18脚接uart-RS232在超级终端什么都读不到。而且Debug(printf) Viewer窗口什么也没有输出。
快崩溃了,要么板子坏了?没有头绪...

使用特权

评论回复
地板
玛尼玛尼哄| | 2015-10-9 19:55 | 只看该作者
直接用例程做,就打不出来了吗?这情况好诡异,一般都是可以的啊,是不是你端口哪儿跳线没有设置对。

使用特权

评论回复
5
cspoly| | 2015-10-9 21:39 | 只看该作者
樓主能說說UART0_RXD和UART0_TXD是怎麼和"uart-RS232"接的嗎?
該不會是沒有對接吧.

使用特权

评论回复
6
小猫爱吃鱼| | 2015-10-9 21:41 | 只看该作者
楼主玩的真是太高大上了啊,向您学习

使用特权

评论回复
7
icenover|  楼主 | 2015-10-10 09:16 | 只看该作者
玛尼玛尼哄 发表于 2015-10-9 19:55
直接用例程做,就打不出来了吗?这情况好诡异,一般都是可以的啊,是不是你端口哪儿跳线没有设置对。 ...

是直接用的例程。
端口跳线?没有跳线啊,我硬件上我什么都没动过,就直接用mini usb线连到电脑,目标板就能运行了。只是printf打印不出东西。

使用特权

评论回复
8
icenover|  楼主 | 2015-10-10 09:22 | 只看该作者
cspoly 发表于 2015-10-9 21:39
樓主能說說UART0_RXD和UART0_TXD是怎麼和"uart-RS232"接的嗎?
該不會是沒有對接吧.

我有一块uart转RS232的小板子,把5018的UART0_RXD脚接到小板子的tx脚,UART0_TXD接到小板子的rx脚,VCC接VCC3,GND接GND。请问要看到打印,是要转232到PC上用超级终端看输出吧?是应该这样看printf的输出。
还有请问,如果我UART0_RXD和UART0_TXD悬空,什么都不接,会停在循环while(DEBUG_PORT->FSR & UART_FSR_TX_FULL_Msk);吗???

使用特权

评论回复
9
玛尼玛尼哄| | 2015-10-10 10:16 | 只看该作者
icenover 发表于 2015-10-10 09:16
是直接用的例程。
端口跳线?没有跳线啊,我硬件上我什么都没动过,就直接用mini usb线连到电脑,目标板 ...

printf,需要配置一个什么子函数,让该函数和串口关联上。

使用特权

评论回复
10
icenover|  楼主 | 2015-10-10 10:23 | 只看该作者
还有一点补充,我量VCC怎么是3v?? 不应该是3.3V么?? 会不会是这个问题导致的??

使用特权

评论回复
11
icenover|  楼主 | 2015-10-10 10:41 | 只看该作者
玛尼玛尼哄 发表于 2015-10-10 10:16
printf,需要配置一个什么子函数,让该函数和串口关联上。

示例程序:
Nuvoton\BSP Library\M0518BSP_CMSIS_v3.00.002\SampleCode\StdDriver\UART_TxRx_Function\KEIL
已经将printf关联到UART0_send上了,我单步进去了,停在循环
void SendChar_ToUART(int ch)
{
  while(DEBUG_PORT->FSR & UART_FSR_TX_FULL_Msk);
。。。。
}
我就搞不懂,为什么单片机没有把寄存器FSR的UART_FSR_TX_FULL_Msk位清0??
或者说不能单步调试看打印,要全速运行才能看到打印???

使用特权

评论回复
12
Harry-Nu| | 2015-10-10 10:58 | 只看该作者
本帖最后由 Harry-Nu 于 2015-10-10 11:01 编辑
icenover 发表于 2015-10-9 19:19
请问 Harry-Nu 兄,您是把
17 PB.0,UART0_RXD
18 PB.1,UART0_TXD

我是用的串口小助手,没有用Keil中的Debug View窗口。
你可以尝试用下面的Bin文件,看看能不能在超级终端上看到打印信息。如果不能,那么很有可能你的超级终端配置有问题。
你也可以将你的工程文件打包,发给我来看看。
UART_TxRxFunction.bin.tga (3.32 KB)



使用特权

评论回复
13
Harry-Nu| | 2015-10-10 11:10 | 只看该作者
icenover 发表于 2015-10-10 10:23
还有一点补充,我量VCC怎么是3v?? 不应该是3.3V么?? 会不会是这个问题导致的?? ...

芯唐的MCU支持宽电压,2.5V~5.5V。因此,3V供电是正常电压范围,不会产生MCU工作异常的现象的。

使用特权

评论回复
14
icenover|  楼主 | 2015-10-10 12:12 | 只看该作者
Harry-Nu 发表于 2015-10-10 10:58
我是用的串口小助手,没有用Keil中的Debug View窗口。
你可以尝试用下面的Bin文件,看看能不能在超级终端 ...

请问您给的bin文件如何烧写?我只有Nu-linker啊
我用的Nu-linker只能写到内存吧?我点Flash->download,似乎把UART_TxRxFunction.axf下载到内存中去运行了?

使用特权

评论回复
15
09kk小熊| | 2015-10-10 13:42 | 只看该作者
icenover 发表于 2015-10-10 12:12
请问您给的bin文件如何烧写?我只有Nu-linker啊
我用的Nu-linker只能写到内存吧?我点Flash->download, ...

用新唐的NuMicro ICP Programming Tool可以烧进去

使用特权

评论回复
16
Harry-Nu| | 2015-10-10 13:46 | 只看该作者
09kk小熊 发表于 2015-10-10 13:42
用新唐的NuMicro ICP Programming Tool可以烧进去

正解!

使用特权

评论回复
17
icenover|  楼主 | 2015-10-10 15:16 | 只看该作者
    感谢各位的耐心帮助,特别是Harry-Nu,我先用ICP对flash编程,然后就有打印了。这时候奇怪的是我用原版的UART_TxRx_Function例程也能正常debug打印了。
    所以我怀疑是一个默认编译选项造成的:Options for Target->Utilities->Setting中的 "Erase Sectors"有问题,如果我一开始换成"Erase Full Chip"是不是就不会出现本帖的问题了呢?
    怀疑与讨论:是不是我的开发板本来APROM中有一段东西,不管我用uVision怎么都无法清除?所以导致无法打印,一旦我用ICP烧写后,就成功打印了?-------但是也不对啊--我用uVision是下载到RAM中,而且也能运行,就是打印不出东西啊,和APROM应该没有关系的!
    哪位解释一下uVision调试的时候download到哪片存储区了?ICP program,uVision分别清除烧写的是哪个区--APROM,LDROM,RAM?

使用特权

评论回复
18
Harry-Nu| | 2015-10-10 16:09 | 只看该作者
icenover 发表于 2015-10-10 15:16
感谢各位的耐心帮助,特别是Harry-Nu,我先用ICP对flash编程,然后就有打印了。这时候奇怪的是我用原版 ...

Keil 中的 Download 区域是可以配置的。通常,我们会将代码烧录到APROM中,同时,请记得在Config中将芯片配置成从APROM启动,具体方法如下:Keil设置-->Utilities-->Setting,配置如下图所示:

然后再点“Config”,配置如下图所示 :

之后,程序就应该可以正常运行了。

使用特权

评论回复
19
史迪威将军| | 2015-10-10 21:47 | 只看该作者
硬件上有没有问题或者是不是接反了?

使用特权

评论回复
20
玛尼玛尼哄| | 2015-10-14 22:17 | 只看该作者
还没有解决吗?这问题,好让人头痛啊。。

使用特权

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

本版积分规则

5

主题

20

帖子

2

粉丝