freertos STM32F4 CPP卡在呼叫VtaskDelay时卡住
FreeRTOS+STM32F4+CPP stuck when call the vTaskDelay
我正在使用stm32f405rgt hal驱动程序 freertosv9。代码为C 。首先,当我编写C码时,没有问题。但是C ,有问题。
Main.cc
中的入口点extern "C" int main(void) {
HAL_Init();
SystemClock_Config();
xTaskCreate(startup, "startup", STARTUP_TASK_STACK, NULL, STARTUP_TASK_PRIO, NULL);
vTaskStartScheduler();
return 0;
}
和"启动"任务是
static void startup(void *param) {
Config::GetInstance().Init();
Command::GetInstance().Init();
while (1) {
trace("startuprn");
vTaskDelay(M2T(1000));
}
vTaskDelete(nullptr);
}
在" command :: getInstance()。init()"中,创建另一个任务,在该任务中,只有vtaskdelay(_500ms)和printf(" sometsing r n")。仅此而已。
如果我在"启动"任务中使用" hal_delay()",则一切都可以。在控制台中,我可以看到两个字符串 - "启动"answers"某物"。但是,当我在"启动"任务中使用" vtaskdelay()"时,它应该粘在" vtaskdelay()"和系统调用" hardfault_handler()"。
我真的不知道为什么。
可能您不应该在中断处理程序中正确递增系统。您应该在文件末尾检查中断刻度或检查文件freertos_config.h中的特殊定义,以与hal_delay兼容freertos。
相关文章:
- 呼叫运营商<<临时
- 呼叫 QSound,它们之间有延迟 Qt C++
- 什么是呼叫说明
- 为什么make_shared在不同的呼叫中分配相同的地址?
- 错误:类型"std::__1::basic_string<char>"不提供呼叫运算符
- 设备IO控制呼叫崩溃
- 根据呼叫位置进行记忆
- 成员呼叫通过接线员<<
- QSerialPort 手动 RTS 开/关未同步呼叫
- 将清除共享智能指针上的呼叫重置
- 来自 Pharo Smalltalk 的 ffi 呼叫上的分段错误
- C/C++ 在条件和阻止呼叫之间收到信号情报
- 将数据集从 R 传递到C++(使用 .呼叫)
- 无匹配函数呼叫getline()
- 通过呼叫constexpr函数来定义静态constexpr成员
- 组件X86转换为ARM功能呼叫,其中有不同数量的参数为ARM
- 在不合格的呼叫上,Clang和GCC上的错误
- 如何存储指针以功能模板,该模板将可呼叫对象作为其参数之一
- 来自QvariantList的std ::函数的通用呼叫
- freertos STM32F4 CPP卡在呼叫VtaskDelay时卡住