首页 > 解决方案 > 了解指针用法

问题描述

我是一个新手嵌入式系统开发人员,实际上,这是我在这里的第一个问题,如果你们也可以回答我的问题,如果你们有任何有用的嵌入式系统网站,如果发布它,将不胜感激。

这段代码中 u8 之后的第二个指针是什么意思?

#define DDRA (*(volatile u8*) 0x3A)

标签: cpointersembeddedatmega

解决方案


#define DDRA (*(volatile u8*) 0x3A)

正在使用(volatile u8*)to 转换0x3A为指向 8 位值的指针,然后第一个*是延迟该指针。它正在访问一个内存映射的端口控制寄存器。

需要该volatile关键字来防止编译器优化对寄存器的引用,这是一个硬件位置。

一个示例用法是在微控制器中设置端口 A 数据方向时:

#define DDRA (*(volatile char*) 0x3A)

int main()
{
    DDRA = 0x2A;
    // etc...
}

推荐阅读