在线时间183 小时
UID2042646
ST金币2138
蝴蝶豆12
注册时间2015-4-24
该用户从未签到
金牌会员
- 最后登录
- 2020-3-22
|
本帖最后由 wanyisq 于 2018-7-9 08:18 编辑
我使用的STM32F103VE运行的STM32CubeMX生成的freertos工程。
一共有两个任务,TSAK1和TASK2都是翻转LED,TASK1的堆栈设置64,两个任务切换、运行正常。但是TASK1任务堆栈更改为128的话,就不执行任务切换,只有TASK1的任务在运行
代码如下
- #define START_TASK_PRIO 1
- #define START_STK_SIZE 128
- TaskHandle_t StartTask_Handle;
- #define TASK1_TASK_PRIO 2
- #define TASK1_STK_SIZE 64
- TaskHandle_t Task1Task_Handle;
- #define TASK2_TASK_PRIO 3
- #define TASK2_STK_SIZE 64
- TaskHandle_t Task2Task_Handle;
复制代码- void start_task(void *pvParameters)
- {
- taskENTER_CRITICAL();
-
- /*
- xTaskCreate( (TaskFunction_t) key_task,
- (const char * ) "key task",
- (const uint16_t) KEY_STK_SIZE,
- (void * ) NULL,
- (UBaseType_t ) KEY_TASK_PRIO,
- (TaskHandle_t *) &KEYTask_Handle );
- */
-
- xTaskCreate( (TaskFunction_t) task1_task,
- (const char * ) "task1 task",
- (const uint16_t) TASK1_STK_SIZE,
- (void * ) NULL,
- (UBaseType_t ) TASK1_TASK_PRIO,
- (TaskHandle_t *) &Task1Task_Handle );
-
- xTaskCreate( (TaskFunction_t) task2_task,
- (const char * ) "task2 task",
- (const uint16_t) TASK2_STK_SIZE,
- (void * ) NULL,
- (UBaseType_t ) TASK2_TASK_PRIO,
- (TaskHandle_t *) &Task2Task_Handle );
-
- vTaskDelete(StartTask_Handle);
-
- taskEXIT_CRITICAL();
- }
- void task1_task(void *pvParameters)
- {
- while(1)
- {
- HAL_GPIO_TogglePin(GPIOD,LED2_Pin);
- osDelay(200);
- }
- }
- void task2_task(void *pvParameters)
- {
- while(1)
- {
- HAL_GPIO_TogglePin(GPIOD,LED1_Pin);
- osDelay(200);
- }
- }
复制代码- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
- MX_GPIO_Init();
- MX_FREERTOS_Init();
- xTaskCreate( (TaskFunction_t) start_task,
- (const char * ) "start task",
- (const uint16_t) START_STK_SIZE,
- (void * ) NULL,
- (UBaseType_t ) START_TASK_PRIO,
- (TaskHandle_t *) &StartTask_Handle );
- /* Start scheduler */
- osKernelStart();
- while (1)
- {
- }
- }
复制代码
|
|