新聞中心

        STM32 SYSTICK

        作者: 時間:2016-11-24 來源:網絡 收藏
        voidSysTick_Config(void);//SysTick定時器配置

        voidDelay_Ms(u32);//定時時間配置
        voidvoidSysTickHandler(void);//中斷定時時間處理函數
        staticvu32TimingDelay;//中斷處理函數

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


        //SysTick設置
        voidSysTick_Config(void)
        {

        SysTick_CounterCmd(SysTick_Counter_Disable);


        SysTick_ITConfig(DISABLE);


        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);


        SysTick_SetReload(9000);
        //系統嘀嗒校準值固定到9000,當系統嘀嗒時鐘設定為9兆赫,產生1ms時基。



        SysTick_ITConfig(ENABLE);


        }


        voidDelay_Ms(u32nTime)
        {

        SysTick_CounterCmd(SysTick_Counter_Enable);

        TimingDelay=nTime;

        while(TimingDelay!=0)
        {
        }


        SysTick_CounterCmd(SysTick_Counter_Disable);

        SysTick_CounterCmd(SysTick_Counter_Clear);

        }


        voidSysTickHandler(void)
        {
        if(TimingDelay!=0x00)
        {
        TimingDelay--;
        }
        }
        這里所有使用的都是在有stm32f10x_systick.c這個文件的時候,這個是2.0中才有的文件,3.0中使用并不是這樣使用的@!

        在這里說明一下的是,必須要注意,systick和普通的中斷一樣,當計數器溢出時就會產生中斷,必須要再中斷處理函數中處理,但是沒有經過NVIC的控制,這個是需要注意的,沒有使用NVIC配置systick。

        其中systick異常,異常號15,這個定時的異常的主要功能用于操作系統提供時鐘信號。

        但是當產生恒定的systick中斷頻率:最簡單的作法就是:直接把TENMS的值寫入重裝載寄存器,這樣一來,只要沒突破系統極限,就能做到每10ms來一次systick異常,如果需要其他的systick異常周期,則可以根據TENMS的值加以比例計算,只不過,在少數情況下,CM3芯片可能無法準確地提供TENMS的值(如,CM3的叫轉輸入信號被拉低)。

        Systick定時器除了能服務于操作系統之外,還能用于其他目的:如作為一個鬧鐘,用于測量時間等。要注意的是,當處理器在調試器件被喊停hatl時,則systick定時器亦將暫停運作。



        關鍵詞: STM32SYSTIC

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 图木舒克市| 陆河县| 光山县| 玉溪市| 东至县| 河北省| 唐河县| 吉林省| 沙坪坝区| 扶余县| 自贡市| 广灵县| 柏乡县| 石城县| 汕尾市| 凤山县| 柳江县| 高密市| 灵璧县| 阳原县| 哈巴河县| 石屏县| 东莞市| 台前县| 临猗县| 南开区| 田东县| 潞城市| 凯里市| 武川县| 山东省| 兴和县| 镇江市| 华容县| 探索| 乌审旗| 莆田市| 濮阳县| 博爱县| 永州市| 南丹县|