当我给Keil编译器添加"--callgraph"选项时,它会静态地计算出确切的"最大堆栈使用量"。但今天它给了我一个"最大堆栈使用量 = 284字节 + 未知(没有堆栈大小信息的函数...)"的消息,并列出了"没有堆栈信息的函数"列表。Nigel Jones说在嵌入式系统中递归是个非常糟糕的...
我使用KEIL编译程序。 该程序使用如下代码 asm("NOP"); 不幸的是,KEIL编译器不接受此语句。 这个想法是通过使用NOP(无操作)汇编代码来引入延迟。 在C中,实际等效于此的是什么? 这是否因我使用的嵌入式控制器而有所不同?
我正在使用uVision 5的教育/评估版本。在调试我的项目时,反汇编窗口会在边缘标记下一条将要执行的语句,并用黄色箭头指示。 每行文本编辑器中的边缘将在到达该代码行时变为绿色。这似乎意味着文本编辑器知道当前正在执行哪行代码。 然而,文本编辑器不会更新,除非它失去并重新获得焦点,这使得在调...
我正在进行一个项目,需要至少使用500 kB的内存。我有一个带有定义堆栈和堆的代码的SDK,它可以正常工作。 Stack_Size EQU 0x00004000 AREA STACK, NOINIT, READWRITE, ALIGN=3 S...
我们希望使用预处理器输出文件(.i 文件)以便进一步使用,特别是注释部分。为此,我们使用 /PREPRINT (或 /PP )命令行开关。问题在于KEIL编译器(C166)会删除任何注释。 问:是否有可能在 .i 文件中保留注释? 额外研究: Microsoft编译器使用 /P 命令行开关...
我想在ARM内联汇编中访问C语言中声明的局部变量。我该怎么做? 可以像这样访问全局变量: int temp = 0; Function(){ __asm( ".global temp\n\t" "LDR R2, =temp\n\t"...
我正在使用STM32F107 Cortex M3微控制器。我在项目中使用Keil uvision IDE。我有一个应用程序,在起始位置(即0x08000000)正常运行。如果我将起始位置更改为0x08004000,应用程序就无法正常工作。我使用以下函数更改了向量表的位置: NVIC_SetV...