一、流程
-
拿到官方给出的freertos例子
-
改成AC5编译
-
加入这几个文件
-
移配置文件
-
因为使用了systick,所以
ddl.c
中,替换用到systick的delayvoid delay100us(uint32_t u32Cnt) { uint32_t ticks; uint32_t told,tnow,tcnt=0; uint32_t reload=SysTick->LOAD; //sysTick load ticks=u32Cnt*(SystemCoreClock/10000); told=SysTick->VAL; while(1) { tnow=SysTick->VAL; if(tnow!=told) { if(tnow<told)tcnt+=told-tnow; else tcnt+=reload-tnow+told; told=tnow; if(tcnt>=ticks)break; } } }
-
屏蔽systick中断
二、注意点
vTaskStartScheduler
任务调度后,才会使能systick,所以上面用到的delay,全部都要在调度后才可使用- 任务设置建议256,任务栈太小会导致进入硬件错误
configTOTAL_HEAP_SIZE
建议加大到5K(参考例子2K),酌情处理