stm32cubemx或者对应的软件包再分发时一般带有一个FreeRTOS而且这个FreeRTOS经过CMSIS-OS封装之后,可以用统一接口访问。CMSIS-OS V1的osMemoryPool我记得时可以用的。最近切换到了CMSIS-OS V2之后发现memorypool不可用。 经过一番折腾之后,找到的解决方法是替换CMSIS接口文件。可以从http://github.com/ARM-software/CMSIS-FreeRTOS网站下载对用的FreeRTOS\Source\CMSIS_RTOS_V2下的文件cmsis_os2.c和cmsis_os2.h到和FreeRTOS对应的适配版本。并添加freertos_mpool.h文件。当然如果不放心,甚至可以将整个文件夹的文件都替换了。测试是可以使用的。: u& j( q! U. Y 顺便提一句,osMemoryPool很适合再ISR中使用。再ISR中尽量不要使用malloc/free,尽管有时测试可用。更不要使用pvPortMAlloc和vPortFree。 如果一定要使用,可考虑创建一个高优先级的线程去接收ISR中的内存分配任务。1 B! o; Y+ ^9 y! I8 F7 J# C$ X 7 n6 x8 ~- m, I( W+ k7 T# \7 v 如果要支持os_tick相关函数,还需要再cmsis下找到此文件。如果不想支持这项功能还需要对文件做一些修改。现在提供一个可以直接再10.2.1上使用的: |
NewPack.zip
下载41.83 KB, 下载次数: 0