单片机成长之路(stm8基础篇)- 025 stm8 时钟切换

stm8 时钟切换;

复制代码
 1 /************************************ 时钟设置 ************************************/
 2 // 时钟 0:内部高速 1:内部低速 2:外部 3:保留
 3 void set_System_clock(char clock_mode){
 4   // set CPUDIV
 5   CLK_CKDIVR &= 0xf8;CLK_CKDIVR |= 0x00;        // 设置 CPUDIV 不分频
 6   switch(clock_mode){
 7     case 0:{        // set HSI
 8       CLK_CKDIVR &= 0xe7;CLK_CKDIVR |= 0x00;    // 设置 HSIDIV 不分频
 9     }break;
10     case 1:{        // set LSI
11       CLK_ICKR |= MASK_CLK_ICKR_LSIEN;     /* 打开内部低速时钟源 */  
12       while(CLK_ICKR_LSIRDY == 0);         /* 等待时钟源信号稳定,稳定后CLK_ICKR_LSIRDY置位 */
13       CLK_SWCR = MASK_CLK_SWCR_SWEN;       /* 转换使能,采用自动转换方式 */
14       CLK_SWR  = 0xD2;                     /* 选择内部低速时钟源 */
15       while(!(CLK_SWCR & 0x08));           /* 切换完成后,SWIF置位 */
16     }break;
17     case 2:{        // set HSE
18       CLK_ECKR |= MASK_CLK_ECKR_HSEEN;     /* 打开外部高速时钟源 */  
19       while(CLK_ECKR_HSERDY == 0);         /* 等待时钟源信号稳定,稳定后CLK_ECKR_HSERDY置位 */
20       CLK_SWCR = MASK_CLK_SWCR_SWEN;       /* 转换使能,采用自动转换方式 */
21       CLK_SWR  = 0xB4;                     /* 选择外部高速时钟源 */
22       while(!(CLK_SWCR & 0x08));           /* 切换完成后,SWIF置位 */
23     }break;
24     case 3:{        // 保留
25       ;
26     }break;
27     default:break;
28   }
29 }
复制代码

 

posted @   极客先锋  阅读(677)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2017-10-07 centos7 安装遇到的问题
2016-10-07 Arduino 报错总结
点击右上角即可分享
微信分享提示