[技术问答] NuTiny-EVB- M0518SD2AE Debug串口不输出

[复制链接]
4844|23
 楼主| icenover 发表于 2015-10-9 17:07 | 显示全部楼层 |阅读模式
    各位大牛,小弟新买一块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 | 显示全部楼层
直接用例程做,就打不出来了吗?这情况好诡异,一般都是可以的啊,是不是你端口哪儿跳线没有设置对。
cspoly 发表于 2015-10-9 21:39 | 显示全部楼层
樓主能說說UART0_RXD和UART0_TXD是怎麼和"uart-RS232"接的嗎?
該不會是沒有對接吧.
小猫爱吃鱼 发表于 2015-10-9 21:41 | 显示全部楼层
楼主玩的真是太高大上了啊,向您学习
 楼主| icenover 发表于 2015-10-10 09:16 | 显示全部楼层
玛尼玛尼哄 发表于 2015-10-9 19:55
直接用例程做,就打不出来了吗?这情况好诡异,一般都是可以的啊,是不是你端口哪儿跳线没有设置对。 ...

是直接用的例程。
端口跳线?没有跳线啊,我硬件上我什么都没动过,就直接用mini usb线连到电脑,目标板就能运行了。只是printf打印不出东西。
 楼主| 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);吗???
玛尼玛尼哄 发表于 2015-10-10 10:16 | 显示全部楼层
icenover 发表于 2015-10-10 09:16
是直接用的例程。
端口跳线?没有跳线啊,我硬件上我什么都没动过,就直接用mini usb线连到电脑,目标板 ...

printf,需要配置一个什么子函数,让该函数和串口关联上。
 楼主| icenover 发表于 2015-10-10 10:23 | 显示全部楼层
还有一点补充,我量VCC怎么是3v?? 不应该是3.3V么?? 会不会是这个问题导致的??
 楼主| 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??
或者说不能单步调试看打印,要全速运行才能看到打印???
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, 下载次数: 22)



Harry-Nu 发表于 2015-10-10 11:10 | 显示全部楼层
icenover 发表于 2015-10-10 10:23
还有一点补充,我量VCC怎么是3v?? 不应该是3.3V么?? 会不会是这个问题导致的?? ...

芯唐的MCU支持宽电压,2.5V~5.5V。因此,3V供电是正常电压范围,不会产生MCU工作异常的现象的。
 楼主| 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下载到内存中去运行了?
09kk小熊 发表于 2015-10-10 13:42 | 显示全部楼层
icenover 发表于 2015-10-10 12:12
请问您给的bin文件如何烧写?我只有Nu-linker啊
我用的Nu-linker只能写到内存吧?我点Flash->download, ...

用新唐的NuMicro ICP Programming Tool可以烧进去
Harry-Nu 发表于 2015-10-10 13:46 | 显示全部楼层
09kk小熊 发表于 2015-10-10 13:42
用新唐的NuMicro ICP Programming Tool可以烧进去

正解!
 楼主| 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?
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,配置如下图所示:

Setting

Setting

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

Config

Config

之后,程序就应该可以正常运行了。
史迪威将军 发表于 2015-10-10 21:47 | 显示全部楼层
硬件上有没有问题或者是不是接反了?
玛尼玛尼哄 发表于 2015-10-14 22:17 | 显示全部楼层
还没有解决吗?这问题,好让人头痛啊。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

20

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部