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

[复制链接]
 楼主| 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);

}
戈卫东 发表于 2015-1-16 22:31 | 显示全部楼层
因为这个HSE_VALUE被定义成了16M?
 楼主| realmale 发表于 2015-1-16 22:32 | 显示全部楼层
戈卫东 发表于 2015-1-16 22:11
你说多少它也说多少。。。。

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

高手:victory:,谢谢啦。
zh113214 发表于 2015-1-16 23:18 | 显示全部楼层
都是高手啊
huangqi412 发表于 2015-1-17 15:49 来自手机 | 显示全部楼层
你换了晶振不告诉单片机  玩猜猜猜么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

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