最近需要把stm32的程序移植到GD32上,GD32的库函数没有意法做的丰富,所以许多操作需要自己实现,因为要用到读写片内FLASH,所以指针操作比较频繁,在实现过程中,对从前没有关注的一个指针操作:
代码如下:
#define iFOS_APP_ADDR 0x0800B400
/* 从地址中读取一个字节 */
uint8_t data = 0;
uint8_t *ptrd = NULL;
ptrd = (uint8_t *)iFOS_APP_ADDR;
data = *ptrd;
/* 从地址中读取4个字节(WORD) */
uint32_t data = 0;
__packed uint32_t *p_data = (uint32_t *)data;
data = *p_data;
代码如下:
uint8_t *p = NULL;
uint32_t *m = NULL;
DEBUG("sizeof uint8_t p = %d,sizeof uint8_t m = %d",sizeof(p),sizeof(m));
DEBUG("sizeof uint8_t *p = %d,sizeof uint8_t *m = %d",sizeof(*p),sizeof(*m));
执行结果:
<main> sizeof uint8_t p = 4,sizeof uint8_t m = 4
<main> sizeof uint8_t *p = 1,sizeof uint8_t *m = 4