gpt4 book ai didi

无需 Arduino 库的 Arduino 编程 - Atmel Studio

转载 作者:行者123 更新时间:2023-12-02 16:52:28 24 4
gpt4 key购买 nike

我想这个问题已经被问过数千次了,我根本找不到关于这个主题的很多资源。

我想使用 Atmel Studio 和 C 语言(不包括 Arduino 库)对 Arduino Uno (ATmega328P) 进行编程。我的意思是我想编写如下代码:

int main(void) {
/* set pin 5 of PORTB for output*/
DDRB |= _BV(DDB5);

while (1) {
/* set pin 5 high to turn led on */
PORTB |= _BV(PORTB5);
_delay_ms(BLINK_DELAY_MS);

/* set pin 5 low to turn led off */
PORTB &= ~_BV(PORTB5);
_delay_ms(BLINK_DELAY_MS);
}
}

而不是充满哦,太方便 Arduino 功能的代码。我想深入了解 Arduinos!

话虽这么说,我正在寻找您可以提供的任何优秀的学习资源,以便我可以扩展我的知识!

到目前为止,我设法找到的唯一有点用来源是此页面: https://hekilledmywire.wordpress.com/2010/12/04/22/

但是,图像丢失了,而且看起来很简约。

最佳答案

如果您熟悉 C,我建议您

  • AVR Libc reference 开始
  • 检查 iom328p.h 中的处理器特定定义(位于 ...\Atmel Toolchain\AVR8 GCC\Native\[#.#.####]\avr8-gnu-toolchain\avr\include\avr 下)
  • (可选)在 Atmel Studio 中创建一个新的 ASF 板项目,选择设备 ATmega328p 并检查从“user_board”模板加载到项目文件夹中的源代码(无论如何,该模板都是通用的几乎空的 *.h 集)为您可能需要/可能不需要的东西提供空间)
  • complete processor manual 始终靠近您 - 在那里找到的寄存器和位名与 AVR 库中的定义匹配

请注意,Atmel Studio 附带的库和工具链支持 m328P,但 ASF 不支持 UNO 板本身。不过,对于基本编程来说,你会没问题的。

在 PORTB 上添加 ...

PORTB 在处理器的特定 ...io.h(上面第一个项目符号)中定义,通过包含 <io.h> 并在 AVR Studio 中选择正确的处理器会自动包含该值。在您的处理器库中您可以找到

#define PORTB _SFR_IO8(0x05)

查找处理器指南(上面的第 4 个项目符号)第 615 页,您会发现 PORTB 位于 I/O 地址 0x05 (q.e.d.)。 _SFR_IO8(..) 本身是 <avr/sfr_defs.h> 中定义的宏,用于从 I/O 转换为内存地址(是的,较低的寄存器被双重映射为 I/O 和内存,其中内存地址高 0x20,因为最低的内存地址已被占用由 R0 到 R31)。

通过包含 <io.h>,您可以从 AVR 库中获取

#include <avr/io.h>
// included by io.h
// #include <avr/sfr_defs.h>
// #include <avr/portpins.h>
// #include <avr/common.h>
// #include <avr/version.h>
// #include <avr/io(your_processor).h> via processor declaration ... fuses
// #include <avr/(maybe some more).h>

所有这些 ...h (以及更多)最终让您可以使用在处理器手册中找到的寄存器/端口/引脚名称在 C 中进行编程。

还有一些更有用的库,例如

#include <stdint.h>                     // Type definitions, e.g. uint8_t
// #include "stdint-gcc.h"
#include <avr/power.h> // clock prescaler macro
#include <avr/interrupt.h> // interrupt macros

您会发现支持从程序和闪存等读取/写入的库。

关于无需 Arduino 库的 Arduino 编程 - Atmel Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30894655/

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