加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【FreeRTOS教程】第34章 使用FreeRTOS时注意事项总结

(2016-09-18 16:53:12)
标签:

fatfs

freertos

stemwin

stm32

usb

分类: FreeRTOS

第34章      使用FreeRTOS时注意事项总结

本章节主要是总结了FreeRTOS使用中几个常见问题的解决办法。

34.1 使用FreeRTOS注意事项

34.2 FreeRTOS官方整理的FAQ

34.3       总结

 

 

34.1  使用FreeRTOS注意事项

下面都是初学者容易犯错误的地方,特此总结一下,望初学者在使用时注意这些问题。

34.1.1 MDKIAR版本问题

IDE:支持两种IDE开发环境,MDKIAR 

    (1)MDK4.7X或者MDK5.XX均可,保证支持STM32F103F407F429即可(不可以使用MDK4.7X以下版本,一方面是不支持F429,另外就是FreeRTOS V8.2.3要用到C代码中嵌套汇编代码,MDK4.7X以下版本是不支持的)。

    (2)IAR固定使用IAR7.5版本,由于IAR向下兼容性稍差,别的版本未做支持。

34.1.2 FreeRTOS的初始化流程

推荐的初始化流程如下,本教程配套的所有例子都是采用的这种形式,当然,不限制必须采用这种初始化方式,适合自己项目的才是最好的:

int main(void)

{

    

     __set_PRIMASK(1); 

    

    

     bsp_Init();

        

    

     AppTaskCreate();

 

    

     AppObjCreate();

    

   

    vTaskStartScheduler();

 

    

     while(1);

}

 

34.1.3中断优先级分组设置

强烈推荐用户将Cortex-M3内核的STM32F103Cortex-M4内核的STM32F407以及F429NVIC优先级分组设置为4,即:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);这样中断优先级的管理将非常方便。此函数在bsp_Init中第一个被调用:

 

void bsp_Init(void)

{

    

          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

 

     bsp_InitUart();   

     bsp_InitLed();    

     bsp_InitKey();    

}

 

34.1.4任务优先级分配方案

这个问题在第13章,13.2小节中有详细讲解。

34.1.5任务栈和系统栈大小的分配

任务栈的大小及其溢出检测,我们在第11章进行了详细讲解,而系统栈不容易测试,用户可以简单的计算最大的中断嵌套层数,并在此基础上再增加些空间。

一般情况下,用户分配1-2KB的系统栈大小即可。

34.1.6FreeRTOS中使用中断注意事项

对于初学者来说,首先,务必要把第12章:FreeRTOS中断优先级配置弄明白,非常重要。其次,FreeRTOS中断方式的同步或者通信机制,在教程中都有配套的例子及其使用注意事项,使用时务必要注意。另外,用户要注意以下两个问题,在前面的章节中也有啰嗦过:

    (1)PendSV中断,SysTick中断和SVC 0中断用户不可调用,这三个被FreeRTOS占用。

    (2)对于STM32F103STM32F407STM32F429来说,当用户将优先级分组设置为4的时候,PendSV的中断优先级是15SysTick的中断优先级也是15,而SVC的中断优先级是0。其中SVC中断,仅在系统启动的时候调用了一次。

34.2FreeRTOS官方整理的FAQ

官方总结的问题汇总地址:http://www.freertos.org/FAQ.html

34.3总结

这里仅为大家总结了七条常见问题,使用中还会遇到其它的问题,望初学者不断积累这方面的经验,让自己的工程代码更加健壮。

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有