搜索
bottom↓
回复: 17

ABOV单片机的内部时钟切换实例

[复制链接]

出0入0汤圆

发表于 2014-9-6 10:14:58 | 显示全部楼层 |阅读模式
ABOV单片机使用时往往需要进行内部时钟的切换,以适用于不同的操作情况。
         在操作过程中一定要注意先打开要切换的时钟源,延时待时钟稳定后再切换为要切换的目标时钟源,延时等待稳定后再关闭切换前的时钟源。且在切换过程中要关闭中断,在关闭中断的情况下可以在中断服务中进行时钟切换操作。
         以下是一个我写的时钟切换实际列子:单片机在平时使用32.768Khz的主时钟,由于程序内容复杂且庞大,所以在32.768KHZ的主频下运行按键扫描会导致按键速度反应过慢,所以在中断中每20ms进行按键操作扫描,当检测都按键时切换时钟进入8Mhz的主时钟,当没按键操作超过15S时则进入切换模式切换为32.768KHZ的低速时钟运行:代码如下请大家自行分析:


/***********************************************************************************
*函数名 : INT_Timer0
*函数功能描述 :定时器中断0中断服务程序
*调用函数:
*函数参数 :         
*函数返回值 :
*作者 :佘坤龙
*函数创建日期 :2013-7-2
*函数修改日期 :
*修改人 :
*修改原因 :
*版本 : v1.0
*历史版本 :
**********************************************************************************/
void INT_Timer0() interrupt 13
{
  //32.768KHz时为20ms   //8MHZ时为20ms
    unsigned int  a=0;
    cli();
        first_kescan_ok_if=1;
        ALL_T0_20ms_ok=1;
    int_valve_contre();       
        //按键扫描特殊处理
        if(KEY_AUTO)
        {
       
        }
        else
        {
          sys_clock_in_8M_if=1;    //标记进入高速
          key_scan_auto_if=1;
          hispeed_8M_out_10S_count=0;
          set_modu_exti_time_count=0;
        }
       
    if(KEY_LEFT)
        {
         
        }
        else
        {
          sys_clock_in_8M_if=1;    //标记进入高速
          key_scan_left_if=1;
          hispeed_8M_out_10S_count=0;
          set_modu_exti_time_count=0;
        }
       
    if(KEY_MANUAL)
        {
       
        }
        else
        {
          sys_clock_in_8M_if=1;    //标记进入高速
          key_scan_manual_if=1;
          hispeed_8M_out_10S_count=0;
          set_modu_exti_time_count=0;
        }
       
    if(KEY_RIGHT)
        {
       
        }
        else
        {
          sys_clock_in_8M_if=1;    //标记进入高速
          key_scan_right_if=1;
          hispeed_8M_out_10S_count=0;
          set_modu_exti_time_count=0;
        }
       
    if(KEY_OK)
        {
         
        }
        else
        {
          sys_clock_in_8M_if=1;    //标记进入高速
          key_scan_ok_if=1;
          hispeed_8M_out_10S_count=0;
          set_modu_exti_time_count=0;
        }
//设定模式下保持高速       
        if(sys_run_modu==SYS_RUN_SET_MODU)
        {
          sys_clock_in_8M_if=1;        //标记进入高速
          hispeed_8M_out_10S_count=0;
        }
if(power_on_if)          //是否允许时钟切换
{
//时钟切换处理
  if(sys_clock_in_8M_if==1)
    {
     if(SCCR!=0X00)//如果没有切换为高速时钟则进入切换状态
         {
           OSCCR|=0X18;//内部时钟速率切换为8MHz
           OSCCR&=0XFB; //开启内部时钟
           while(a<500)
             {
              a++;
             }
           SCCR=0X00; //切换为内部8MHZ
           a=0;
           while(a<500)//等待时钟稳定
             {
              a++;
             }
           timr0_init_state=T0_8M_INIT;  //初始化定时器为8M模式
     }
         if(SCCR==0x00)
         {//高速4M系统时钟时候时,延时判断退出
           hispeed_8M_out_10S_count++;    //延时自增
           if(hispeed_8M_out_10S_count>_8M_10S_TIME)
           {
            sys_clock_in_8M_if=0;  //标记解除切换时钟
                hispeed_8M_out_10S_count=0;
           }
         }
        }
        else
        {
          if(OSCCR!=0X1D)//检查是否切换为SUB OSC成功
          {//如果不成功则开始切换  
             a=0;
         SCCR|=0X03;     //切换外部时钟为主时钟
         while(a<10)
                  {
                   a++;
                  }
         OSCCR|=0X04;     //关闭内部震荡器
             a=0;
            while(a<1)      //延时等待系统稳定
                  {
                    a++;
                  }
            timr0_init_state=T0_32K_INIT;  //初始化定时器为8M模式
          }
        }
}
else
{
  sys_clock_in_8M_if=0;
}
        sei();
}


以上属于个人经验总结,不吝赐教!谢谢!希望对我的客户应用ABOV有所帮助!
                                                                                                                                                                     2014年8月14日
                                                                                                                                                                       FAE:Mark.she

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2014-9-6 10:29:30 来自手机 | 显示全部楼层
ABOV是什么单片机?看完帖子,知道了原来单片机主频时钟是可以在主函数中更改多次的啊,之前都是一个时钟走完所有。那是不是所有单片机都能这么干呢?

出90入0汤圆

发表于 2014-9-6 10:47:07 | 显示全部楼层
ABOV单片机
现代单片机
性价比“极高”。

我也在用。

出0入0汤圆

发表于 2014-9-6 10:53:17 | 显示全部楼层
这也发到飞思卡尔版块?是来砸场子的吧?

出100入101汤圆

发表于 2014-9-6 11:07:22 | 显示全部楼层
ABOV单片机,还没有用过。

出0入0汤圆

 楼主| 发表于 2014-9-6 12:46:26 | 显示全部楼层
wangpengcheng 发表于 2014-9-6 10:53
这也发到飞思卡尔版块?是来砸场子的吧?

没搞清楚发帖的方法,就发错了位置

出0入0汤圆

 楼主| 发表于 2014-9-6 12:50:15 | 显示全部楼层
qinshiysb 发表于 2014-9-6 10:29
ABOV是什么单片机?看完帖子,知道了原来单片机主频时钟是可以在主函数中更改多次的啊,之前都是一个时钟走 ...

主要是客户要求低功耗,而且不能停止运行,又要求操作反应速度快,所以就需要来回切换来适应客户要求,ABOV这个单片机是51的单片机。

出0入0汤圆

发表于 2014-9-6 13:04:03 | 显示全部楼层
文章小生 发表于 2014-9-6 12:50
主要是客户要求低功耗,而且不能停止运行,又要求操作反应速度快,所以就需要来回切换来适应客户要求,AB ...

他价格怎么样呢?价格低的话,内存够大吗?stm8性价比极高,就是内存小了些

出0入0汤圆

 楼主| 发表于 2014-9-6 13:06:03 | 显示全部楼层
毕竟是韩国公司,价格要低一些。

出0入0汤圆

发表于 2014-9-6 15:51:36 | 显示全部楼层
从来没听说过这公司的片子,一般用在哪些领域?

出0入0汤圆

发表于 2014-9-6 19:08:56 | 显示全部楼层
浪里白条 发表于 2014-9-6 15:51
从来没听说过这公司的片子,一般用在哪些领域?

查了一下,找了点信息:
ABOV-现代单片机
一家韩国的mcu生产公司。由现代(hy)的mcu部门重组而来。
ABOV半导体在2006年自韩国HYNIX分离出来,有超过20年单片机领域耕耘经验。ABOV半导体有单片机和标准IC另类产品。单片机包含:通用型MCU、LCD型MCU、触摸按键型MCU、烟雾检测MCU、3D眼镜MCU、多功能遥控MCU;标准IC包含:LCD/VFD驱动IC、LED驱动I、RESET IC、ELB IC等。ABOV单片机有非常良好的抗干扰性能和高竞争力的价格,已为遍布各个领域的客户提供超过20亿颗的单片机。
优点:
内嵌稳定的存储器设计能力
具有杰出的抗电噪干扰能力,如ESD,EFT,EMC等
专业的技术分析和成本管理,使其成本更具有竞争力
有超过20多年的在各个领域出货MCU的经验,拥有2亿销量记录
对于客户的问题及需求,在24小时内迅速解决

出0入0汤圆

发表于 2014-9-10 09:15:51 | 显示全部楼层
这是飞思卡尔的论坛,请楼主自重!

出0入0汤圆

 楼主| 发表于 2014-9-11 09:05:56 | 显示全部楼层
不小心发错了,求莫大人删帖。我这边没有删除选项。

出0入0汤圆

发表于 2016-5-31 11:07:51 | 显示全部楼层
hzpyl 发表于 2014-9-6 10:47
ABOV单片机
现代单片机
性价比“极高”。

现在还在用吗?用什么开发环境?用什么烧录器?

出0入0汤圆

发表于 2016-5-31 11:29:21 | 显示全部楼层
你是FAE么,有联系方式么

出90入0汤圆

发表于 2016-5-31 14:09:00 | 显示全部楼层
appleboy 发表于 2016-5-31 11:07
现在还在用吗?用什么开发环境?用什么烧录器?

还在用。
用keil开发环境
仿真器、烧录器,ABOV公司有的。

出0入0汤圆

发表于 2016-5-31 21:46:32 | 显示全部楼层
hzpyl 发表于 2016-5-31 14:09
还在用。
用keil开发环境
仿真器、烧录器,ABOV公司有的。

谢谢,我也开始正式启用ABOV,ISP有简单方案吗?不喜欢用仿真器之类的东西,最好一根线直接烧录就完事

出0入0汤圆

发表于 2016-10-15 08:38:36 | 显示全部楼层
appleboy 发表于 2016-5-31 21:46
谢谢,我也开始正式启用ABOV,ISP有简单方案吗?不喜欢用仿真器之类的东西,最好一根线直接烧录就完事 ...

现代的单片机用得怎样了,那里取得工具啊,就淘宝买吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 18:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表