- 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/
我正在使用 http://www.freertos.org/对于应用程序,但我找不到自启动以来如何获取系统时间。我可以创建一个任务并不断更新计数器,但我认为这不是一件好事,因为调度程序可能会安排我的任
我正在开始使用 freeRTOS。我浏览了 freeRTOS.org 中提供的文档,并对一些演示项目进行了一些练习。我的问题是如何在不使用 win32 端口的情况下安装 freeRTOS(因为它只是一
我正在开始使用 freeRTOS。我浏览了 freeRTOS.org 中提供的文档,并对一些演示项目进行了一些练习。我的问题是如何在不使用 win32 端口的情况下安装 freeRTOS(因为它只是一
当使用依赖于 WFI 指令的无滴答空闲功能时,我在 FreeRTOS 的 Cortex-M 端口中看到以下几行 __asm volatile( "dsb" ); __asm volatile( "wf
我在 Linux 下使用 C 编写了一个应用程序,其中使用自定义结构创建队列。代码运行得很好。现在我想修改该代码以使用 freeRTOS 运行它。这是我第一次接触 RTO。在浏览文档时,我发现 fre
哪些参数定义了 FreeRTOS 中的时间片持续时间,以及如何计算在切换一个任务并切换到另一个任务之前它将运行多长时间。 我找到了 configTICK_RATE_HZ,它设置了每秒的滴答数,但它与任
我开始使用 FreeRTOS,我想要一个中断来抢占任何即将运行的任务并运行我需要关键运行的任务。 有没有办法在 FreeRTOS 中执行此操作? (这是通过任务优先级实现的吗?) 最佳答案 不!以上两
我有 STM32F746ZG Nucleo-144pin 板并使用 STMCubeMx 生成代码。我选择了CubeMx提供的10.0.0版本的FreeRTOS,工具链是SW4STM32。 我做了两个任
我正在学习 freeRTOS。我需要在 PIC32 平台(cerebot Mx7ck)的 freeRTOS 中编写软件中断 ISR 处理程序。我浏览了文档,但没有帮助。请有人帮忙。 最佳答案 您是在寻
FreeRTOS 使用什么样的调度程序? 我在某处读到它是一个运行完成调度程序,但另一方面,我也看到它与并行任务一起使用,所以它不会是一个循环调度程序? 最佳答案 最高优先级的任务被授予CPU时间。如
FreeRTOS 使用什么样的调度程序? 我在某处读到它是一个运行完成调度程序,但另一方面,我也看到它与并行任务一起使用,所以它不会是一个循环调度程序? 最佳答案 最高优先级的任务被授予CPU时间。如
我正在构建一个 FreeRTOS 应用程序。我创建了一个模块,它从另一个模块注册 freeRTOS 队列句柄,当该模块中发生中断时,它会向所有注册的队列发送一条消息。但似乎我能够从队列发送消息,但无法
在 cortex M0 MCU 上的一些 FreeRTOS 演示中 configMINIMAL_STACK_SIZE设置为 60,而其他一些设置为 70。使用 STM32Cube 软件将其设置为 12
我想创建两个在 FreeRTOS 中同时运行的任务。第一个任务将处理 LED,第二个任务将监视温度。我有两个问题: 这段代码会创建两个同时运行的任务吗? 如何在任务之间发送数据,例如:如果温度超过 x
我正在读取 dsPIC30F6014A 上 ADC channel 上的一些数据。为此,我为每个 ADC 实现了一个单独的任务(例如 7 个 channel -7 个任务)。 我只在开始时创建了所有任
我写了一个简单的例子,包括 2 个任务:任务 1 和任务 2。任务 1 的优先级高于任务 2。在任务 1 函数中,我增加了任务 2 的优先级,使其优先级等于 (任务 1 的优先级 + 1)。此外,在任
我有一个任务在 freeRTOS 上运行,我正在检查该应用程序中有多少应用程序堆栈未使用。我看到的是,可用堆栈内存在一段时间后会减少,并在很长一段时间内保持在该值。该任务有一个 while(1) 循环
让一个线程修改原子单元(例如字符)而另一个线程仅读取它是否安全?当然,在允许这样做的环境中,例如 freertos。 我得到了一些执行此操作的代码,它使用 bool (定义为 char)作为信号量,我
我正在使用 ARM Cortex-M4 微 Controller 来开发带有 FreeRTOS 的应用程序。 为了精确计时,我想使用基于中断的计时器。中断具有适当的优先级,因此它应该能够调用 Free
我是 FreeRTOS (ARM CM3) 的初学者,我的问题是: 当你创建一个内部有一些局部变量的任务时,将这些变量存储在 RAM 中,堆栈中(由 main() 使用)就像局部变量的一般情况一样,或
我是一名优秀的程序员,十分优秀!