STM32Cubemx配置生成 Keil AC6支持代码

文章目录

  • 一、前言
  • 二、AC 6配置
    • 2.1 ARM ComPiler 选择AC6
    • 2.2 AC6 UTF-8的编译命令会报错
  • 三、STM32Cubemx 配置
    • 3.1 找到stm32cubemx的模板位置
    • 3.2 替换文件内核文件
    • 3.3 修改 cmsis_os.c文件
    • 3.4 修改本地
  • 四、编译对比

一、前言

使用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的文件

四、编译对比

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568 buildroot 使用dropbear实现ssh远程的方法

RK3568 buildroot 使用dropbear实现ssh远程的方法 文章目录 RK3568 buildroot 使用dropbear实现ssh远程的方法前言一、创建S99dropbear.sh脚本二、创建sshd_config三、添加root账户密码到系统验证登录前言 rk3568 linux 的sdk中,buildroot已经集成了dropbear的所需的lib库环境…

交替打印-GO

1 两个channel 版本 package mainimport ("fmt""sync")var wg sync.WaitGroup var c1 chan int var c2 chan intfunc A(){defer wg.Done()for i:0;i<10;i {<-c1fmt.Println(2*i)c2<-1 //牵引协程} } func B(){defer wg.Done()for i:0…

Java内存区域与内存溢出异常(自动内存管理)

序言&#xff1a;Java与C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙&#xff0c;墙外面的人想进去&#xff0c;墙里面的人却想出来。 1.1概述 对于从事C、C程序开发的开发人员来说&#xff0c;在内存管理领域&#xff0c;他们既是拥有最高权力的“皇帝”&#xff0c…

使用OpenCV在按下Enter键时截图并保存到指定文件夹

使用OpenCV在按下Enter键时截图并保存到指定文件夹 在这篇博客中&#xff0c;我们将介绍如何使用OpenCV库来实现一个简单的功能&#xff1a;在按下Enter键时从摄像头截图并保存到指定的文件夹中。这个功能可以用于各种应用&#xff0c;例如监控系统、视频捕捉等。 前置条件 …

在FPGA程序中Handshake(握手)和Register(寄存器)区别

在FPGA程序中&#xff0c;Handshake&#xff08;握手&#xff09;和Register&#xff08;寄存器&#xff09;是两种不同的通信和数据传输机制。它们各有特点和适用场景。以下是它们的区别和应用场景的详细解释&#xff1a; Register&#xff08;寄存器&#xff09; 特点&#…

SQLServer用户们,你们摊上大事了!

最近一段时间&#xff0c;我们经常会收到了许多用户的咨询&#xff0c;问我们何时能纳管SQLServer&#xff1f;耐不住小伙伴们的猛烈催促及热切期待&#xff0c;本不想纳管SQLServer的研发团队也抓紧将这项需求提上日程。并在DBdoctor v3.2.2版本中成功实现了对SQLServer的纳管…

班级录取查询系统如何制作

在教育的长河中&#xff0c;我们每位老师都曾面临过这样一个问题&#xff1a;如何高效、准确地完成班级录取查询的任务&#xff1f;记得在以往&#xff0c;每当新学期伊始&#xff0c;我们不得不手忙脚乱地整理学生名单&#xff0c;然后逐一通知他们所在的班级。这个过程不仅耗…

谷歌Google Ads新账号推广方案

第一阶段重点 推广地区优化&#xff1a;分析投放国家的数据&#xff0c;剔除高花费低转化的国家&#xff0c;将预算重新分配给高性价比的国家&#xff0c;从而降低询盘成本并增加询盘数量。关键词优化&#xff1a;识别并暂停或降价高成本低回报的关键词&#xff0c;减少询盘成本…

《mysql篇》--索引事务

索引 索引的介绍 索引是帮助MySQL高效获取数据的数据结构&#xff0c;是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针&#xff0c;因为索引本身也比较大&#xff0c;所以索引一般是存储在磁盘上的&#xff0c;索引的种类有很多&#xff0c;不过如果没有特殊…

[ios-h5]在ios系统浏览器中输入框得到焦点时页面自动放大

问题&#xff1a; 在ios系统浏览器中输入框得到焦点时页面自动放大。 解决&#xff1a; 添加meta标签。 <meta name"apple-mobile-web-app-capable" content"yes" /> <meta name"viewport" content"widthdevice-width, initial-…

隐式类型转换 算术转换

目录 整型提升 间接证明整型提升的代码案例 算术转换 整型提升 何为整型提升&#xff1a; C语言的整型算术运算总是至少以缺省&#xff08;默认&#xff09;整型类型的精度来进行的 为了获得这个精度&#xff0c;表达式中的字符类型和短整型操作数在使用之前被转换为普通整…

基于SpringBoot实现轻量级的动态定时任务调度

在使用SpringBoot框架进行开发时&#xff0c;一般都是通过Scheduled注解进行定时任务的开发&#xff1a; Component public class TestTask {Scheduled(cron"0/5 * * * * ? ") //每5秒执行一次public void execute(){SimpleDateFormat df new SimpleDateFormat(…

解决 NullReferenceException: Object reference not set to an instance of an object

在 Unity 中 利用 URDF Importer import UR5e_gripper 的 URDF file 时出现错误&#xff1a; NullReferenceException: Object reference not set to an instance of an object。 理论上是有个Object 是 Null&#xff0c;当我再次检查URDF后仍觉得路径没有写错。 于是我 把Mesh…

软件测试面试200问(含答案+文档)

Part1 1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做好测试工程师的要点去要求自…

spring的bean注册

bean注册 第三方jar包的类想添加到ioc中&#xff0c;加不了Component该怎么办呢。 可以使用Bean和Import引入jar包&#xff0c;可以使用maven安装到本地仓库。 修改bean的名字&#xff1a;Bean("aaa")使用ioc的已经存在的bean对象&#xff0c;如Country&#xff1a;p…

in-flight 要维持在 bdp 附近吗

试图在 bbr 和 aimd 之间保持公平是徒劳的&#xff0c;因为它们没有共识。bbr 认为 in-flight 超过 bdp 是拥塞&#xff0c;而 aimd 认为 buffer 溢出才拥塞&#xff0c;兼顾彼此&#xff0c;就是 bbr3&#xff0c;aimd 不会往左&#xff0c;bbr 就往右。 vegas 同理&#xff…

自定义@AnonymousAccess注解

一.目的&#xff1a; 自定义AnonymousAccess注解&#xff0c;可以直接在controller上添加该注解使请求绕过权限验证进行匿名访问&#xff0c;便于快速调用调试以及部分不需要进行安全验证的接口。而不是每次都需要去SecurityConfig文件中进行修改。 二.流程&#xff1a; 三.实…

通用后台管理(二)——项目搭建

目录 前言 一、安装vue-cli依赖 1、使用yarn下载vue-cli 2、使用npm下载 3、检查一下是否下载成功 二、创建项目 1、创建项目&#xff0c;my-app是项目名称 2、 这里选择vue 2&#xff0c;蓝色表示选中的。 3、启动项目 三、下载项目依赖 四、配置项目 1、修改esli…

VS2019_新建窗体应用文件SOP

文章目录 1. 打开VS2. 创建新项目3. 选择Windows窗体应用4. 起名&#xff0c;选位置&#xff0c;框架版本选择4.5及之后&#xff0c;这里选的4.85. 新建完成 1. 打开VS 2. 创建新项目 3. 选择Windows窗体应用 注意要选.NET的 4. 起名&#xff0c;选位置&#xff0c;框架版本…

ps aux命令详解

ps aux 是在 Unix 和 Linux 系统中常用的命令&#xff0c;用于显示当前系统上运行的所有进程的信息。它结合了多个选项来提供详细的进程列表。以下是这个命令的详细解释&#xff1a; 解释 ps aux 命令 ps&#xff1a;这是显示当前系统进程的基本命令。a&#xff1a;显示与终端…