| /*---------------------------------------------------------------------------- |
| * Name: Retarget.c |
| * Purpose: 'Retarget' layer for target-dependent low level functions |
| * Note(s): |
| *---------------------------------------------------------------------------- |
| * This file is part of the uVision/ARM development tools. |
| * 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. |
| * |
| * This software is supplied "AS IS" without warranties of any kind. |
| * |
| * Copyright (c) 2011 Keil - An ARM Company. All rights reserved. |
| *----------------------------------------------------------------------------*/ |
| |
| #include <stdio.h> |
| #include <rt_misc.h> |
| #include "Serial.h" |
| |
| #pragma import(__use_no_semihosting_swi) |
| |
| |
| |
| struct __FILE { int handle; /* Add whatever you need here */ }; |
| FILE __stdout; |
| FILE __stdin; |
| |
| |
| int fputc(int c, FILE *f) { |
| return (SER_PutChar(c)); |
| } |
| |
| |
| int fgetc(FILE *f) { |
| return (SER_GetChar()); |
| } |
| |
| |
| int ferror(FILE *f) { |
| /* Your implementation of ferror */ |
| return EOF; |
| } |
| |
| |
| void _ttywrch(int c) { |
| SER_PutChar(c); |
| } |
| |
| |
| void _sys_exit(int return_code) { |
| label: goto label; /* endless loop */ |
| } |