Microchip 今年master 上有Freertos的课程,例子是用PIC24FJ128做的,<br />前几天在Dspic33fj64gp206上面跑了一下freertos.分享一下经验,避免大家走同样的弯路<br /><br />1. Dspic33FJ64GP206+ Freertos V4.2.1 ,调试硬件是用microchip提供的<br /> 33FJ64GP206的demo board,应该不少工程师手头有这个小板子<br /> 几个简单的任务: <br /> 空任务:<br /> 2个LED闪烁任务: (其实是把同一个任务建立两次,通过任务参数传递闪<br /> 烁频率)<br /> 1个按键任务 : (由按键控制LED灯,并将按键状态送往串口显示)<br /> 1个温度显示 : (测出温度值后由串口送往PC显示)<br /> 1个显示任务 : (串口,9600波特率, 队列取显示数据)<br /><br />2. Freertos在做堆栈保存时,没有用到W14(堆栈帧指针),所有数据手动保存,<br /> 所以要在项目MPLAB C30 / Optimization 中选中 Omit frame pointer ,<br /> 否则的话,建立的任务堆栈是不正确的,程序也会跑飞<br /><br />3. freertosconfig.h中会对configMINIMAL_STACK_SIZE, <br /> configTOTAL_HEAP_SIZE 进行初始化,<br /> 开始调试时,一定要确保所有任务的堆栈有足够的空间分配,否则的话,尽管<br /> 编译不会出错,但程序<br /> 运行不正常,我在demo 程序中给每个任务分配了70byte字节, <br /> heap_size=1.2k<br /><br />4. www.freertos.org 有现成的PIC24/DSPIC30移植案例, 大家只需更换器件<br /> 的头文件,重新定义堆栈大小,在主文件里建一个空任务就可以跑起来了<br /><br /> |