|
我创建了两个led的任务,Led2_Task比 Led1_Task 的优先级高,我在其中Led2_Task任务中第29行打断点,这时候再单步执行,但是这个时候vTaskDelay 不起作用。
然后我再连续运行3次,第四次的时候就会进入hardfault,这是为什么,难道不能用单步调试FreeRTOS吗?
- /*任务栈空间大小,不需要用户定义栈的空间(全局数组),系统内部会分配*/
- #define TASK_TEST_STACK_SIZE 128
- /*定义各任务优先级*/
- #define LED1_TASK_PRIORITY 3
- #define LED2_TASK_PRIORITY 4
- #define LED3_TASK_PRIORITY 8
- #define LED4_TASK_PRIORITY 9
- static void Led1_Task(void *par)
- {
- par = par;
- while(1)
- {
- BSP_LED_Toggle(LED1);
- BSP_LED_Toggle(LED4);
- //printf("Led1_Task is Running\n");
- vTaskDelay(100);
- }
- }
- static void Led2_Task(void *par)
- {
- par = par;
- while(1)
- {
- BSP_LED_Toggle(LED2);
- BSP_LED_Toggle(LED3);
- //printf("Led2_Task is Running\n");
- vTaskDelay(100);
- }
- }
- void Task_Test(void)
- {
- xTaskHandle xHandle;
- xTaskCreate(Led1_Task, "Led1_Task", TASK_TEST_STACK_SIZE, NULL, LED1_TASK_PRIORITY, &xHandle);
- xTaskCreate(Led2_Task, "Led2_Task", TASK_TEST_STACK_SIZE, NULL, LED2_TASK_PRIORITY, &xHandle);
- /*开始运行FreeRTOS内核*/
- vTaskStartScheduler();
- }
复制代码 |
|