gpt4 book ai didi

c - 如何编写设备的头文件

转载 作者:行者123 更新时间:2023-12-02 19:53:04 24 4
gpt4 key购买 nike

我是嵌入式编程新手,正在学习相关类(class)。并与 ATSTK600 配合使用。

我正在寻找有关“如何为设备编写头文件”的帮助。嗯,具体来说,编写头文件(例如命名寄存器等)时要遵循的标准是什么(我知道如何创建 .h 和 include)。

最近,我接到一个创建头文件的任务,我做了这个任务,进展顺利,但在重新提交之前需要纠正一些错误。定义 USART 时(犯了一个错误,因为这对我来说很新)

#define USART_RX $0032 [教授说这是错误的,因为 $ 符号 #define 不起作用]。那么下面的定义正确吗?

#define USART0_RX  32
#define USART0_UDRE 34
#define USART0_TX 36

另一件事是我定义的端口如下,这是正确的命名约定吗?

#define I_PINS_PORTA  0x20
#define DD_PORTA 0x21
#define DATA_PORTA 0x22

嗯,我在某处读到正确的命名约定是#define BASE_ADDR_PORTA 0x20,但是DD_PORTA应该使用什么I_PINS_PORTA

我正在通过网络寻求一些帮助,并发现了这个论坛。

附注AM 使用 C 作为编程语言。

最佳答案

对于 UART,您似乎遵循了一个约定,但对于 PORTA 却没有遵循,即将系统名称放在名称的开头。它使得在代码中更容易发现。所以而不是

#define DD_PORTA 0x21

你可能有

#define PORTA_DD 0x21

对跨越寄存器区域的设备使用基地址也是一个好主意。为此,您需要:

#define PORTA_BASE 0x20

#define PORT_I 0x00
#define PORT_DD 0x01
#define PORT_DATA 0x02

#define PORTA_I (PORTA_BASE + PORT_I)
#define PORTA_DD (PORTA_BASE + PORT_DD)
#define PORTA_DATA (PORTA_BASE + PORT_DATA)

这最终会增加打字量,但可以帮助您避免以后出错。

不同的人和公司对此类事物的命名方式及其界面有自己的偏好,因此没有完美的答案。

就字节对齐而言——我不确定你在问什么。内存地址的对齐与地址的余数除以对齐大小(以字节为单位)为 0 相关。许多系统只能在可被 2、4 或 8 整除的地址处加载和存储(或者这样做)更快地到达满足要求的地址)。此外,CPU 缓存性能受到对齐的影响(缓存中只有一半所需的内存可能与根本没有内存一样糟糕)。

关于c - 如何编写设备的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3964381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com