打印
[技术问答]

关于华大HC32F4A0 HRC_FREQ_MON()宏的地址问题

[复制链接]
4899|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cmt9964|  楼主 | 2021-11-28 16:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
HC, rc, Value, se, ic, TE
本帖最后由 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,为什么在这个宏中使用的是这个地址?

使用特权

评论回复
沙发
cmt9964|  楼主 | 2021-11-29 07:33 | 只看该作者
有人研究过吗?

使用特权

评论回复
板凳
fxyc87| | 2021-11-29 09:51 | 只看该作者
看了一下手册,我也表示没看懂,
看了一下存储器映射表,
0x40010684UL地址属于【嵌入式FLASH(EFM)】区段,但没在找到对应寄存器,

使用特权

评论回复
地板
cmt9964|  楼主 | 2021-11-29 13:07 | 只看该作者
fxyc87 发表于 2021-11-29 09:51
看了一下手册,我也表示没看懂,
看了一下存储器映射表,
0x40010684UL地址属于【嵌入式FLASH(EFM)】区段 ...

是的,EFM从0x40010400UL偏移到1AC就结束了,完全没有后边内容的定义了

使用特权

评论回复
5
1203030117| | 2021-11-29 14:35 | 只看该作者
我也碰到过这种情况,国产芯片,手册上没有某个寄存器地址的说明,但是程序里声明出来了,这种事情没法纠结

使用特权

评论回复
6
雨果喝水| | 2021-11-29 15:52 | 只看该作者
手册写的不清楚。

使用特权

评论回复
7
wubangmi| | 2021-11-29 16:27 | 只看该作者
根据实际验证来看,0x40010684UL地址内数据的最低位和0x404地址内数据的最低位是相通的,猜测是0x40010684UL的值在代码烧写完成后直接把值从0x404中拷贝过来了。

使用特权

评论回复
8
martinhu| | 2021-11-30 14:49 | 只看该作者
应该是只读的,没法修改,不用纠结,HRC设置20M还是16M,在icg里面设置。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝