/*---------------------------------------------------------------------------- * 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 #include "stm32f10x.h" //#include //#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 ch, FILE *f) { //return (SER_PutChar(c)); /* Place your implementation of fputc here */ /* e.g. write a character to the USART */ /* Loop until the end of transmission */ char i = (uint8_t)ch; while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) { } USART_SendData(USART1, (uint8_t) ch); return ch; } #include "modbus.h" int fgetc(FILE *f) { //return (SER_GetChar()); int ch; int i = 2000; __NOP(); b485Rec = 1; // Rx while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET) { } ch = USART_ReceiveData(USART1); b485Rec = 0; // Tx while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) { } USART_SendData(USART1, (uint8_t) ch); while(i-->0) { __NOP(); __NOP(); __NOP(); __NOP(); } b485Rec = 1; // Rx return ch; } 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 */ }