整个STMF407系列的学习汇总链接如下:
我选择的IDE中有一个开箱即用的FreeRTOS,用起来还是很简单的。只要选择相应的功能即可,之前有一点老版本的FreeRTOS的经验,上手也比较容易。
集成的版本是10.X的版本了,没有查看是否是封装的问题,直接看到的接口与我之前接触到的不是很一样,更简单了。
配置完之后,创建了一个默认Task,看了下应该是一个1ms的的task。理论上讲,这个应该不是很精准。我自己创建了一个优先级更高的task,周期1s。代码:
const osThreadAttr_t os_1000ms_task_attributes = {
.name = "1000ms task",
.priority = (osPriority_t) 1,
.stack_size = 128
};
os_1000ms_task_handler = osThreadNew(os_task_1000ms, NULL, &os_1000ms_task_attributes);
task中只有一个打印字符串的功能,而原来的系统tick中断回调还保留着,用来做一个功能对比。Task代码:
void os_task_1000ms(void *argument)
{
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
{
printf("task 1000ms\n\r");
osDelay(1000);
}
/* USER CODE END 5 */
}
编译成功后,打印效果:

看的出来,调度还是很精准的。之前使用这个系统的时候,感觉开始的demo很简单,后期使用还是会遇到很多问题。这个后续继续探究了。
















