00001
00056 #include <cfg/os.h>
00057
00058 #include <stdio.h>
00059 #include <io.h>
00060
00061 #include <dev/board.h>
00062
00063 #include <sys/thread.h>
00064 #include <sys/timer.h>
00065 #include <sys/event.h>
00066
00067
00068
00069
00070 static HANDLE mutex;
00071
00072
00073
00074
00075 THREAD(High, arg)
00076 {
00077 NutThreadSetPriority(32);
00078 for(;;) {
00079 puts("Request");
00080 if (NutEventWait(&mutex, 2000)) {
00081 puts("Timeout");
00082 }
00083 else {
00084 puts("Acquired");
00085 NutSleep(2500);
00086 puts("Release");
00087 NutEventPost(&mutex);
00088 }
00089 NutSleep(1000);
00090 }
00091 }
00092
00093
00094
00095
00096 THREAD(Low, arg)
00097 {
00098 NutThreadSetPriority(96);
00099 for(;;) {
00100 puts(" Request");
00101 if (NutEventWait(&mutex, 3000)) {
00102 puts(" Timeout");
00103 }
00104 else {
00105 puts(" Acquired");
00106 NutSleep(3500);
00107 puts(" Release");
00108 NutEventPost(&mutex);
00109 }
00110 }
00111 }
00112
00113
00114
00115
00116 int main(void)
00117 {
00118 u_long baud = 115200;
00119
00120
00121
00122
00123
00124 NutRegisterDevice(&DEV_DEBUG, 0, 0);
00125 freopen(DEV_DEBUG_NAME, "w", stdout);
00126 _ioctl(_fileno(stdout), UART_SETSPEED, &baud);
00127
00128
00129
00130
00131 puts("\nNut/OS Event Queue Demo");
00132 puts("High Main Low ");
00133
00134
00135
00136
00137
00138 NutEventPost(&mutex);
00139
00140
00141
00142
00143 NutThreadCreate("high", High, 0, 256);
00144 NutThreadCreate("low", Low, 0, 256);
00145
00146 for(;;) {
00147 puts(" Request");
00148 if (NutEventWait(&mutex, 1000)) {
00149 puts(" Timeout");
00150 }
00151 else {
00152 puts(" Acquired");
00153 NutSleep(1500);
00154 puts(" Release");
00155 NutEventPost(&mutex);
00156 }
00157 NutSleep(1000);
00158 }
00159 }