//------------------------------------------ // 初期化関数 bool TsceneStageSelect::Initialize( void ) { FhWnd = TaskManager().GethWnd(); FiClientX = TaskManager().GetiClientX(); FiClientY = TaskManager().GetiClientY(); // 画像をメモリに読み込む FpBackGround = DxGraphics9().CreateSpriteFormFile(TEXT("stage_select_back.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); FpBtnStg1 = DxGraphics9().CreateSpriteFormFile(TEXT("btn_stg1.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); FpBtnStg2 = DxGraphics9().CreateSpriteFormFile(TEXT("btn_stg2.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); FpBtnStg3 = DxGraphics9().CreateSpriteFormFile(TEXT("btn_stg3.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); FpBtnStg4 = DxGraphics9().CreateSpriteFormFile(TEXT("btn_stg4.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); FpBtnStg5 = DxGraphics9().CreateSpriteFormFile(TEXT("btn_stg5.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); FpBtnReward = DxGraphics9().CreateSpriteFormFile(TEXT("btn_rewards.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); FpBtnCursor = DxGraphics9().CreateSpriteFormFile(TEXT("btn_cursor.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); FpBtnKanata = DxGraphics9().CreateSpriteFormFile(TEXT("kanata_btn_selected.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); FpBtnKanataS = DxGraphics9().CreateSpriteFormFile(TEXT("kanata_btn_selected.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); FpBtnShion = DxGraphics9().CreateSpriteFormFile(TEXT("shion_btn_normal.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); FpBtnShionS = DxGraphics9().CreateSpriteFormFile(TEXT("shion_btn_selected.png"),D3DFMT_A8R8G8B8 , D3DCOLOR_ARGB( 255, 255, 0, 0)); // ボタン作成 CreateButton(UI_BTN_STG_1,Vector2D(-20,-20),Vector2D(0,0)); CreateButton(UI_BTN_STG_2,Vector2D(-20,-10),Vector2D(0,0)); CreateButton(UI_BTN_STG_3,Vector2D(-20,0),Vector2D(0,0)); CreateButton(UI_BTN_STG_4,Vector2D(-20,10),Vector2D(0,0)); CreateButton(UI_BTN_STG_5,Vector2D(-20,20),Vector2D(0,0)); CreateButton(UI_BTN_SHION,Vector2D(20,-20),Vector2D(0,0)); CreateButton(UI_BTN_KANATA,Vector2D(20,20),Vector2D(0,0)); return true; }
//============================================================================== int main(void) { ini(); // Инициализируем периферию iniServo(); // Инициализируем сервы resetRTOS(); // Сбрасываем ядро iniRTOS(); // Старт(инициализация) ядра. // Запуск фоновых задач. Task2(); Task_setServo(); inf_send(); while(1) // Главный цикл диспетчера { wdt_reset(); // Сброс собачьего таймера TaskManager(); // Вызов диспетчера // у приема байт по UART не меньший приоритет, чем у RTOS if(FlagRecvCmd) { FlagRecvCmd = FLAG_DOWN; // парсим буфер на наличие новой команды // при ее наличии вносим задачу в диспетчер if(ua_cmd( &CmdBuff.First, sizeof( CmdBuff )) == 0) {} //setTask(Task_execCmd(&CmdBuff.First)); } } return 0; }
void espUartTx(u08 Cmd, u08* Value, u08 Len){ if espModuleIsNot() //Нет модуля, ничего не делаем return; while(FIFO_SPACE(espTxBuf) < (Len+6)){ //Ждем пока буфер не освободится TaskManager(); if espModuleIsNot(){ //Не удалось определить наличие модуля return; } } u08 FlagInt = SREG & SREG_I; cli(); //Формируется пакет FIFO_PUSH(espTxBuf, CMD_CLCK_PILOT1); FIFO_PUSH(espTxBuf, CMD_CLCK_PILOT2); FIFO_PUSH(espTxBuf, CMD_CLCK_PILOT1); FIFO_PUSH(espTxBuf, CMD_CLCK_PILOT2); FIFO_PUSH(espTxBuf, Len); while(Len){ FIFO_PUSH(espTxBuf, *Value++); Len--; } FIFO_PUSH(espTxBuf, Cmd); epsTxStart(); if (FlagInt) sei(); espAttemptLinkSet(); SetTimerTask(espTimeoutError, ESP_ERR_TIMEOUT); //Таймаут ответа от модуля }
int main() { Initial(); for(;;) { TaskManager(); Counter++; } return 0; }
//------ Помещает байт c в буфер передачи unsigned char usart_putchar(char c){ u08 storeInt = UCSR1B, Ret = USART_BUF_READY; //Символ благополучно помещен в буфер while(usartTXbuf.len == RX_LEN_STR){ //Подождем пока буфер передачи освободится если он занят TaskManager(); } usartTXIEdisable; //Запретить прерывание от передатчика на время обработки usartTXbuf.buf[usartTXbuf.len++] = c; if TXIEisSet(storeInt) //Если прерывания были разрешены то разрешить их снова usartTXIEnable; usartTXIEnable; //Разрешается передача return Ret; }
int main(void) { InitRTOS(); RunRTOS(); initAll(); wdt_enable(WDTO_120MS); RunTasks(); while (1) { wdt_reset(); // �בנמס סמבאק�ודמ עאילונא TaskManager(); // ��חמג הטסןועקונא } }
//============================================================================== int main(void) { pinMode(led, OUTPUT); InitAll(); // Инициализируем периферию InitRTOS(); // Инициализируем ядро RunRTOS(); // Старт ядра. // Запуск фоновых задач. SetTask(Task1); while(1) // Главный цикл диспетчера { wdt_reset(); // Сброс собачьего таймера TaskManager(); // Вызов диспетчера } return 0; }
//============================================================================== int main(void) { InitAll(); // Инициализируем периферию /*for (short i = 0 ; i < 10 ; i++) { PM_OnPin(LED_RED);//зажигаем светодиод //LED_PORT ^=1<<LED1; _delay_ms(100); PM_OffPin(LED_RED);//зажигаем светодиод //LED_PORT ^=1<<LED1; _delay_ms(400); }*/ pressedTime = 0; InitRTOS(); // Инициализируем ядро RunRTOS(); // Старт ядра. SetTask(TaskScanButtons); wdt_enable(WDTO_1S); while(1) // Главный цикл диспетчера { wdt_reset(); // Сброс собачьего таймера TaskManager(); // Вызов диспетчера } return 0; }
* @brief クラス間のやり取りをするクラス * * @note 使用方法 新しく登録する場合はTaskUnitBaseを継承している場合は 勝手にコンストラクタで登録して、デストラクタが呼ばれると 削除されるので特に意識せず使用可能。 登録すると毎フレームUpdateとDrawUpdateが呼ばれる。 */ /* ====================================================================== */ #include "SystemTaskManager.h" #include "SystemTaskUnit.h" #include "System/Draw2D/SystemDraw2DManager.h" TaskManager *TaskManager::m_pInstance = NEW TaskManager(); TaskManagerBase::TaskManagerBase(void) { m_vTaskUnit.clear(); } TaskManagerBase::~TaskManagerBase(void) { std::vector<TaskUnit*>::iterator it = m_vTaskUnit.begin(); while(m_vTaskUnit.empty() == 0){ //! 基本的にすべてのタスクは自分で削除するのでここで m_vTaskUnit.size()は0のはず TaskUnit *task = *it; DEBUG_PRINT("/_/_/解放し忘れタスクがあるよ : %s/_/_/\n",task->GetName().c_str()); it = m_vTaskUnit.erase(it); SAFE_DELETE(task);