- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
工具链是 SW4STM32,gcc,处理器是 STM32F303K8 (Nucleo 303K8),最小的测试项目,根本没有实际的用户代码。如何转换由 ST CubeMX 生成的项目的过程有详细记录并且显然有效。但是,当我在 Cube 中指定 FreeRTOS 时,链接器无法找到初始化函数 MX_FREERTOS_Init()。函数原型(prototype)包含在 main.cpp 中,定义存在于另一个源文件 (freertos.c) 中。这在 C 中有效,但在将项目转换为 C++ 时,链接器无法链接该函数。
我做的C2C++转换如下:
以上内容使 Eclipse 能够使用 g++ 编译 main 并使用 G++ 链接器进行链接。然而,在 ...\Debug/../Src/main.cpp:97 中链接始终失败:对 `MX_FREERTOS_Init()' 的 undefined reference
值得注意的是,即使我从 main.cpp 中删除了所有对 MX_FREERTOS_Init() 的引用,以至于文本根本不存在于任何地方,链接器仍然会完全失败。即使文本完全不同,它甚至会报告相同的行号。如果我清理项目、重建和刷新所有索引等等,这种行为不会改变也没关系。
任何人有什么建议吗?还是我必须跳过在 Cube 中指定 FreeRTOS 而全部手动完成?
最佳答案
我对stm32使用atollic有同样的疑问,通过在 main.cpp 中添加 extern "C"解决
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config();
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/
#ifdef __GNUC__
/* With GCC, small printf (option LD Linker->Libraries->Small printf
set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
#ifdef __cplusplus
}
#endif
/* USER CODE END PFP */
关于c++ - 包含 FreeRTOS 时,手动 CubeMX C 到 C++ 项目的转换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42665322/
在 CubeMX 中,我的项目有选项“双核启动模式”=“两个 CPU 立即启动”。生成代码后,我在 Keil 中对其进行编译。链接器提示: " 构建目标“从头开始新建 Eval_CM7” 正在链接..
我正在使用STM32CubeMX并试图 generate my custom code (UM1718 第 141 页) 包含使用过的外围设备表。在闪存中很容易拥有常量表,其中包含按预期用途分组的外围
我从 C 和 STM 开始,但是..我正在使用 STM32L4476RG 和 CubeMx 并尝试通过 RTC 时钟进行中断,例如每天上午 10 点(以闪烁 LED 或在开始时更改某些参数的值)。 我
我正在尝试使用 FreeRTOS 启动 STM32L576VGT。 我有一个 LED 从任务中闪烁,现在我正在尝试设置一个 PWM,频率和占空比现在并不重要,是一个“hello world pwm”。
我正在使用此代码通过 USB 捕获数据。一旦接收到字符,顶部代码就会使程序崩溃。尽管我无法按照我想要的方式保存数据,但底部工作得很好。即使在调用 CDC_Receive_FS() 之前,顶部也会崩溃(
我使用 Eclipse CDT 4.5.1 (Mars)、ARM GCC 4.9 2015q3、Liviu Ionescu 的 GnuArmEclipse-Plugin、OpenOCD 0.9.0 和
工具链是 SW4STM32,gcc,处理器是 STM32F303K8 (Nucleo 303K8),最小的测试项目,根本没有实际的用户代码。如何转换由 ST CubeMX 生成的项目的过程有详细记录并
我正在学习在 STM32F429ZI Nucleo 板上编码,我一直在尝试使用 STMStudio 从 ADC1 温度传感器读取温度。 我在其中一个教程中找到的代码不起作用,所以我尝试在代码的各个部分
我是 STM32 编程领域的新手,很长一段时间以来一直在努力寻找合适的 IDE。我知道所有其他的 IDE,比如 Keil 和 IAR,但是购买它们只是为了学习的成本对我来说是非常高的。 我已经开始使用
我是一名优秀的程序员,十分优秀!