cmem7_retarget.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. #ifndef __CMEM7_RETARGET_H
  27. #define __CMEM7_RETARGET_H
  28. #include <stdio.h>
  29. #include "cmem7.h"
  30. #include "cmem7_conf.h"
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34. #pragma import(__use_no_semihosting_swi)
  35. struct __FILE { int handle; /* Add whatever you need here */ };
  36. FILE __stdout;
  37. FILE __stdin;
  38. FILE __stderr;
  39. int fputc(int c, FILE *f) {
  40. uint8_t ch = c;
  41. if (c == '\n') {
  42. ch = '\r';
  43. while (0 == UART_Write(PRINT_UART, 1, &ch));
  44. ch = '\n';
  45. }
  46. while (0 == UART_Write(PRINT_UART, 1, &ch)) ;
  47. return ch;
  48. }
  49. int fgetc(FILE *f) {
  50. uint8_t ch;
  51. while (0 == UART_Read(PRINT_UART, 1, &ch)) ;
  52. return ch;
  53. }
  54. int ferror(FILE *f) {
  55. /* Your implementation of ferror */
  56. return EOF;
  57. }
  58. void _ttywrch(int c) {
  59. while (0 == UART_Write(PRINT_UART, 1, (uint8_t *)&c));
  60. }
  61. void _sys_exit(int return_code) {
  62. label: goto label; /* endless loop */
  63. }
  64. #ifdef __cplusplus
  65. }
  66. #endif
  67. #endif /* __CMEM7_RETARGET_H */