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