【STM32G474】利用Cpp编写STM32代码后,Cubemx修改配置后代码报错147个error,如何处理?

问题描述

打开Cubemx,添加TIM7用于定时器精准延时,生成代码后,Keil提示有147个error。
之前是Cubemx是没有问题的,是利用Cpp编写stm32(将Keil改为Version6)后才导致Cubemx配置失败:
在这里插入图片描述
debug成功图片:
在这里插入图片描述

解决办法

打开GitTortoise,打开日志
在这里插入图片描述

对比两个版本,版本1是正确的,版本2是Cubemx刷新后的错误的,将版本1的port.c和portmacro.h文件另存为当前代码存放的文件夹即可:
在这里插入图片描述
不要把文件搞错了:
在这里插入图片描述
然后编译运行即可!

port.c和portmacro.h是什么文件?

在STM32微控制器的开发中,port.cportmacro.h 是与FreeRTOS实时操作系统(RTOS)相关的两个文件。FreeRTOS是一个开源的、可裁剪的、抢占式的实时操作系统,广泛用于嵌入式系统开发。

portmacro.h

portmacro.h 是一个宏定义文件,它包含了FreeRTOS在与硬件相关的操作中使用的宏。这些宏提供了一种抽象层,使得FreeRTOS的移植工作变得更加容易。通过定义这些宏,可以针对不同的硬件平台调整FreeRTOS的行为,而无需修改FreeRTOS的核心代码。

portmacro.h中,你可能会找到如下几种类型的宏:

  • 任务创建和删除:用于创建和删除任务的宏。
  • 互斥量操作:用于获取和释放互斥量的宏。
  • 信号量操作:用于等待和发送信号量的宏。
  • 中断管理:用于使能和禁用中断的宏。
  • 临界区管理:用于进入和退出临界区的宏,以保护共享资源。
  • 时钟管理:用于获取当前系统时间的宏。

port.c

port.c 是FreeRTOS的另一个源文件,它包含了与硬件紧密相关的代码,通常包括中断处理、上下文切换、tick计数等核心功能。

port.c中,你可能会遇到以下功能:

  • 上下文切换:实现任务切换时保存和恢复寄存器状态的代码。
  • tick处理:处理系统tick中断,通常用于更新系统时间以及检查超时的任务。
  • 中断使能/禁用:控制中断使能和禁用的代码。
  • 内存管理:管理FreeRTOS使用的内存,包括任务控制块(TCB)和堆内存。

STM32和FreeRTOS的移植

在STM32微控制器上移植FreeRTOS时,需要根据STM32的具体硬件特性来实现port.cportmacro.h中的函数和宏。例如,你可能需要实现特定的中断处理逻辑,或者为STM32的内存管理单元(MPU)配置内存保护。

通常,STM32的标准外设库或HAL库已经提供了一些与硬件操作相关的函数,这些函数可以在port.cportmacro.h中被利用,以简化移植工作。

注意事项

  • 确保在使用FreeRTOS之前,你已经阅读了FreeRTOS的官方文档,了解其工作原理和API的使用。
  • 在移植过程中,始终注意FreeRTOS对中断处理和上下文切换的要求,以避免造成系统不稳定。
  • 根据你的应用需求,可能需要对port.cportmacro.h进行适当的修改和优化。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[学习笔记]CyberDog小米机器狗 开发学习

1、机器狗本身是UbuntuROS2系统 2、控制机器人只需要了解lcm和Ros topic通讯 3、传感器数据(包括一些imu(/imu)、激光雷达(/scan))会进行topic的一个广播。 仿真环境通信接口: -命令输入(见后续运控说明) 运控lcm数据接口 Motion man…

Gmail邮箱怎么注册?2024年完整指南(包含跳过手机号验证)

一、为什么要注册Gmail邮箱? 全球通用性:Gmail是一个全球性的邮件服务平台,被广泛认可和信赖。因为客户对于Gmail的接受度高,无需担心邮件被自动标记为垃圾邮件。 整合营销工具:通过Gmail账号,你可以轻松…

CleanMyMac X 4.15.3 版本发布

CleanMyMac X 4.15.3 版本发布,一款苹果 macOS 系统好用的伴侣软件,其包含 1.一键深度清理。2.系统垃圾专清。3.大/旧文件专清。4.系统提速。5.性能悬浮窗。6.恶意软件防护。7.隐私保护。8.软件卸载器。9.软件更新器等 9 大功能,为您的苹果电…

Flask-HTTP请求、响应、上下文、进阶实验

本节主要目录如下: 一、请求响应循环 二、HTTP请求 2.1、请求报文 2.2、Request对象 2.3、在Flask中处理请求 2.4、请求钩子 三、HTTP响应 3.1、响应报文 3.2、在Flask中生成响应 3.3、响应格式 3.4、Cookie 3.5、session:安全的Cookie 四、…

[公开课学习]台大李宏毅-自注意力机制 Transformer

自注意力机制 存在一些问题,将vector set/sequence作为input,例如: 文字处理:将文字用one-hot表示,或者向量空间的向量表示,然后进行翻译任务等语音处理:25ms音频作为一个向量,10m…

初识C++ · 模板初阶

目录 1 泛型编程 2 函数模板 3 类模板 1 泛型编程 模板是泛型编程的基础,泛型我们碰到过多次了,比如malloc函数返回的就是泛型指针,需要我们强转。 既然是泛型编程,也就是说我们可以通过一个样例来解决类似的问题&#xff0c…

pytorch基础: torch.unbind()

1. torch.unbind 作用 说明:移除指定维后,返回一个元组,包含了沿着指定维切片后的各个切片。 参数: tensor(Tensor) – 输入张量dim(int) – 删除的维度 2. 案例 案例1 x torch.rand(1,80,3,360,360)y x.unbind(dim2)print(&…

gitlab集群高可用架构拆分部署

目录 前言 负载均衡器准备 外部负载均衡器 内部负载均衡器 (可选)Consul服务 Postgresql拆分 1.准备postgresql集群 手动安装postgresql插件 2./etc/gitlab/gitlab.rb配置 3.生效配置文件 Redis拆分 1./etc/gitlab/gitlab.rb配置 2.生效配置文件 Gitaly拆分 1.…

BACnet转MQTT网关智联楼宇json格式自定义

智能建筑的BACnet协议作为楼宇自动化领域的通用语言,正逐步迈向更广阔的物联网世界。随着云计算和大数据技术的飞速发展,如何将BACnet设备无缝融入云端生态系统,成为众多楼宇管理者关注的焦点。本文将以一个实际案例,揭示BACnet网…

60、郑州大学附属肿瘤医院 :用于预测胃癌患者术后生存的深度学习模型的开发和验证[同学,我们的人生应当是旷野]

馒头老师要说的话: 我近期看了一下北京的脑机公司,大概是我之前对这一行业太过于乐观,北京的BCI公司和研究所,比上海、深圳、杭州甚至是重庆都要少,门槛也要高很多。也有我自己的原因,有时站的太高&#x…

92、动态规划-最小路径和

思路: 还是一样,先使用递归来接,无非是向右和向下,然后得到两种方式进行比较,代码如下: public int minPathSum(int[][] grid) {return calculate(grid, 0, 0);}private int calculate(int[][] grid, int …

ubuntu_Docker安装配置

什么是docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有…

为什么要梯度累积

文章目录 梯度累积什么是梯度累积如何理解理解梯度累积梯度累积的工作原理 梯度累积的数学原理梯度累积过程如何实现梯度累积 梯度累积的可视化 梯度累积 什么是梯度累积 随着深度学习模型变得越来越复杂,模型的训练通常需要更多的计算资源,特别是在训…

深度学习笔记_10YOLOv8系列自定义数据集实验

1、mydaya.yaml 配置方法 # 这里分别指向你训练、验证、测试的文件地址,只需要指向图片的文件夹即可。但是要注意图片和labels名称要对应 # 训练集、测试集、验证机文件路径,可以是分类好的TXT文件,也可以直接是图片文件夹路径 train: # t…

Litedram仿真验证(四):AXI接口完成板级DDR3读写测试(FPGA-Artix7)

目录 日常唠嗑一、仿真中遗留的问题二、板级测试三、工程获取及交流 日常唠嗑 接上一篇Litedram仿真验证(三):AXI接口完成仿真(FPGA/Modelsim)之后,本篇对仿真后的工程进行板级验证。 本次板级验证用到的开…

学成在线 - 第3章任务补偿机制实现 + 分块文件清理

7.9 额外实现 7.9.1 任务补偿机制 问题:如果有线程抢占了某个视频的处理任务,如果线程处理过程中挂掉了,该视频的状态将会一直是处理中,其它线程将无法处理,这个问题需要用补偿机制。 单独启动一个任务找到待处理任…

Layer1 公链竞争破局者:Sui 生态的全面创新之路

随着 Sui 生态逐渐在全球范围内树立起声望,并通过与 Revolut 等前沿金融科技平台合作,推广区块链教育与应用,Sui 生态的未来发展方向已成为业界瞩目的焦点。如今,Sui 的总锁定价值已攀升至 5.93 亿美元,充分展示了其在…

分布式架构的演技进过程

最近看了一篇文章,觉得讲的挺不错,就借机给大家分享一下。 早期应用:早期的应用比较简单,访问人数有限,大部分的开发单机就能完成。 分离模型:在业务发展后,用户数量逐步上升,服务器的性能出现瓶颈;就需要将应用和数据分开存储,避免相互抢占资源。 缓存模式:随着系…

历代著名画家作品赏析-东晋顾恺之

中国历史朝代顺序为:夏朝、商朝、西周、东周、秦朝、西楚、西汉、新朝、玄汉、东汉、三国、曹魏、蜀汉、孙吴、西晋、东晋、十六国、南朝、刘宋、南齐、南梁、南陈、北朝、北魏、东魏、北齐、西魏、北周、隋,唐宋元明清,近代。 一、东晋著名…

现身说法暑期三下乡社会实践团一个好的投稿方法胜似千军万马

作为一名在校大学生,去年夏天我有幸参与了学院组织的暑期大学生三下乡社会实践活动,这段经历不仅让我深入基层,体验了不一样的生活,更是在新闻投稿的实践中,经历了一次从传统到智能的跨越。回忆起那段时光,从最初的邮箱投稿困境,到后来智慧软文发布系统的高效运用,每一步都刻印…
最新文章