提问人:Miguel Rodmen 提问时间:7/5/2023 更新时间:10/4/2023 访问量:53
vTaskStartScheduler 在带有 FreeRTOS 的 Keil uVision 5 中不起作用
vTaskStartScheduler is not working in Keil uVision 5 with FreeRTOS
问:
我第一次使用 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();
}
答: 暂无答案
评论