c - 了解指针用法
问题描述
我是一个新手嵌入式系统开发人员,实际上,这是我在这里的第一个问题,如果你们也可以回答我的问题,如果你们有任何有用的嵌入式系统网站,如果发布它,将不胜感激。
这段代码中 u8 之后的第二个指针是什么意思?
#define DDRA (*(volatile u8*) 0x3A)
解决方案
宏
#define DDRA (*(volatile u8*) 0x3A)
正在使用(volatile u8*)
to 转换0x3A
为指向 8 位值的指针,然后第一个*
是延迟该指针。它正在访问一个内存映射的端口控制寄存器。
需要该volatile
关键字来防止编译器优化对寄存器的引用,这是一个硬件位置。
一个示例用法是在微控制器中设置端口 A 数据方向时:
#define DDRA (*(volatile char*) 0x3A)
int main()
{
DDRA = 0x2A;
// etc...
}
推荐阅读
- dart - 如何在颤动中更改分页数据表的颜色?
- java - 将 java.sql.Type 映射到多个 varchar/varying 字段
- java - Webview 应用程序不下载图像 Android
- webview - 具有基本身份验证的 Flutter WebView
- python - 在给定 x,y,z 坐标时使用 DBSCAN 算法对 3D 点进行聚类
- arrays - 通过在 Matlab 中插值 3D 矩阵层获得插值 2D 矩阵
- ruby-on-rails - 为什么我的输入字段没有问号?
- c++ - 可变参数模板歧义 - 空参数包
- python - 使用 Selenium 登录 Sharepoint:AttributeError: 'function' object has no attribute 'accept'
- android - Android Koin,如何使用两个数据源制作存储库?