manish9161 wrote on Tuesday, July 08, 2014:
Hello I am working with stm32f3Discovery with FreeRTOS .I have created task with various priorities.I have to schedule that task in preemptive scheduling algorithum.
so I have added
1.#define portUSE_PREEMPTION 1 in portmacro.h
and pass to vTaskStartScheduler(portUSE_PREEMPTION)
But code isn’t compiled because vTaskStartScheduler(void ) in task.c
so how should i use preemptive scheduling algorithum…?
my code
#include "FreeRTOS.h"
#include "task.h"
#include "stm32f3_discovery.h"
#include
#include
/*!**************************************************************
* \fn init()
* \brief LED init function
*
* \param -
* \return -
******************************************************************/
void init()
{
STM_EVAL_LEDInit(LED3 | LED4 | LED5 | LED6 );
}
/*!**************************************************************
* \fn void TaskA()
* \brief taskA callback function
*
******************************************************************/\
void TaskA()
{
for(uint8_t i= 0; i< 10 ; i++)
{
STM_EVAL_LEDOn(LED3);
vTaskDelay(10);
STM_EVAL_LEDOff(LED3);
}
}
/*!**************************************************************
* \fn void TaskB()
* \brief taskB callback function
*
******************************************************************/\
void TaskB()
{
for(uint8_t i= 0; i< 10 ; i++)
{
STM_EVAL_LEDOn(LED4);
vTaskDelay(10);
STM_EVAL_LEDOff(LED4);
}
}
/*!**************************************************************
* \fn void TaskC()
* \brief taskC callback function
*
******************************************************************/\
void TaskC()
{
for(uint8_t i= 0; i< 10 ; i++)
{
STM_EVAL_LEDOn(LED5);
vTaskDelay(10);
STM_EVAL_LEDOff(LED5);
}
}
/*!**************************************************************
* \fn void TaskD()
* \brief taskD callback function
*
******************************************************************/
void TaskD()
{
for(uint8_t i= 0; i< 10 ; i++)
{
STM_EVAL_LEDOn(LED6);
vTaskDelay(10);
STM_EVAL_LEDOff(LED6);
}
}
/*!**************************************************************
* \fn main()
* \brief main function
*
******************************************************************/
int main(void) {
init();
/*! TaskA is having highest priority */
xTaskCreate(TaskA, (signed char*)"TaskA", 128, NULL, configMAX_PRIORITIES, NULL);
/*! TaskB having medium priority */
xTaskCreate(TaskB, (signed char*)"TaskB", 128, NULL, tskIDLE_PRIORITY+2, NULL);
/*! TaskC ,and TaskD Idle tasks */
xTaskCreate(TaskC, (signed char*)"TaskC", 128, NULL, tskIDLE_PRIORITY, NULL);
xTaskCreate(TaskD, (signed char*)"TaskD", 128, NULL, tskIDLE_PRIORITY, NULL);
vTaskStartScheduler(portUSE_PREEMPTION);
return 0;
}