SCB->VTOR = FLASH_BASE | 0x3000;
xTaskCreate((TaskFunction_t )start_task, //任务函数
(const char* )"start_task", //任务名称
(uint16_t )START_STK_SIZE, //任务堆栈大小
(void* )NULL, //传递给任务函数的参数
(UBaseType_t )START_TASK_PRIO, //任务优先级
(TaskHandle_t* )&StartTask_Handler); //任务句柄
vTaskStartScheduler();
stm32f103c8t6移植好freerots以后,用的标准库,在xTaskCreate之前不能有执行时间过长的函数,例如flash的读写,会导致单片机进入hardfault,原因是在进入main()之前滴答已经开启了,读写flash操作时间太长,导致freertos不能正常运作,所以进入了hardfault。以上是个人解决本次问题的猜想,解决方法有两个,一个是不用滴答的中断作为freertos xPortSysTickHandler的映射,可以换个定时器的中断用(定时器中断的触发周期要设好);方法二,将所有初始化放到freertos的任务内进行操作。