68 lines
1.1 KiB
C
68 lines
1.1 KiB
C
|
#include <stdio.h>
|
||
|
#include "dev/uart1.h"
|
||
|
|
||
|
|
||
|
#include PLATFORM_HEADER
|
||
|
#include "hal/micro/micro-common.h"
|
||
|
#include "hal/micro/cortexm3/micro-common.h"
|
||
|
//#include "uart.h"
|
||
|
|
||
|
#ifdef __GNUC__
|
||
|
# define _LLIO_STDIN ((int) stdin)
|
||
|
# define _LLIO_STDOUT ((int) stdout)
|
||
|
# define _LLIO_STDERR ((int) stderr)
|
||
|
# define _LLIO_ERROR (-1)
|
||
|
#else
|
||
|
# ifdef __ICCARM__
|
||
|
# include <yfuns.h>
|
||
|
# endif
|
||
|
#endif
|
||
|
|
||
|
void __io_putchar(char c)
|
||
|
{
|
||
|
uart1_writeb(c);
|
||
|
}
|
||
|
|
||
|
#undef putchar
|
||
|
|
||
|
int putchar(int c)
|
||
|
{
|
||
|
__io_putchar((char) c);
|
||
|
return c;
|
||
|
}
|
||
|
|
||
|
size_t _write(int handle, const unsigned char * buffer, size_t size)
|
||
|
{
|
||
|
size_t nChars = 0;
|
||
|
|
||
|
if (handle != _LLIO_STDOUT && handle != _LLIO_STDERR) {
|
||
|
return _LLIO_ERROR;
|
||
|
}
|
||
|
|
||
|
if (buffer == 0) {
|
||
|
// This means that we should flush internal buffers.
|
||
|
//spin until TX complete (TX is idle)
|
||
|
while ((SC1_UARTSTAT&SC_UARTTXIDLE)!=SC_UARTTXIDLE) {}
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
// ensure port is configured for UART
|
||
|
if(SC1_MODE != SC1_MODE_UART) {
|
||
|
return _LLIO_ERROR;
|
||
|
}
|
||
|
|
||
|
while(size--) {
|
||
|
__io_putchar(*buffer++);
|
||
|
++nChars;
|
||
|
}
|
||
|
|
||
|
return nChars;
|
||
|
}
|
||
|
|
||
|
|
||
|
size_t _read(int handle, unsigned char * buffer, size_t size)
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
|