Olá Miguel. A finalidade é prover um handler para as tarefas (assim como no linux há o handler para as threads), que pode ser utilizado em muitos casos. Um dos casos mais comuns são as funções de bloqueio e desbloqueio da tarefa. Qualquer processo ou interrupção utilizando as funções
BlockTask e UnBlockTask pode bloquear ou desbloquear uma tarefa se utilizar o handler da tarefa que deseja bloquear como parâmetro. Ainda, a própria tarefa também pode se bloquear, mas por razões obvias outra tarefa ou uma interrupção deverá reativá-la.
Por exemplo, vc instalou a tarefa dessa forma:
OS_CPU_TYPE TaskHandler1; // note que a variável é global
if(InstallTask(&System_Time,"System Time",512,31, &TaskHandler1) != OK)
{
// Oh Oh
// Não deveria entrar aqui !!!
while(1){};
};
Então, para bloquear a tarefa é só usar o handler:
BlockTask(TaskHandler1);
e para desbloquear:
UnBlockTask(TaskHandler1);
No futuro o handler pode ser utilizado para mais funcionalidades. Entendeu?
Quanto ao port para a placa ST NucleoF401-RE, deve funcionar sim. Ambos os kits que você citou utilizam processadores ARM Cortex-M4F, ou seja, são compatíveis. No entanto, você deve verificar a compatibilidade da IDE utilzada (CoIDE). A IDE é que prove o suporte as bibliotecas CMSIS (configuração do microcontrolador) e as configurações de linker para esse microcontrolador (tamanho e endereço da FLASH/RAM, por exemplo). Se os endereços forem os mesmos é possível que o projeto do STM32F4 Discovery funcione no ST NucleoF401RE.
Qualquer dúvida estamos a disposição.
Abraço,