打印

看固件库的原函数遇到的问题

[复制链接]
1345|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
程序会不会|  楼主 | 2012-7-3 10:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想搞明白调用systeminit这个函数后,各个模块的时钟怎么样子的!所以就看了原码,看了没几行问题就来了!里面有这几句,#ifndef stm32f10x_cl   rcc->cfgr&=(uint32_t)0xf8ff0000  #else  rcc->cfgr&=(uint32_t)0xf0ff0000,,,,   对这句的意思能理解,不懂的是:cfgr这个寄存器的初始值是0x00000000.和上面任何一项与不都是零吗?那条件编译又有什么意思呢?请指教!吐槽一下!手机用户真心手酸
沙发
悠然科技| | 2012-7-3 11:45 | 只看该作者
/* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
#ifndef STM32F10X_CL
  RCC->CFGR &= (uint32_t)0xF8FF0000;
看到注释了么,这只是复位这些控制位也就是为0的那些位,真正地cfgn设置,在后面的SetSysClock();函数里面的SetSysClockTo72();函数里面的 /* HCLK = SYSCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
      
    /* PCLK2 = HCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
   
    /* PCLK1 = HCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
几句和后面的几句。很清楚了吧。
两个建议哈,1.注意看下英文注释  2.不要着急怀疑,带着疑问继续跟踪函数,只需要两层你就得到答案了

使用特权

评论回复
板凳
程序会不会|  楼主 | 2012-7-3 12:28 | 只看该作者
恩,提醒的是!谢谢

使用特权

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

本版积分规则

46

主题

443

帖子

5

粉丝