所有的单片机都是顺序执行的,而对于多任务而言就显得力不从心了,虽然在一些小项目中可以通过定时器来实现,但这种实现方式没有实时性,一旦任务需要在规定时间内做出响应,那只能通过实时操作系统来完成了。在很多实时操作系统中,FreeRTOS有这良好的移植,而且体积小,其可剪裁性和优越的实时性能无不让其成为众多实时操作系统的首选,最大的好处当然就是他的免费开源。废话不多说,下面是FreeRTOS移植到STM32上的详细步骤。
首先,下载FreeRTOS源代码,网址:https://www.freertos.org/a00104.html
下载完后开始建立STM32工程,新建一个文件夹命名位FreeRTOS_TEST,然后建立CMSIS文件夹,USER文件夹,OS文件夹,将STM32所需要的内核文件复制到CMSIS中,然后将下载的FreeRTOS源码中的Source文件夹复制到OS文件夹下(注意:从官网上下载的源码Source文件夹下没有FreeRTOSConfig.h文件,这个文件需要在Demo文件夹下拷贝相应处理器型号的FreeRTOSConfig.h即可)。然后打开MDK5。打开startup_stm32f10x_hd.s文件,找到第50行的__heap_limit,修改下列部分:
然后添加必要的c文件:
还需要增加头文件的路径
新建一个C文件,用蜂鸣器和LED闪烁代表两个任务
两个任务代码如下
其中vTaskDelay(500);为进入阻塞状态,500ms后再次进入就绪状态。
编译一下没问题
下载到板子上两个任务同时执行,没有互相干扰,移植完成。
转自:https://www.cnblogs.com/listenscience/p/9377284.html