vTaskStartScheduler 在带有 FreeRTOS 的 Keil uVision 5 中不起作用

vTaskStartScheduler is not working in Keil uVision 5 with FreeRTOS

提问人:Miguel Rodmen 提问时间:7/5/2023 更新时间:10/4/2023 访问量:53

问:

我第一次使用 Keil uVision 和 freeRTOS,但我不知道为什么一旦将代码加载到我的主板 (Nucleo-F302R8) 它就无法正常工作。

我正在使用以下内容,为了进行测试,我只是想闪烁两个 LED,并且我试图保持它独立(不使用 Cube)。在寻找解决方案时,我发现有些人失踪了

/* Map the FreeRTOS port interrupt handlers to their CMSIS standard names. */ #define xPortPendSVHandler PendSV_Handler #define vPortSVCHandler SVC_Handler #define xPortSysTickHandler SysTick_Handler

但就我而言,这已经包括在内,我也看到我需要将 #define configUSE_TIMERS 从 0 更改为 1。


#include "stm32f3xx.h"
#include "FreeRTOS.h"
#include "task.h"

const TickType_t xDelay = 500 / portTICK_PERIOD_MS;

void vLED1Task(void *pvParameters);
void vLED2Task(void *pvParameters);



void vLED1Task(void *pvParameters)
{
   

     while(1)
     {
        GPIOB->BSRR = GPIO_BSRR_BS_13;

        vTaskDelay(pdMS_TO_TICKS(500));

        GPIOB->BSRR = GPIO_BSRR_BR_13;

        vTaskDelay(xDelay);

    }
}

void vLED2Task(void *pvParameters)
{
    

     while(1)
     {
        GPIOB->BSRR = GPIO_BSRR_BS_14;

        vTaskDelay(xDelay);

        GPIOB->BSRR = GPIO_BSRR_BR_14;

        vTaskDelay(xDelay);


            
    }
}

int main(void)
{
 RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
 GPIOB->MODER |= GPIO_MODER_MODER13_0;
 GPIOB->MODER |= GPIO_MODER_MODER14_0;

 xTaskCreate(vLED1Task, "LED1Task", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL);
 xTaskCreate(vLED2Task, (const portCHAR *)"LED2_Task", configMINIMAL_STACK_SIZE, NULL, 1, NULL);

 vTaskStartScheduler();  
    
  
}
C STM32 FreeRTOS 凯尔

评论


答: 暂无答案