retarget.c

来自「lpc21系列关于uart 串口中断程序的源码」· C语言 代码 · 共 76 行

C
76
字号
/******************************************************************************/
/* RETARGET.C: 'Retarget' layer for target-dependent low level functions      */
/******************************************************************************/
/* This file is part of the uVision/ARM development tools.                    */
/* Copyright (c) 2005-2006 Keil Software. All rights reserved.                */
/* This software may only be used under the terms of a valid, current,        */
/* end user licence from KEIL for a compatible version of KEIL software       */
/* development tools. Nothing else gives you the right to use this software.  */
/******************************************************************************/

#include <stdio.h>
#include <rt_misc.h>

#pragma import(__use_no_semihosting_swi)


extern int __swi(8) com_putchar (int c);
extern int __swi(9) com_getchar (void);


struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;
FILE __stdin;


int fputc(int ch, FILE *f) {
//  return (sendchar(ch));
  volatile unsigned int i;

  while (com_putchar (ch) != 0) {
    for (i=0; i<1000; i++) {
      /*** DO NOTHING ***/
    }
  }

  return (ch);
}

/*------------------------------------------------------------------------------
fgetc waits until a character is received from the serial port.  This may not
be the exact desired operation (for example if the buffer is empty, this
function hangs waiting for a character to be received).
------------------------------------------------------------------------------*/
int fgetc(FILE *f) {
  int ch;

  do {
    ch = com_getchar ();
  }
  while (ch == -1);

  return ((unsigned char) ch);
}


int ferror(FILE *f) {
  /* Your implementation of ferror */
  return EOF;
}


void _ttywrch(int ch) {
  volatile unsigned int i;

  while (com_putchar (ch) != 0) {
    for (i=0; i<1000; i++) {
      /*** DO NOTHING ***/
    }
  }
}


void _sys_exit(int return_code) {
label:  goto label;  /* endless loop */
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?