21ic问答首页 - 关于华大HC32F4A0 HRC_FREQ_MON()宏的地址问题
关于华大HC32F4A0 HRC_FREQ_MON()宏的地址问题
cmt99642021-11-28
本帖最后由 cmt9964 于 2021-11-28 19:49 编辑
初学嵌入式编程,望大佬帮助
华大HC32F4A0中的示例中,在SystemInit函数中调用SystemCoreClockUpdate,其中有一段代码如下:
/* Select proper HRC_VALUE according to ICG1.HRCFREQSEL bit */
/* ICG1.HRCFREQSEL = '0' represent HRC_VALUE = 20000000UL */
/* ICG1.HRCFREQSEL = '1' represent HRC_VALUE = 16000000UL */
if (1UL == (HRC_FREQ_MON() & 1UL))
{
HRC_VALUE = HRC_16MHz_VALUE;
}
else
{
HRC_VALUE = HRC_20MHz_VALUE;
}
这个函数中用了一个宏HRC_FREQ_MON(),定义为
#define HRC_FREQ_MON() (*((volatile unsigned int*)(0x40010684UL)))
按照用户手册,ICG1的地址应该是0x404,为什么在这个宏中使用的是这个地址?
初学嵌入式编程,望大佬帮助
华大HC32F4A0中的示例中,在SystemInit函数中调用SystemCoreClockUpdate,其中有一段代码如下:
/* Select proper HRC_VALUE according to ICG1.HRCFREQSEL bit */
/* ICG1.HRCFREQSEL = '0' represent HRC_VALUE = 20000000UL */
/* ICG1.HRCFREQSEL = '1' represent HRC_VALUE = 16000000UL */
if (1UL == (HRC_FREQ_MON() & 1UL))
{
HRC_VALUE = HRC_16MHz_VALUE;
}
else
{
HRC_VALUE = HRC_20MHz_VALUE;
}
这个函数中用了一个宏HRC_FREQ_MON(),定义为
#define HRC_FREQ_MON() (*((volatile unsigned int*)(0x40010684UL)))
按照用户手册,ICG1的地址应该是0x404,为什么在这个宏中使用的是这个地址?
赞0
评论
2021-11-30
赞0
评论
2021-11-29
赞0
评论
2021-11-29
赞0
评论
2021-11-29
赞0
是的,EFM从0x40010400UL偏移到1AC就结束了,完全没有后边内容的定义了
评论
2021-11-29
赞0
看了一下存储器映射表,
0x40010684UL地址属于【嵌入式FLASH(EFM)】区段,但没在找到对应寄存器,
评论
2021-11-29
赞0
评论
2021-11-29
您需要登录后才可以回复 登录 | 注册