打印
[技术问答]

关于SystemCoreClockUpdate的理解

[复制链接]
10410|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cbx_xx|  楼主 | 2014-5-12 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void SystemCoreClockUpdate (void)            
{
    uint32_t u32CoreFreq, u32ClkSrc;

    u32ClkSrc = CLK->CLKSEL0 & CLK_CLKSEL0_HCLK_S_Msk;

    if (u32ClkSrc == 0)
        u32CoreFreq = __XTAL;       /* External crystal clock */
    else if (u32ClkSrc == 3)
        u32CoreFreq = __IRC10K;            /* Interanl 10K crystyl clock */
    else if (u32ClkSrc ==  7)
        u32CoreFreq = __IRC22M;            /* Internal 22M */
    else
        u32CoreFreq = __IRC22M;            /* unknown value, use default Internal 22M */

    SystemCoreClock = (u32CoreFreq/((CLK->CLKDIV & CLK_CLKDIV_HCLK_N_Msk) + 1));
    CyclesPerUs = (SystemCoreClock + 500000) / 1000000;  
}


蓝色这句如何理解?  一般用来干什么用的? 谢谢


沙发
niuyaliang| | 2014-5-12 16:58 | 只看该作者
extern uint32_t CyclesPerUs;                       /* Cycles per micro second */

使用特权

评论回复
板凳
cbx_xx|  楼主 | 2014-5-12 17:12 | 只看该作者
为什么(SystemCoreClock + 500000) / 1000000;   那里为什么加500000

使用特权

评论回复
地板
aozima| | 2014-5-12 18:32 | 只看该作者
不用浮点时常用的3种方法
四舍五入   a = (b+5)/10
全舍弃 a = b / 10
全进位 a = (b+9) / 10

使用特权

评论回复
评分
参与人数 2威望 +3 收起 理由
遗失的枫叶 + 1 赞一个!
木叶小镇 + 2
5
cbx_xx|  楼主 | 2014-5-13 10:03 | 只看该作者
谢谢.一点就明

使用特权

评论回复
6
木叶小镇| | 2014-7-20 21:28 | 只看该作者
aozima 发表于 2014-5-12 18:32
不用浮点时常用的3种方法
四舍五入   a = (b+5)/10
全舍弃 a = b / 10

学习了,刚看到这一点,终于明白了。

使用特权

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

本版积分规则

13

主题

41

帖子

0

粉丝