关于ABOV单片机MC96F1206的系统时钟配置问题

最近在使用ABOV的MC96F1206单片机,在时钟配置方面出现了问题,现在将调试心得总结如下:

系统时钟是整个MCU的心脏,系统时钟的配置关乎MCU所有外设的工作频率;此单片机的MCU时钟仅仅支持内部的RC振荡器。下面关于1206的时钟配置做简单说明:

关于1206的内部时钟可以配置为16MHz,8MHz、4MHz、1MHz四种频率,系统默认上电为8MHz;具体的时钟选择需要对时钟发生器寄存器SCCR进行配置。

这里需要特别注意SCCR寄存器中bit4的时钟切换模式控制位CBYS,只有当CBYS置位时才能通过软件进行时钟的切换,可以通过DIV[1:0]位选择具体的时钟频率。

需要特别注意:在官方提供的代码生成软件MC9x code generator中进行时钟选择时,软件给出的代码也仅仅是改变了SCCR中DIV[1:0]位的时钟选择位,并没有对CBYS位进行操作,如下图所示。

根据MC9x code generator生成的代码进行时钟选择并仿真,实际上并没有改变主时钟的频率(可以通过PWM输出,示波器抓取PWM的频率波形进行验证)。

基于以上的问题得出结论:在时钟配置时需要增加CBYS位的操作,建议操作代码如下所示:

//    SCCR = 0x60|0x10;        // set clock Fx==1MHz;
//    SCCR = 0x40|0x10;        // set clock Fx==4MHz;
      SCCR = 0x20;                // set clock Fx==8MHz;默认值
//    SCCR = 0x00|0x10;        // set clock Fx==16MHz;

以上代码经过自己亲自验证,欢迎ABOV单片机爱好者相互学习;由于本人的水平有限,文章中如有不妥之处,欢迎指正。

猜你喜欢

转载自blog.csdn.net/praguejing/article/details/102801563
今日推荐