7得票1回答
HAL库中的延迟(HAL_Delay())出现了延迟。

我正在尝试在我的STM32F4 Discovery上闪烁LED灯。不知何故,它卡在延迟函数上。我已将SysTick中断优先级更改为0,并添加了IncTick()和GetTick()函数。我漏掉了什么? #include "stm32f4xx.h" // Device header #incl...

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

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

7得票5回答
非对齐访问是什么?(ARM/Keil)

我正在使用Keil编写ARM 7汇编代码。 我遇到了以下运行时错误: Non-aligned Access: ARM Instruction at 000000F8H, Memory Access at 7F7F7F7FH Data Abort: ARM Instruction at 00...

7得票4回答
如何在Cortex-M3 (STM32)上从RAM执行函数?

我正在尝试在Cortex-M3处理器(STM32)上从RAM执行一个函数。该函数擦除并重写内部闪存,因此它必须位于RAM中,但我该如何做呢? 我尝试的方法是:使用memcpy将函数复制到RAM中的字节数组中(检查其是否正确对齐),设置函数指针指向该字节数组,然后调用函数(指针)。 这对于大...

10得票3回答
在嵌入式系统中,C语言中的NOP指令有什么等价替代品?

我使用KEIL编译程序。 该程序使用如下代码 asm("NOP"); 不幸的是,KEIL编译器不接受此语句。 这个想法是通过使用NOP(无操作)汇编代码来引入延迟。 在C中,实际等效于此的是什么? 这是否因我使用的嵌入式控制器而有所不同?

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

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

8得票3回答
如何在Keil的uVision下重新定位向量表并更改Cortex-M3的起始地址?

我正在使用STM32F107 Cortex M3微控制器。我在项目中使用Keil uvision IDE。我有一个应用程序,在起始位置(即0x08000000)正常运行。如果我将起始位置更改为0x08004000,应用程序就无法正常工作。我使用以下函数更改了向量表的位置: NVIC_SetV...

9得票3回答
在C语言中,有没有替代sprintf()函数的任何功能?编译后代码大小太大了。

我正在开发一个嵌入式系统(Cortex M3)。为了将设备上的一些数据发送到串行端口(显示在PC屏幕上),我使用了一些自己编写的函数,其中包括putchar()方法。 当我想发送整数或浮点数时,我使用sprintf()将它们转换为字符字符串,并将它们发送到串行端口。 现在,问题是我正在使用...

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

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

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

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