1 /**
2     *****************************************************************************
3     * @file     cmem7_retarget.h
4     *
5     * @brief    CMEM7 retarget header file
6     *
7     *
8     * @version  V1.0
9     * @date     3. September 2013
10     *
11     * @note
12     *
13     *****************************************************************************
14     * @attention
15     *
16     * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
17     * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
18     * TIME. AS A RESULT, CAPITAL-MICRO SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
19     * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
20     * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
21     * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
22     *
23     * <h2><center>&copy; COPYRIGHT 2013 Capital-micro </center></h2>
24     *****************************************************************************
25     */
26 
27 #ifndef __CMEM7_RETARGET_H
28 #define __CMEM7_RETARGET_H
29 
30 #include <stdio.h>
31 #include "cmem7.h"
32 #include "cmem7_conf.h"
33 
34 #ifdef __cplusplus
35  extern "C" {
36 #endif
37 
38 
39 #pragma import(__use_no_semihosting_swi)
40 
41 struct __FILE { int handle; /* Add whatever you need here */ };
42 FILE __stdout;
43 FILE __stdin;
44 FILE __stderr;
45 
46 
fputc(int c,FILE * f)47 int fputc(int c, FILE *f) {
48   uint8_t ch = c;
49     if (c == '\n')  {
50         ch = '\r';
51     while (0 == UART_Write(PRINT_UART, 1, &ch));
52         ch = '\n';
53   }
54 
55     while (0 == UART_Write(PRINT_UART, 1, &ch)) ;
56   return ch;
57 }
58 
59 
fgetc(FILE * f)60 int fgetc(FILE *f) {
61     uint8_t ch;
62 
63     while (0 == UART_Read(PRINT_UART, 1, &ch)) ;
64   return ch;
65 }
66 
ferror(FILE * f)67 int ferror(FILE *f) {
68   /* Your implementation of ferror */
69   return EOF;
70 }
71 
72 
_ttywrch(int c)73 void _ttywrch(int c) {
74   while (0 == UART_Write(PRINT_UART, 1, (uint8_t *)&c));
75 }
76 
77 
_sys_exit(int return_code)78 void _sys_exit(int return_code) {
79 label:  goto label;  /* endless loop */
80 }
81 
82 
83 #ifdef __cplusplus
84 }
85 #endif
86 
87 #endif /* __CMEM7_RETARGET_H */
88