Добрый вечер, начал работать с TNKernel использую версию 2.7.
Есть один вопрос:
нужно определенную функцию выполнять через некоторое время системных тиков, сейчас реализовал через задачи подобным образом:
Код
#define REBOOT_START 0x00
#define REBOOT_UP 0x01
#define REBOOT_END 0x02
void func_reset(void *par) {
uint8_t status = REBOOT_START;
uart-send_string("Start activate modem");
while (1) {
switch(status_reboot) {
case REBOOT_START:
GPIOB->BSRR=GPIO_Pin_1;
status = REBOOT_UP;
tn_task_sleep(3000);
break;
case REBOOT_UP:
GPIOB->BRR=GPIO_Pin_1;
status = REBOOT_END;
tn_task_sleep(1000);
break;
case REBOOT_END:
send_cmd_device(POWER_UP);
tn_task_exit(TN_EXIT_TASK);
break;
}
}
}
Т.е. создаю задачу без ее запуска при создании, а потом уже в коде программы, там где нужно запустить/перезагрузить девайс я запускаю эту задачу
Код
tn_task_activate(&task_reset);
Но на сколько это оправданно?
Заранее благодарен за ответ.