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

[复制链接]
1853|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

粉丝
快速回复 在线客服 返回列表 返回顶部