[技术问答] 使用不同的串口作为printf怎么理解

[复制链接]
1777|7
 楼主| gejigeji521 发表于 2018-7-31 20:27 | 显示全部楼层 |阅读模式
串口0

  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2017 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Website: http://www.nuvoton.com
  8. //  E-Mail : MicroC-8bit@nuvoton.com
  9. //  Date   : Jan/21/2017
  10. //***********************************************************************************************************

  11. //***********************************************************************************************************
  12. //  File Function: N76E003 GPIO demo code
  13. //***********************************************************************************************************
  14. #include "N76E003.h"
  15. #include "SFR_Macro.h"
  16. #include "Function_define.h"
  17. #include "Common.h"
  18. #include "Delay.h"


  19. unsigned char temp _at_ 0x08;
  20. unsigned char idata itemp _at_ 0x80;
  21. unsigned char xdata xtemp _at_ 0x80;

  22. /*==========================================================================*/
  23. void main (void)
  24. {
  25.                 InitialUART0_Timer3(115200);
  26.             TI = 1;                                                                                                                        // Important, use prinft function must set TI=1;
  27.                 while(1)
  28.                 {
  29.                         printf("\n Hello world");
  30.                         Timer0_Delay1ms(300);
  31.                 }
  32. }


串口1

  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2017 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Website: http://www.nuvoton.com
  8. //  E-Mail : MicroC-8bit@nuvoton.com
  9. //  Date   : Jan/21/2017
  10. //***********************************************************************************************************

  11. //***********************************************************************************************************
  12. //  File Function: N76E003 GPIO demo code
  13. //***********************************************************************************************************
  14. #include "N76E003.h"
  15. #include "SFR_Macro.h"
  16. #include "Function_define.h"
  17. #include "Common.h"
  18. #include "Delay.h"


  19. unsigned char temp _at_ 0x08;
  20. unsigned char idata itemp _at_ 0x80;
  21. unsigned char xdata xtemp _at_ 0x80;

  22. /*==========================================================================*/
  23. void main (void)
  24. {
  25.                 InitialUART1_Timer3(115200);
  26.                 TI_1 = 1;
  27.                 while(1)
  28.                 {
  29.                         printf("\n hello world");
  30.                         Timer0_Delay1ms(300);
  31.                 }
  32. }


 楼主| gejigeji521 发表于 2018-7-31 20:27 | 显示全部楼层
unsigned char temp _at_ 0x08;
unsigned char idata itemp _at_ 0x80;
unsigned char xdata xtemp _at_ 0x80;
这个定义是干啥的
 楼主| gejigeji521 发表于 2018-7-31 20:28 | 显示全部楼层
而每个下面都定义了一个PUTCHAR文件,那么这个头文件没有看到被引用啊,咋回事。
dongliushui 发表于 2018-7-31 20:30 | 显示全部楼层
问的好,应该有地方引用这个文件。
wangshujun 发表于 2018-8-1 09:05 | 显示全部楼层
关键差异在putchar函数的不同,没贴出来,putchar被printf间接调用,系统本来有一个putchar,如果你自己重写了,按照重写的为准
ayb_ice 发表于 2018-8-1 10:13 | 显示全部楼层
printf最终调用putchar函数,所以修改putchar就可以重定向printf,

比如可以使用硬件串口或软件模拟串口
wangshujun 发表于 2018-8-1 11:09 | 显示全部楼层
ayb_ice 发表于 2018-8-1 10:13
printf最终调用putchar函数,所以修改putchar就可以重定向printf,

比如可以使用硬件串口或软件模拟串口 ...

甚至可以重定向到lcd,直接用printf比自己写方便很多
 楼主| gejigeji521 发表于 2018-8-12 10:28 | 显示全部楼层
wangshujun 发表于 2018-8-1 11:09
甚至可以重定向到lcd,直接用printf比自己写方便很多

这个建议给力。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

2465

帖子

8

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