SAM 上的 Atmel ASF - pio_configure_pin 描述错误?
Posted
技术标签:
【中文标题】SAM 上的 Atmel ASF - pio_configure_pin 描述错误?【英文标题】:Atmel ASF on SAM - pio_configure_pin wrong described? 【发布时间】:2014-07-01 18:58:13 【问题描述】:在尝试使用 Atmel 提供的 ASF 迈出第一步时,我咬紧牙关。
似乎 ASF 在很多地方都写得很低效,而且文档似乎不准确,或者我已经筋疲力尽,无法思考。
花费我很多时间的最新问题:
pio_configure_pin() versus pio_configure_pin_group()
此处描述:http://asf.atmel.com/docs/latest/sam3u/html/group__sam__drivers__pio__group.html#ga66c09a2f5c8d11223eb107cf8fbfddb2
根据文档: configure_pin 的第一个参数:ul_pin 要配置的一个或多个引脚的位掩码 configure_pin_group 的第二个参数:ul_mask 要配置的一个或多个引脚的位掩码
实际上: configure_pin 的第一个参数不是位掩码。 如果我想配置 Pin PB 28 我必须使用值 60 !
#define PIO_PB28_IDX 60
如果我想使用组功能配置相同的 Pin,我必须使用值 2415919104
#define PIO_PB28 (1u << 28)
错误的文档、缺少示例以及包含错误示例的论坛条目导致我浪费了很多时间。 如果我在这里错了,请告诉我,也许我错过了文档中的某些内容。 毕竟PIO驱动很可能是最重要的驱动之一,几乎任何芯片的使用都需要它。而这两个功能真的很重要。
也许 Atmel SAM 的专家可以帮助我确定是否值得继续使用 ASF? 专家将其用于他们的开发还是从头开始编写所有内容更好。
对我来说,当从 AVR 开发开始时,所有的简单性似乎都消失了,而 ASF 是 Atmels 再次使其变得更容易的方法,但是如果它有 bug 并且没有处于正确的发布状态,它可能毫无用处。
【问题讨论】:
【参考方案1】:没关系。错误经常发生在文档中。要乐观。你现在发现了它,你是主人。说真的,这没什么大不了的。一旦你发现它放在一个宏中或使用你自己的函数来进行这种 PIO 访问。我总是更喜欢打开一个标题,看看一个宏或函数如何访问所需的位字段。那里有点聪明的魔法。它通常接近于对特定架构的深入和低层次的理解,这对开发人员来说很好。一开始就花几个小时是值得的。
【讨论】:
【参考方案2】:我也遇到过这个功能。 参数ul_pin实际上是一个pin的序号。从函数中可以看出,它首先用于通过找出如何将 Pio 指针指向正确的 PIO 控制器该序列号中有许多基于 32 的块。
所以你是对的,这是文档中的错误。
【讨论】:
以上是关于SAM 上的 Atmel ASF - pio_configure_pin 描述错误?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在Atmel SAM E70处理器中使用“指令”TCM来获取数据吗?