Bootstrap

STM32Cubemx配置生成 Keil AC6支持代码

一、前言

使用keil ARM compiler V5的时候,编译一个大项目,所花的时间太长了,如果是小项目那就没有什么差别。 ARM compiler V6的编译速度会比AC5快5倍以上。现在记录一下所配置的过程

二、AC 6配置

2.1 ARM ComPiler 选择AC6

在这里插入图片描述

2.2 AC6 UTF-8的编译命令会报错

如果使用的是UTF-8 我们通常会在 Options For TarGetC/C++Misc Controls 里面会填入

--no-multibyte-chars

需要改成

-finput-charset=UTF-8

三、STM32Cubemx 配置

STM32Cubemx 生成FreeRTos 的代码时会报错,需要修改一下,让STM32Cubemx生成支持AC6版本的代码

3.1 找到stm32cubemx的模板位置

打开 stm32cubemxProject ManagerFirmware Relative Path

在这里插入图片描述

3.2 替换文件内核文件

\STM32Cube_FW_F4_V1.27.1\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F里面的文件内容 全部替换

STM32Cube_FW_F4_V1.27.1\Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F

里面的内容

3.3 修改 cmsis_os.c文件

如果你是 F4 的芯片还需要做一步,F1的板子就不需要这一步,直接重新生成就可以了

文件目录 STM32Cube_FW_F4_V1.27.1\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS

#elif defined ( __GNUC__ )

  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */
  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */
  #define __STATIC_INLINE  static inline

  #include "cmsis_gcc.h"

修改成

#elif defined ( __GNUC__ )

  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */
//  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */
//  #define __STATIC_INLINE  static inline

  #include "cmsis_armclang.h"

已经修改完成直接重新生成就行了。

3.4 修改本地

如果不想动STM32cubemx的文件代码,那么可以修改工程的代码

工程文件夹\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS替换为

STM32Cube_FW_F4_V1.27.1\Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F

修改 工程文件夹\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS的文件

四、编译对比

在这里插入图片描述

;