IO和SERCOM的引脚寻址(ARM SAM D系列)

时间:2016-07-15 03:56:27

标签: arm atmel

不确定我是否在寻找错误的地方,但我很难找到一些分步代码,它们展示了如何操作引脚IO,以及控制I2C,SPI和USART。

挖掘互联网,我确实找到了两个显示IO的示例,用于打开LED,使用Atmel studio 7

#include <asf.h>

#define F_CPU sysclk_get_cpu_hz()
#define __DELAY_CYCLE_INTRINSICS__

int main (void)
{
    board_init();
    PORT ->Group[0].DIRSET.reg = PORT_PA10;
    while (1)
    {
        PORT ->Group[0].OUTSET.reg = PORT_PA10;
    }
}

在另一个例子中,开启引脚的相同操作以完全不同的方式完成,额外的延迟使LED闪烁。我记得这是“ASF”,Atmel API用于促进事情。

#include <asf.h>

int main (void)
{
    system_init();
    delay_init();

    while(true)
    {
        delay_ms(250);
        port_pin_set_output_level(LED_PIN, LED_ACTIVE);
        delay_ms(250);
        port_pin_set_output_level(LED_PIN, LED_INACTIVE);

    }
}

这一切都很棒;我确实瞥见了如何做事;但我现在想用SERCOM与USART,I2C和SPI的其他设备进行通信。我很难有一个明确的分步示例,这样的用法。

我确实尝试过自己的实验,但现在我正处于需要遵循的地方,无论是书籍,教程还是视频。也许我找不到文档,因为我找的是特定芯片的例子?但并非所有的ARM芯片都以相同的方式工作,使用相同的代码,所以我很遗憾......作为ARM编程的初学者也无济于事。

1 个答案:

答案 0 :(得分:1)

嗯,Atmel是我最喜欢的制造商之一,因为他们的开发工具是免费的,全面的,并且有很好的文档记录。我特别喜欢它们的API,因为它易于使用且灵活。 大多数情况下,API是最佳解决方案(例如,实现您自己的USB驱动程序/堆栈非常困难)。但是,据我所知,在某些情况下,您不想使用API​​,但它仍然是一个非常好的起点。

我建议您在Atmel Studio(文件/新建/示例项目)中创建示例项目。然后,您可以复制并粘贴您需要的位(当您仍在使用Atmel部件时,您不会侵犯许可证)。例如,有一个&#34;快速启动SAM SERCOM USART驱动程序&#34;。

如果您需要有关API的文档,只需单击ASF资源管理器中的API文档即可。例如,SAMD21的SERCOM USART记录为herehere