42得票8回答
如何在内存的给定绝对地址中放置一个变量(使用GCC)

RealView ARM C编译器支持使用变量属性at(address)将变量放置在给定的内存地址处:int var __attribute__((at(0x40001000))); var = 4; // changes the memory located at 0x40001000 ...

27得票2回答
为什么编译器没有警告我空的if语句?

我正在使用Keil µVision v4.74,并启用了选项“所有警告”。我编写了以下有意的代码:if(condition matched) { // Do something } 当我重建我的项目时,我得到了0个错误,0个警告。但是,当我不小心地写下以下内容:if(condition m...

22得票4回答
如何在C语言中以两位十六进制值打印无符号字符?

我试图将一个无符号字符值作为2位十六进制值打印出来,但总是得到4位十六进制值的结果,不确定我的代码有什么问题。// unsigned char declaration unsigned char status = 0x00; // printing out the value printf(...

15得票3回答
ARM Cortex-M编译器的差异

我即将使用C语言为我的项目开发Cortex-M芯片上STM32处理器的固件,搜索网络时发现了许多不同的编译器:Keil、IAR、Linaro、Yagarto和GNU ARM嵌入式处理器工具。 我想知道这些编译器之间有哪些功能差异可能会影响我的选择?例如,作为一位爱好者,我不需要供应商的支持或...

14得票5回答
ARM7的Keil和GCC哪个更好?

Keil和GCC在ARM7开发中有什么区别?我正在为一个中等规模项目选择硬件顾问,有些人使用Keil,有些人使用GCC。我想知道选择任何一种选项时需要注意的问题...

12得票4回答
链接器如何知道外部函数的定义在哪里?

我阅读了一些帖子,并得出结论:extern告诉编译器“此函数存在,但其代码在其他地方。不要惊慌。”但链接器如何知道函数定义在哪里。 我的情况:- 我正在使用Keil uvision 4进行工作。有一个头文件grlib.h,主函数在grlib_demo.c中(它包括grlib.h)。现在,有一...

11得票5回答
错误: L6236E: 没有部分与选择器匹配 - 没有部分作为FIRST/LAST。

我是用 Keil Microvision V5.12 编译器新手,正在学习 ARM 编程。 当我尝试编译一个简单的汇编项目时,遇到了以下错误:.\Objects\learn.sct(7): error: L6236E: No section matches selector - no sect...

11得票3回答
将uint8_t与一个数字进行比较

或许我没有正确理解C++,或者这是编译器的一个错误?uint8_t a = 0x00; uint8_t b = 0xFF; if( a - b == 1 ) { doNothing(); } doNothing 没有被调用(正如预期),因为 (a-b) 的结果被隐式转换为比较操作中第...

11得票2回答
如何抑制第三方源文件中的警告?

我熟悉GCC和Keil的警告抑制指令(它们不同,但用法基本相同)。 对于第三方头文件,我可以这样做:#pragma push #pragma suppress warning #include "whatever.h" #pragma pop 但是我该如何抑制第三方来源的警告呢?Eclipse...

11得票2回答
Cortex M3的引导程序

我正在使用来自mbed的LPC 1768板(带有cortex M3处理器),并尝试实现一些东西,主要是从SD卡升级用户应用程序。我正在编写两个程序,首先是引导加载程序/纳米内核,然后是用户应用程序(对于起步来说,helloworld足够了): 位于0x00地址的引导加载程序/纳米内核运行,...