LPCOpen Platform
v1.03
LPCOpen Platform for NXP LPC Microcontrollers
Main Page
Modules
Data Structures
Files
Related Pages
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
ucos_iii_blinky.c
Go to the documentation of this file.
1
/*
2
* @brief Blinky example
3
*
4
* uC/OS-III 'blinky' example. Creates several LED blink threads and
5
* a UART output thread that ticks at about 1Hz.
6
*
7
* @note
8
* Copyright(C) NXP Semiconductors, 2012
9
* All rights reserved.
10
*
11
* @par
12
* Software that is described herein is for illustrative purposes only
13
* which provides customers with programming information regarding the
14
* LPC products. This software is supplied "AS IS" without any warranties of
15
* any kind, and NXP Semiconductors and its licensor disclaim any and
16
* all warranties, express or implied, including all implied warranties of
17
* merchantability, fitness for a particular purpose and non-infringement of
18
* intellectual property rights. NXP Semiconductors assumes no responsibility
19
* or liability for the use of the software, conveys no license or rights under any
20
* patent, copyright, mask work right, or any other intellectual property rights in
21
* or to any products. NXP Semiconductors reserves the right to make changes
22
* in the software without notification. NXP Semiconductors also makes no
23
* representation or warranty that such application will be suitable for the
24
* specified use without further testing or modification.
25
*
26
* @par
27
* Permission to use, copy, modify, and distribute this software and its
28
* documentation is hereby granted, under NXP Semiconductors' and its
29
* licensor's relevant copyrights in the software, without fee, provided that it
30
* is used in conjunction with NXP Semiconductors microcontrollers. This
31
* copyright, permission, and disclaimer notice must appear in all copies of
32
* this code.
33
*/
34
35
#include "board.h"
36
#include "
os.h
"
37
74
/*****************************************************************************
75
* Private types/enumerations/variables
76
****************************************************************************/
77
78
static
OS_TCB
vLEDTask1TCB
,
vLEDTask2TCB
,
vUARTTaskTCB
;
79
static
CPU_STK
vLEDTask1Stk
[
APP_CFG_TASK_START_STK_SIZE
];
80
static
CPU_STK
vLEDTask2Stk
[
APP_CFG_TASK_START_STK_SIZE
];
81
static
CPU_STK
vUARTTaskStk
[
APP_CFG_TASK_START_STK_SIZE
];
82
83
/*****************************************************************************
84
* Public types/enumerations/variables
85
****************************************************************************/
86
87
/*****************************************************************************
88
* Private functions
89
****************************************************************************/
90
91
extern
void
OS_CSP_TickInit
(
void
);
92
93
/* Sets up system hardware */
94
static
void
prvSetupHardware
(
void
)
95
{
96
Board_Init
();
97
98
/* Initial LED0 state is off */
99
Board_LED_Set
(0,
false
);
100
}
101
102
/* LED2 toggle thread */
103
static
void
vLEDTask2
(
void
*p_arg)
104
{
105
OS_ERR
err;
106
bool
LedState =
true
;
107
108
while
(1) {
109
Board_LED_Set
(1, LedState);
110
LedState = (bool) !LedState;
111
112
/* About a 7Hz on/off toggle rate */
113
OSTimeDlyHMSM(0u, 0u, 0u, 71u,
OS_OPT_TIME_HMSM_STRICT
, &err);
114
}
115
}
116
117
/* UART (or output) thread */
118
static
void
vUARTTask
(
void
*p_arg)
119
{
120
OS_ERR
err;
121
int
tickCnt = 0;
122
123
while
(1) {
124
DEBUGOUT
(
"Tick: %d\r\n"
, tickCnt);
125
tickCnt++;
126
127
/* About a 1s delay here */
128
OSTimeDlyHMSM(0u, 0u, 1u, 0u,
OS_OPT_TIME_HMSM_STRICT
, &err);
129
}
130
}
131
132
/* LED1 toggle thread */
133
static
void
vLEDTask1
(
void
*p_arg)
134
{
135
OS_ERR
os_err;
136
bool
LedState =
true
;
137
138
/* Start tick */
139
OS_CSP_TickInit
();
140
141
/* Other tasks */
142
OSTaskCreate
( (OS_TCB *) &
vLEDTask2TCB
,
143
(
CPU_CHAR
*)
"vLEDTask2"
,
144
(
OS_TASK_PTR
)
vLEDTask2
,
145
(
void
*) 0,
146
(
OS_PRIO
)
APP_CFG_TASK_START_PRIO
+ 1,
147
(
CPU_STK
*)
vLEDTask2Stk
,
148
(
CPU_STK_SIZE
)
APP_CFG_TASK_START_STK_SIZE_LIMIT
,
149
(
CPU_STK_SIZE
)
APP_CFG_TASK_START_STK_SIZE
,
150
(
OS_MSG_QTY
) 0u,
151
(
OS_TICK
) 0u,
152
(
void
*) 0,
153
(
OS_OPT
) (
OS_OPT_TASK_STK_CHK
|
OS_OPT_TASK_STK_CLR
),
154
(
OS_ERR
*) &os_err);
155
OSTaskCreate
( (OS_TCB *) &
vUARTTaskTCB
,
156
(
CPU_CHAR
*)
"vUARTTask"
,
157
(
OS_TASK_PTR
)
vUARTTask
,
158
(
void
*) 0,
159
(
OS_PRIO
)
APP_CFG_TASK_START_PRIO
+ 2,
160
(
CPU_STK
*)
vUARTTaskStk
,
161
(
CPU_STK_SIZE
) APP_CFG_TASK_START_STK_SIZE_LIMIT,
162
(
CPU_STK_SIZE
) APP_CFG_TASK_START_STK_SIZE,
163
(
OS_MSG_QTY
) 0u,
164
(
OS_TICK
) 0u,
165
(
void
*) 0,
166
(
OS_OPT
) (
OS_OPT_TASK_STK_CHK
|
OS_OPT_TASK_STK_CLR
),
167
(
OS_ERR
*) &os_err);
168
169
while
(1) {
170
Board_LED_Set
(0, LedState);
171
LedState = (bool) !LedState;
172
173
/* About a 3Hz on/off toggle rate */
174
OSTimeDlyHMSM(0u, 0u, 0u, 156u,
OS_OPT_TIME_HMSM_STRICT
, &os_err);
175
}
176
}
177
178
/*****************************************************************************
179
* Public functions
180
****************************************************************************/
181
186
int
main
(
void
)
187
{
188
OS_ERR
os_err;
189
190
prvSetupHardware
();
191
192
CPU_Init
();
193
194
OSInit
(&os_err);
195
196
OSTaskCreate
( (OS_TCB *) &
vLEDTask1TCB
,
197
(
CPU_CHAR
*)
"vLEDTask1"
,
198
(
OS_TASK_PTR
)
vLEDTask1
,
199
(
void
*) 0,
200
(
OS_PRIO
)
APP_CFG_TASK_START_PRIO
,
201
(
CPU_STK
*)
vLEDTask1Stk
,
202
(
CPU_STK_SIZE
)
APP_CFG_TASK_START_STK_SIZE_LIMIT
,
203
(
CPU_STK_SIZE
)
APP_CFG_TASK_START_STK_SIZE
,
204
(
OS_MSG_QTY
) 0u,
205
(
OS_TICK
) 0u,
206
(
void
*) 0,
207
(
OS_OPT
) (
OS_OPT_TASK_STK_CHK
|
OS_OPT_TASK_STK_CLR
),
208
(
OS_ERR
*) &os_err);
209
210
OSStart
(&os_err);
211
212
(void) &os_err;
213
214
return
0;
215
}
216
applications
lpc17xx_40xx
examples
ucos_iii
ucos_iii_blinky
ucos_iii_blinky.c
Generated on Fri May 10 2013 10:42:08 for LPCOpen Platform by
1.8.2