其中,USART_YyeDef是个结构体,如下:
typedef struct
{
vu16 SR;
u16 RESERVED0;
vu16 DR;
u16 RESERVED1;
vu16 BRR;
u16 RESERVED2;
vu16 CR1;
u16 RESERVED3;
vu16 CR2;
u16 RESERVED4;
vu16 CR3;
u16 RESERVED5;
vu16 GTPR;
u16 RESERVED6;
} USART_TypeDef;
USART1_BASE是个常量,如下:
#define USART1_BASE (APB2PERIPH_BASE + 0x3800)
那么请问这句话中的 * 是和前面的结合??一个结构体后面加个*这是什么??
我觉得应该是和后面的结合啊,如果是和后面的结合,则定义USART1与USART1_BASE一样,是一个指向USART_TypeDef结构体的指针,并且USART1的值是(APB2PERIPH_BASE + 0x3800)。
#define USART1 ((USART_TypeDef *) USART1_BASE)
答案:2 悬赏:20 手机版
解决时间 2021-01-28 23:51
- 提问者网友:雪舞兮
- 2021-01-28 20:20
最佳答案
- 五星知识达人网友:罪歌
- 2021-01-28 21:38
我们所谓的指针实际就是存储器中的一个地址,一个地址总会有一个具体的数字,当我们要使用内存中的一个地址时,一种是使用符号来代替,如int *i,i就代表一个地址,因为它是变量我们并不关心它的实际地址,当需要访问特定地址是如USART1的某个寄存器时,它被厂商固定在了某个地址上,此时我们就需要指明具体的寄存器地址数了,如USART1_BASE代表的常数,然后将此数转换成某个数据类型的指针强制转语句((USART_TypeDef *) USART1_BASE),就是告诉编译器此数据代表的是个内存地址
全部回答
- 1楼网友:归鹤鸣
- 2021-01-28 21:45
usart_typedef是一个自定义的类型,usart1_base是一个地址
usart1 定义成了指向这个地址的usart_typedef型的数值
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯