-
Notifications
You must be signed in to change notification settings - Fork 0
/
main_blinky.c
135 lines (117 loc) · 3.12 KB
/
main_blinky.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* Kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
/* Standard demo includes. */
#include "partest.h"
//#include "xgpio.h"
#include "xparameters.h"
/* Priorities at which the tasks are created. */
#define mainQUEUE_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 2 )
#define mainQUEUE_SEND_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
/* The rate at which data is sent to the queue. The 200ms value is converted
to ticks using the portTICK_PERIOD_MS constant. */
#define mainQUEUE_SEND_FREQUENCY_MS ( 1000 / portTICK_PERIOD_MS )
/* The number of items the queue can hold. This is 1 as the receive task
will remove items as they are added, meaning the send task should always find
the queue empty. */
#define mainQUEUE_LENGTH ( 1 )
/* The LED toggled by the Rx task. */
#define mainTASK_LED ( 1 )
/*-----------------------------------------------------------*/
/*
* The tasks as described in the comments at the top of this file.
*/
//static void prvQueueReceiveTask( void *pvParameters );
static void prvQueueSendTask( void *pvParameters );
/*-----------------------------------------------------------*/
/* The queue used by both tasks. */
static QueueHandle_t xQueue = NULL;
/*-----------------------------------------------------------*/
void main_blinky( void )
{
/* Create the queue. */
xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( uint32_t ) );
if( xQueue != NULL )
{
xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL );
/* Start the tasks and timer running. */
//vTaskStartScheduler();
}
/* If all is well, the scheduler will now be running, and the following
line will never be reached. If the following line does execute, then
there was either insufficient FreeRTOS heap memory available for the idle
and/or timer tasks to be created, or vTaskStartScheduler() was called from
User mode. See the memory management section on the FreeRTOS web site for
more details on the FreeRTOS heap http://www.freertos.org/a00111.html. The
mode from which main() is called is set in the C start up code and must be
a privileged mode (not user mode). */
//vParTestToggleLED ( mainTASK_LED );
/*
for( ;; )
{
SPI_SEND();
vTaskDelay( 100 );
}
*/
u8 readBuf[32];
int i;
for (i = 0; i < 32; i++)
{
readBuf[i] = 0x00;
}
startListening();
for( ;; )
{
/*
while(1)
{
writeTx(readBuf, 1);
}*/
while (!dataAvailable())
{
//readRx(readBuf, sizeof(unsigned char));
;
}
i = 0;
stopListening();
while(dataAvailable())
{
readRx(&readBuf[i++], sizeof(unsigned long));
//while(1);
//readBuf[0] = getRegByte(RPD);
(void)readBuf;
}
startListening();
while(1)
{
(void)readBuf;
}
}
}
/*-----------------------------------------------------------*/
static void prvQueueSendTask( void *pvParameters )
{
(void)pvParameters;
/*
u8 readBuf[32];
int i;
for (i = 0; i < 32; i++)
{
readBuf[i] = 0;
}
for( ;; )
{
if (dataReady())
{
readRx(readBuf, sizeof(unsigned long));
}
else
{
readBuf[0] = 0;
readBuf[1] = 0;
}
}
*/
}
/*-----------------------------------------------------------*/