<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > stm8s開發(fā)(四) CLOCK的使用:時鐘控制!

          stm8s開發(fā)(四) CLOCK的使用:時鐘控制!

          作者: 時間:2017-09-14 來源:網(wǎng)絡(luò) 收藏

            STM8S具有一個強大的時鐘系統(tǒng),內(nèi)部提供一個高速16M的RC振蕩器,和一個低速128K的RC振蕩器。

          本文引用地址:http://www.ex-cimer.com/article/201709/364352.htm

            時鐘控制器功能強大而且靈活易用。其目的在于使用戶在獲得最好性能的同時,亦能保證消耗的功率最低。用戶可獨立地管理各個時鐘源,并將它們分配到CPU或各個外設(shè)。主時鐘和CPU時鐘均帶有預(yù)分頻器。具有安全可靠的無故障時鐘切換機制,可在程序運行中將主時鐘從一個時鐘源切換到另一個時鐘源。

            一般來說,時鐘樹是配置時鐘、控制時鐘的依據(jù),所以需要掌握,以下是STM8S時鐘樹圖:

            從圖中看出,一共有3個時鐘源,分別是HSE(高速外部時鐘)、HSI(高速內(nèi)部時鐘)、LSI(低速內(nèi)部時鐘)。

            HSE(高速外部時鐘)可通過外部晶振提供,HSI(高速內(nèi)部時鐘)為16M的RC振蕩器,LSI(低速內(nèi)部時鐘)為128K的RC振蕩器。

            高速時鐘(HSE和HSI)可以通過分頻器進行降頻。降頻過后的時鐘和原本的時鐘都可以通過Master Clock Switch進行選擇,

            以下是初始化系統(tǒng)時鐘的函數(shù)(默認使用16M內(nèi)部RC):

            void Set_HSISpeed(void)

            {

            //啟用內(nèi)部高速晶振且無分頻16MHz

            CLK_ICKR|=0x01; //開啟內(nèi)部HSI

            while(!(CLK_ICKR&0x02));//HSI準備就緒

            CLK_SWR=0xe1; //HSI為主時鐘源

            CLK_CKDIVR=0x00; //HSI不分頻

            }

            如果需要切換時鐘,需要先等待時鐘穩(wěn)定:

            void Switch_LSISpeed(void)

            {

            CLK_SWCR|=0x02; //開啟切換

            CLK_ICKR|=0x08; //開啟LSI

            while(!(CLK_ICKR&0x10));//HSI準備就緒

            CLK_SWR=0xd2; //LSR為主時鐘源

            while((CLK_SWCR & 0x01)==0x01);//等待切換完成

            CLK_CKDIVR=0x00; //LSI不分頻

            CLK_SWCR&=(~0x02); //關(guān)閉切換

            }

            void Switch_HSISpeed(void)

            {

            CLK_SWCR|=0x02; //開啟切換

            CLK_ICKR|=0x01; //開啟內(nèi)部HSI

            while(!(CLK_ICKR&0x02));//HSI準備就緒

            CLK_SWR=0xe1; //HSI為主時鐘源

            while((CLK_SWCR & 0x01)==0x01);//等待切換完成

            CLK_CKDIVR=0x00; //HSI不分頻

            CLK_SWCR&=(~0x02); //關(guān)閉切換

            }

            如果想直接降頻,只需要設(shè)置始終分頻:

            void Set_CPU_Full_Speed(void)

            {

            CLK_CKDIVR=0x00; //HSI不分頻

            }

            void Set_CPU_Low_Speed(void)

            {

            CLK_CKDIVR=0x07; //HSI 128分頻

            }

            以上就是初始化時鐘的代碼,一般用于mian函數(shù)的第一句話,方便以后計算其他外設(shè)的時鐘頻率。

            附上在IAR環(huán)境下的項目工程,包括了SPI、IIC、PWM、AWU、USART、EEPROM等片上硬件的初始化代碼。

            http://download.csdn.net/detail/devintt/9454188



          關(guān)鍵詞: stm8s CLOCK

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();