/* * GPIO 出力 * * OS: T-Kernel * */ #include /* T-Kernel ヘッダ */ #include /* tm_printf() など */ #include /* ハードウェア定義 */ /* オブジェクト ID 番号 */ LOCAL ID tidA; /* タスク A の ID */ /* タスク A */ LOCAL void taskA(INT stacd, void *exinf) { /* LED3 (PF3) に出力するように設定する */ PIO_IE(F) &= ~(1 << 3); PIO_CR(F) |= (1 << 3); for (;;) { /* 0 を出力する */ PIO_DATA(F) &= ~(1 << 3); /* LED3 (PF3) */ tm_printf((UB*)"LED3: 0\n"); /* 2000 ミリ秒待つ (ディレイ) */ /*??*/; /* 1 を出力する */ PIO_DATA(F) |= (1 << 3); /* LED3 (PF3) */ tm_printf((UB*)"LED3: 1\n"); /* 2000 ミリ秒待つ (ディレイ) */ /*??*/; } /* このタスクは終了しない */ } /* 初期化処理 */ EXPORT INT usermain(void) { T_CTSK ct; /* タスク A を生成する */ ct.exinf = (void*)('t' | 's' << 8 | 'k' << 16 | 'A' << 24); /* 拡張情報 */ ct.tskatr = TA_HLNG | TA_RNG0; /* タスク属性 */ ct.task = taskA; /* タスク起動アドレス */ ct.itskpri = 1; /* タスク起動時優先度 */ ct.stksz = 1024; /* スタックサイズ */ tidA = /*??*/; /* タスク A を生成 */ if (tidA < E_OK) return tidA; /* タスク生成失敗時 */ /*??*/; /* タスク A を起動 */ return E_OK; }