gpt4 book ai didi

c - 用 C 语言编程 Arduino,中断 vector 会起作用吗?

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:25 27 4
gpt4 key购买 nike

我有 Arduino 可以玩……但是 Arduino 语言和 IDE 对我来说就像是 child 玩具。

所以我想用普通的 C 来编程。

据我所知,引导加载程序位于内存的某个位置,在重置 vector 中有一个 rjmp,完成后,将控制权返回给已安装的“草图”。

问题是:我能在“素描”中安全地做什么?

这是我目前对使用 Arduino Bootloader 的 AVR 的看法,但它可能是错误的:

.CSEG
.ORG 0000
rjmp bootloader
; ??? Interrupt vectors here
; ??? Interrupt vectors here
; Maybe it all goes to bootloader and it then forwards
; it to handlers in the "sketch"?

bootloader:
; ??? some magic tricks here
rjmp sketch

sketch:
; "Sketch" code
; I want my own interrupt vectors, too!
end:
rjmp end;

我的意思是,显然 Bootloader 使用 AVR 的一些其他部分来实现它的功能,所以它会有自己的中断处理程序等。如果我在我的程序中使用它们,它们会按预期工作吗?

那么,使用 C(甚至汇编程序)对 Arduino 进行编程有哪些陷阱?

最佳答案

支持引导加载程序的 AVR 设备有两组 中断 vector ,一组用于引导加载程序(在引导加载程序部分的开头),一组用于常规固件(在地址 0)。 BOOTRST fuse 确定默认使用哪个复位 vector ,MCUCR 中的 IVSEL(或设备中的等效项)确定当前激活的集合。

请注意,锁定位可以限制可以使用哪些集合,并且一如既往地查看数据表以获取完整详细信息。

关于c - 用 C 语言编程 Arduino,中断 vector 会起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27087086/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com