打印
[STM8]

请教stm8外接12m晶体系统时钟频率问题

[复制链接]
2388|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
realmale|  楼主 | 2015-1-16 21:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我给stm8s105k4t6接上12M晶体, 切换到外部振荡器后,CLK_GetClockFreq()的结果却是16M,怎么回事呀?
沙发
戈卫东| | 2015-1-16 22:10 | 只看该作者
CLK_GetClockFreq()它返回的是你定义的宏吧,找到它改成12M就可以了。。。。

使用特权

评论回复
板凳
戈卫东| | 2015-1-16 22:11 | 只看该作者
你说多少它也说多少。。。。

使用特权

评论回复
地板
realmale|  楼主 | 2015-1-16 22:26 | 只看该作者
那个是官方库里的函数,是这样定义的:
/**
  * @brief  This function returns the frequencies of different on chip clocks.
  * @param  None
  * @retval the master clock frequency
  */
uint32_t CLK_GetClockFreq(void)
{

    uint32_t clockfrequency = 0;
    CLK_Source_TypeDef clocksource = CLK_SOURCE_HSI;
    uint8_t tmp = 0, presc = 0;

    /* Get CLK source. */
    clocksource = (CLK_Source_TypeDef)CLK->CMSR;

    if (clocksource == CLK_SOURCE_HSI)
    {
        tmp = (uint8_t)(CLK->CKDIVR & CLK_CKDIVR_HSIDIV);
        tmp = (uint8_t)(tmp >> 3);
        presc = HSIDivFactor[tmp];
        clockfrequency = HSI_VALUE / presc;
    }
    else if ( clocksource == CLK_SOURCE_LSI)
    {
        clockfrequency = LSI_VALUE;
    }
    else
    {
        clockfrequency = HSE_VALUE;
    }

    return((uint32_t)clockfrequency);

}

使用特权

评论回复
5
戈卫东| | 2015-1-16 22:31 | 只看该作者
因为这个HSE_VALUE被定义成了16M?

使用特权

评论回复
6
realmale|  楼主 | 2015-1-16 22:32 | 只看该作者
戈卫东 发表于 2015-1-16 22:11
你说多少它也说多少。。。。

真的是吔。头文件竟然定义了:
#define HSE_VALUE ((u32)16000000);

高手:victory:,谢谢啦。

使用特权

评论回复
7
zh113214| | 2015-1-16 23:18 | 只看该作者
都是高手啊

使用特权

评论回复
8
huangqi412| | 2015-1-17 15:49 | 只看该作者
你换了晶振不告诉单片机  玩猜猜猜么

使用特权

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

本版积分规则

1

主题

3

帖子

0

粉丝