CubeMX tarafından oluşturulan CMSIS RTOS API kod:
main.c
/* Definitions for defaultTask */
osThreadId_t defaultTaskHandle;
const osThreadAttr_t defaultTask_attributes = {
.name = "defaultTask",
.stack_size = 128 * 4,
.priority = (osPriority_t) osPriorityLow,
};
/* Create the thread(s) */
/* creation of defaultTask */
defaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &defaultTask_attributes);
void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
{
osDelay(1);
}
/* USER CODE END 5 */
}
Aşağıdaki osThreadNew() fonksiyonu içerisinde FreeRTOS Native API fonksiyonu olan xTaskCreate() fonksiyonu çağrılıyor:
cmsis_os2.c
if (xTaskCreate ((TaskFunction_t)func, name, (uint16_t)stack, argument, prio, &hTask) != pdPASS) {
hTask = NULL;
Doğrudan FreeRTOS API ile bu task oluşturulsaydı şöyle olacaktı:
xTaskCreate(
StartDefaultTask, // task fonksiyonu
"defaultTask", // isim
128, // stack size (word)
NULL, // argument
priority_map, // priority dönüşümü
&taskHandle // handle
);
Hiç yorum yok:
Yorum Gönder