新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM8學習-內部時鐘切換

        STM8學習-內部時鐘切換

        作者: 時間:2016-11-26 來源:網絡 收藏
        STM8內部有時鐘切換功能,可以在需要時變換時鐘的頻率。板子為STM8_Discovery,LED為PD0。

        程序如下:

        本文引用地址:http://www.104case.com/article/201611/321588.htm

        //軟件環境:IAR FOR STM8 V1.0
        //作者:Nicole

        //功能:STM8的內部時鐘分頻切換
        //日期:2010.11.04
        #include "iostm8s105c6.h"

        // 函數功能:延時函數
        // 輸入參數:ms -- 要延時的毫秒數,這里假設CPU的主頻為2MHZ
        void DelayMS(unsigned int ms)
        {
        unsigned char i;
        while(ms != 0)
        {
        for(i=0;i<250;i++)
        {
        }
        for(i=0;i<75;i++)
        {
        }
        ms--;
        }
        }

        //GPIO口初始化
        void GPIO_init(void)
        {
        PD_DDR = 0x01;// 配置PD端口的方向寄存器PD0輸出
        PD_CR1 = 0x01;// 設置PD0為推挽輸出
        PD_CR2 = 0x00;
        }

        //時鐘初始化
        void CLK_init(void)
        {
        CLK_SWR = 0xE1;// 選擇芯片內部的16MHZ的RC振蕩器為主時鐘
        }
        main()
        {
        int i;
        GPIO_init();
        CLK_init();
        while(1)// 進入無限循環
        {

        // 下面設置CPU時鐘分頻器,使得CPU時鐘=主時鐘/4
        // 通過發光二極管,可以看出,程序運行的速度確實明顯下降了
        CLK_CKDIVR = 0x1A;// 主時鐘 = 16MHZ/8= 2MHz
        // CPU時鐘 = 主時鐘 / 4= 500KHZ
        for(i=0;i<10;i++)
        {
        PD_ODR = 0x01;
        DelayMS(100);
        PD_ODR = 0x00;
        DelayMS(100);
        }
        // 下面設置CPU時鐘分頻器,使得CPU時鐘=主時鐘
        CLK_CKDIVR = 0x0A;// 主時鐘 = 16MHZ/2 =8MHz
        // CPU時鐘 = 主時鐘/4 = 2MHZ
        for(i=0;i<10;i++)
        {
        PD_ODR = 0x01;
        DelayMS(100);
        PD_ODR = 0x00;
        DelayMS(100);
        }
        }

        }



        關鍵詞: STM8內部時

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 保山市| 泽库县| 香河县| 晋江市| 岳西县| 乌兰浩特市| 拉孜县| 龙岩市| 安康市| 壶关县| 岢岚县| 句容市| 泸溪县| 永顺县| 通山县| 黔江区| 昆明市| 河源市| 抚州市| 瑞金市| 常州市| 通化市| 太原市| 景宁| 陆河县| 泸州市| 鹤壁市| 海林市| 大姚县| 天台县| 类乌齐县| 崇仁县| 大新县| 沈阳市| 延津县| 高要市| 西宁市| 留坝县| 宁武县| 新民市| 肥西县|