-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbasic_io.c
84 lines (69 loc) · 2.71 KB
/
basic_io.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*
FreeRTOS V6.1.0 - Copyright (C) 2010 Real Time Engineers Ltd.
This file is part of the FreeRTOS distribution.
FreeRTOS is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License (version 2) as published by the
Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
***NOTE*** The exception to the GPL is included to allow you to distribute
a combined work that includes FreeRTOS without being obliged to provide the
source code for proprietary components outside of the FreeRTOS kernel.
FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details. You should have received a copy of the GNU General Public
License and the FreeRTOS license exception along with FreeRTOS; if not it
can be viewed here: http://www.freertos.org/a00114.html and also obtained
by writing to Richard Barry, contact details for whom are available on the
FreeRTOS WEB site.
1 tab == 4 spaces!
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
critical systems.
http://www.OpenRTOS.com - Commercial support, development, porting,
licensing and training services.
*/
/* Library includes. */
#include <stdio.h>
/* FreeRTOS includes. */
#include "FreeRTOS.h"
#include "task.h"
/* The ITM port is used to direct the printf() output to the serial window in
the Keil simulator IDE. */
#define mainITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n)))
#define mainITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n)))
#define mainDEMCR (*((volatile unsigned long *)(0xE000EDFC)))
#define mainTRCENA 0x01000000
void vPrintString( const char *pcString )
{
/* Print the string, suspending the scheduler as method of mutual
exclusion. */
vTaskSuspendAll();
{
printf( pcString );
}
xTaskResumeAll();
}
/*-----------------------------------------------------------*/
void vPrintStringAndNumber( const char *pcString, unsigned long ulValue )
{
/* Print the string, suspending the scheduler as method of mutual
exclusion. */
vTaskSuspendAll();
{
printf( "%s %u\n", pcString, ulValue );
}
xTaskResumeAll();
}
/*-----------------------------------------------------------*/
int fputc( int iChar, FILE *pxNotUsed )
{
/* Just to avoid compiler warnings. */
( void ) pxNotUsed;
if( mainDEMCR & mainTRCENA )
{
while( mainITM_Port32( 0 ) == 0 );
mainITM_Port8( 0 ) = iChar;
}
return( iChar );
}