5300|2

1万

帖子

24

TA的资源

版主

楼主
 

CH554 改变系统时钟 [复制链接]

CH554可以改变系统时钟,CLOCK_CFG寄存器的低三位可以控制系统内部时钟分频系数,从而改变系统工作频率。为了安全,改变CLOCK_CFG寄存器前,需要往安全模式控制寄存器中一次写入0x55和0xAA。
下面程序演示了改变系统时钟频率的方法,将P1.0接地一段时间,就会改变时钟,可以通过LED1的变化看出时钟的变化。

  1. #include <rtx51tny.h>
  2. #include <SST89X5XXRD2.H>

  3. #include "stdint.h"

  4. sbit LED1 = P1^6;
  5. sbit LED2 = P1^7;
  6. sbit BTN  = P1^0;
  7. sfr SAFE_MOD = 0xA1;
  8. sfr CLOCK_CFG = 0xB9;

  9. #define FREQ_BASE    6000000UL

  10. #define SYSCLK_187K  0
  11. #define SYSCLK_750K  1
  12. #define SYSCLK_3M    2
  13. #define SYSCLK_6M    3
  14. #define SYSCLK_12M   4
  15. #define SYSCLK_16M   5
  16. #define SYSCLK_24M   6

  17. #define FREQ_187K      187500UL
  18. #define FREQ_750K      750000UL
  19. #define FREQ_3M       3000000UL
  20. #define FREQ_6M       6000000UL
  21. #define FREQ_12M     12000000UL
  22. #define FREQ_16M     16000000UL
  23. #define FREQ_24M     24000000UL

  24. code uint32_t SYSCLK_FREQ[] = (FREQ_187K, FREQ_750K, FREQ_3M, FREQ_6M, FREQ_12M, FREQ_16M, FREQ_24M);

  25. uint32_t F_CPU = FREQ_BASE;

  26. /* only suppot internal clock, support frequence
  27.     FREQ_187K
  28.     FREQ_750K
  29.     FREQ_3M
  30.     FREQ_6M (default)
  31.     FREQ_12M
  32.     FREQ_16M
  33.     FREQ_24M
  34. */
  35. void sysclk(uint8_t freq)
  36. {
  37.   if(freq > 6)
  38.     return;
  39.   
  40.   F_CPU = SYSCLK_FREQ[freq];
  41.   
  42.   SAFE_MOD = 0x55;
  43.   SAFE_MOD = 0xAA;
  44.   CLOCK_CFG &= 0xF8;
  45.   CLOCK_CFG |= freq;
  46.   SAFE_MOD = 0;
  47. }

  48. uint8_t freq=3;
  49. uint8_t btncnt = 0;
  50. job0 () _task_ 0
  51. {
  52.   
  53.   while(1)
  54.   {
  55.     BTN = 1;
  56.     if(BTN == 0)
  57.     {
  58.       btncnt++;
  59.       if(btncnt > 10)
  60.       {
  61.         btncnt = 0;
  62.         freq = (freq+1)%5 + 2;
  63.         sysclk(freq);
  64.         LED2 = !LED2;
  65.       }
  66.     }
  67.     else
  68.       btncnt = 0;
  69.    
  70.     // 0.5s
  71.     LED1 = !LED1;
  72.     os_wait(K_TMO, 5, 0);
  73.   }
  74. }

复制代码


此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处


此帖出自单片机论坛

最新回复

  详情 回复 发表于 2017-10-16 08:54
点赞 关注
 

回复
举报

2

帖子

0

TA的资源

禁止访问

沙发
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 

回复

305

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
此帖出自单片机论坛
 
个人签名单价1元含税的USB和Touchkey单片机CH551G已大批量出货,试样QQ:1258305301
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表