打印

RCC_GetClocksFreq函数的问题请教。。

[复制链接]
6517|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hackthree|  楼主 | 2011-6-9 08:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
在固件库手册上描述的功能是返回不同片上时钟的频率

我的问题来了:我现在用的F100,48脚的片子,3.5.0的库,最大频率为24MHZ,
直接在RCC初始化中用SystemInit();这个函数。

想看看各时钟的频率,就用写了个下面这个函数:
void test_clock()
{
RCC_GetClocksFreq(&RCC_Clock_t);
  T_SYSCLK=RCC_Clock_t.SYSCLK_Frequency;
  T_HCLK=RCC_Clock_t.HCLK_Frequency;
  T_PCLK1=RCC_Clock_t.PCLK1_Frequency;
  T_PCLK2=RCC_Clock_t.PCLK2_Frequency;
  T_ADCCLK=RCC_Clock_t.ADCCLK_Frequency;     //测试各时钟频率
}
在KEIL中查看T_SYSCLK,T_HCLK,T_PCLK1,T_PCLK2,T_ADCCLK这几个值分别如下(十进制):
T_SYSCLK=13824
T_HCLK=13824
T_PCLK1=13824
T_PCLK2=13824
T_ADCCLK=6912

而手册上说返回值都是单位为HZ。。
这样的话,岂不是只有13.824kHz?
所以有些不解了,求解答。。。
沙发
香水城| | 2011-6-9 12:06 | 只看该作者
函数返回的数值只是寄存器设置的数值,而不是实测的数值,所以你需要先初始化好各个寄存器后再调用这个函数才有意义。

使用特权

评论回复
板凳
baidudz| | 2011-6-9 16:27 | 只看该作者
必须先初始化各个寄存器

使用特权

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

本版积分规则

1

主题

220

帖子

1

粉丝