我有一个关于在STM32中处理文件的问题。我的项目需要将数据写入microSD卡,但我不知道如何做到这一点才能获得最佳效率。我的嵌入式程序是这样的:
while(1)
{
fopen(filename,"a");
// write data to microSD card and send it via radio module
fclose(filename);
}
我担心这个代码可能会非常慢,因为在我的程序的每个循环中打开/关闭文件(特别是microSD卡上的外部文件)是昂贵的。如何使用fopen和fclose快速保存代码,同时又不会丢失程序中的数据?
有点愚蠢的问题。例如,我读过,在C11中增加了对线程的支持。然后,例如GCC为我的STM32F4编译器说,它支持C11标准。那么,这是否意味着,现在,没有操作系统,我将实现线程支持?但怎么可能呢?
另一个例子-- g++ for STM32支持std::STM32,即使没有OS的内存管理,IT也能工作。这意味着某个内存管理器在编译器中?还是不想?
我有一个STM32 F4,我正试图在STMCubeIDE中创建一个新的C项目。
我有STMCubeIDE版本1.5.0构建: 8698_20201117_1050 (UTC)
在嵌入式软件包管理器中,我安装了"STM32Cube STM32F4系列单片机软件包“1.25.2版
但是,当我创建一个新的STM32项目(使用板选择器选择我的板- NUCLEO-F410RB)时,我会得到以下错误消息:
Code generation could not be done most probably because the necessary firmware package is missing
我正在为一个STM32嵌入式系统调试这个软件。在其中一个函数中,我的程序总是碰到某种断点:
SIGTRAP,跟踪/断点陷阱
但是,在GDB中,当我执行info breakpoints时,就会得到No breakpoints or watchpoints。断点实际上对应于我很久以前在可执行文件的另一个版本中设置的一个断点。当我设置断点时,GDB告诉我automatically using a hardware breakpoint on read-only memory (或类似的消息)。
我认为硬件断点仍然在我的芯片上,尽管加载了新版本的软件。如果确实存在虚假的断点,我如何定位和删除它
因此,我试图编译这个项目:与Segger嵌入式工作室,其中使用gcc。该进程正因此错误而窒息:
pasting formed 'u"Open source USB stack for STM32"', an invalid preprocessing token
这是由这一行引起的:
static const struct usb_string_descriptor manuf_desc_en = USB_STRING_DESC("Open source USB stack for STM32");
所以USB_STRING_DESC是一个宏: