【发布时间】:2018-02-28 09:53:36
【问题描述】:
我有这段代码,我正试图理解,但我被困住了,所以也许你们中的一个好人可以为我指明正确的方向。
一步一步来,我已经完成了这部分的初始化...
volatile struct UART *pTXD1;
volatile struct UARTINIT *pPort1;
...结构...
struct UARTINIT
{
union SR_BYTE SR; /* Status register */
BYTE DR; /* Data register */
BYTE BRR1; /* Baud Rate reg 1 */
BYTE BRR2; /* Baud Rate reg 2 */
union CR1_BYTE CR1; /* Control register 1 */
union CR2_BYTE CR2; /* Control register 2 */
BYTE CR3; /* Control register 3 */
BYTE CR4; /* Control register 4 */
};
struct UART
{
BYTE *Buffer;
WORD max;
WORD read;
WORD write;
BYTE Baud;
BYTE stopp;
};
...函数调用...
Transmit_Uart(pTXD1, pPort1);
...函数
void Transmit_Uart(struct UART *Buff, struct UARTINIT *USART)
{
if ((*Buff).write != (*Buff).read)
{
if ((*USART).SR.bit.TC)
{
(*Buff).read = ((*Buff).read + 1) % (*Buff).max;
(*USART).DR = (*Buff).Buffer[(*Buff).read];
}
}
else
(*Buff).stopp = OFF;
return;
}
我的问题是我不明白哪些信息写入了结构。 该函数以 pTXD1 和 pPort1 作为参数调用,但这两个只是指向结构的指针,不是吗?
如果我的问题无法理解,我深表歉意,并很乐意根据需要提供更多信息。
【问题讨论】:
-
您可能应该找到一本很好的初学者书籍,其中解释了指针和取消引用运算符
*,以了解它的作用。 -
搜索并阅读“内存映射”硬件/寄存器/结构。比如this等文章。
标签: c struct embedded uart memory-mapping