【发布时间】:2015-11-21 15:38:13
【问题描述】:
我正在尝试访问 PMC_PCER0 并在 ARM Cortex M3 上为 PID14 启用它。我被要求创建一个读取按钮并“返回”(正如我的教授坚持称之为)其值的 void 函数。无论如何,这是问题所在:
void readButton( unsigned int *button)
{
do something yo;
}
我有一个PMC_PCER0 的地址,为了这个问题,我们假设它位于0xfff123da,而这个PMC_PER0 有 32 个 PIO,其中一个是 PID,恰好从第 14 位开始,所以我需要激活这个。
为了激活它,我是否需要使用 `or 运算符屏蔽PMC_PCER0?
我知道我可以如下定义PMC_PCER0
#define PMC_PCER0 (0xfff123da)
但是,这只会给PMC_PCER0 提供0xfff123da 的值,但我想做的是PMC_PCER0 实际拥有该地址。后来我想掩盖它。如果您能详细解释一下,我将不胜感激。
【问题讨论】:
-
为什么不在您的 MCU 中为外围模块使用供应商 (CMSIS) 接头?每个 MCU 制造商都提供此类接头。
-
@Olaf 这不是 PC 程序,而是嵌入式处理器 ARM Cortex M3。硬件工程师已经提供了要使用的地址。编译器/链接器生成的地址不起作用。
-
@QuentinUK:我很确定 CMSIS 标头不适用于 PC。而且 PC 没有 MCU,而是有 CPU(尽管差异正在缩小)。无论如何应该有一个头文件。该名称来自 Atmel MCU (AT91SAM3*) 中外围模块的寄存器,我非常有信心 Atmel 确实 提供标头。那你的意思是什么?
-
所以向公众提问的目的是让自己感觉不好,因为这里的人实际上什么都不擅长,只会降低您的问题的评分。却没有人给出满意的答复!当然我不是说评论的你们^^
标签: c pointers memory-address cortex-m