我正在研究嵌入式系统并从头开始实现一个
startup.c
文件。创建中断向量表后,我在编辑器上收到以下错误(我使用 clangd
作为我的 LSP):
启动.c:
#include <stdint.h>
#define SRAM_START 0x20000000U
#define SRAM_SIZE (128U * 1024U)
#define SRAM_END ((SRAM_START) + (SRAM_SIZE))
#define STACK_START SRAM_END
int main(void);
void reset_handler(void);
/* more stuff */
uint32_t vectors[] __attribute__((section(".isr_vectors"))) = {
STACK_START,
(uint32_t)reset_handler,
/* more stuff */
}
void reset_handler(void){
/* .data, .text and .bss */
main();
}
为什么 gcc 允许编译?
为什么 gcc 允许编译?
他没有。向量是函数指针数组。
typedef void (*const pHandler)(void);
__attribute__((section(".isr_vectors"), used))
pHandler vectors[] = {
(pHandler)STACK_START,
reset_handler,
};