返回列表 发新帖本帖赏金 3.00元(功能说明)

[技术问答] 请教N76E003如何重定向printf()到UART1

[复制链接]
668|10
| 2019-1-30 19:24 | 显示全部楼层
你下载BSP没,其中一个例子就是的。


里面一共两个文件

其中一个就是重定向到串口1的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册
x

qy002千赢国际娱乐榜单

245810 qy002千赢国际娱乐了 3.00 元 2019-01-30
理由:完美解决
| 2019-1-30 19:28 | 显示全部楼层
  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. }
复制代码
  1. /***********************************************************************/
  2. /*  This file is part of the C51 Compiler package                      */
  3. /*  Copyright KEIL ELEKTRONIK GmbH 1990 - 2002                         */
  4. /***********************************************************************/
  5. /*                                                                     */
  6. /*  PUTCHAR.C:  This routine is the general character output of C51.   */
  7. /*  You may add this file to a uVision2 project.                       */
  8. /*                                                                     */
  9. /*  To translate this file use C51 with the following invocation:      */
  10. /*     C51 PUTCHAR.C <memory model>                                    */
  11. /*                                                                     */
  12. /*  To link the modified PUTCHAR.OBJ file to your application use the  */
  13. /*  following Lx51 invocation:                                         */
  14. /*     Lx51 <your object file list>, PUTCHAR.OBJ <controls>            */
  15. /*                                                                     */
  16. /***********************************************************************/

  17. //#include <reg51.h>
  18. #include "N76E003.h"

  19. /****************************************************************************/
  20. /* Define putchar send from UART1, printf function will send from P1.6(TXD_1)
  21. /* NOTICE: Since UART1 pin is multi-function with OCD DATA/CLK pin.
  22. /* Suggest download than use run with realchip but not OCD mode.
  23. /****************************************************************************/
  24. #if 1
  25. char putchar (char c)                                //for UART1_printf
  26. {
  27.                 while (!TI_1);  /* wait until transmitter ready */
  28.                 TI_1 = 0;
  29.                 SBUF_1 = c;      /* output character */
  30.                 return (c);
  31. }
  32. #else
  33. /*
  34. * putchar (mini version): outputs charcter only
  35. */
  36. char putchar (char c)                          //for UART0_printf
  37. {                               
  38.   while (!TI);
  39.   TI = 0;
  40.   return (SBUF = c);
  41. }

  42. #endif
复制代码


| 2019-1-30 19:29 | 显示全部楼层
主要就是通过putchar函数的实现,实现重定向。
可以看看开头那个定义三个变量是否根本程序有关,删除试试,我手里没这个板子,没法试

评论

245810 2019-1-30 20:09 回复TA
谢谢你!已按楼上方法解决,加上条件编译: /****************************************************************************/ /* Define putchar send from UART1, printf function will send from P1.6(TXD_1) /* NOTICE: Since UART1 pin is multi-function with OCD DATA/CLK pin. /* Suggest download than use run with realchip but not OCD mode. /****************************************************************************/ #if 1 char putchar (char c) //for UA...  
 楼主 | 2019-1-30 20:11 | 显示全部楼层
| 2019-1-30 20:21 | 显示全部楼层
http://bbs.21ic.com/icview-2622086-1-1.html
楼主参加活动啊,哈哈,趁机把你的赏金赚回来。
| 2019-1-30 21:31 | 显示全部楼层
对,楼主下载BSP,去官方,这个版块上面哪个图片就是链接。
| 2019-1-30 22:18 | 显示全部楼层
占楼主的光了,学到了,谢谢。
| 2019-2-2 10:37 | 显示全部楼层
keil安装目录的C51文件夹内有LIB文件夹,里面有个PUTCHAR.C文件,在这个文件里面修改就行了 这里面有putchar函数是给用户修改的  修改发送完成中断标识和数据缓冲寄存器即可,切记不要开串口中断,并且需要在初始化串口的时候将发送完成中断标识软件设置为1,因为在putchar函数内是先检测发送完成再发送数据的
| 2019-2-2 10:38 | 显示全部楼层
  1. /*
  2. * putchar (mini version): outputs charcter only
  3. */
  4. char putchar (char c)  {
  5.   while (!TI);
  6.   TI = 0;
  7.   return (SBUF = c);
  8. }
  9. //修改这里面的TI和SBUF即可
复制代码
扫描二维码,随时随地手机跟帖
返回列表 发新帖 本帖赏金 3.00元(功能说明)
您需要登录后才可以回帖 登录 | 注册
本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表