新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32學習筆記——使用SysTick定時器做延時

        STM32學習筆記——使用SysTick定時器做延時

        作者: 時間:2016-11-28 來源:網絡 收藏

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

        例:

        選擇1/8的AHB時鐘作為SysTick時鐘源

        [cpp]view plaincopy
        1. SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);

        3.例程

        3.1程序代碼

        本例程代碼在點亮LED燈例程代碼上做修改,使用SysTick定時延時,除延時外其他代碼不變,與SysTick相關語句給予注釋。

        [cpp]view plaincopy
        1. #include"stm32f10x.h"
        2. voidDelay(u32nTime);//聲明延遲函數
        3. voidGPIO_Configuration(void);
        4. intmain(void)
        5. {
        6. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
        7. GPIO_Configuration();
        8. while(SysTick_Config(SystemCoreClock/1000)!=0);//配置SysTick,裝入初始值,裝載值根據時鐘源頻率而定,72MHz時鐘源則產生1ms中斷需要裝載值為(72000000/1000)
        9. while(1)
        10. {
        11. GPIO_ResetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_9);
        12. GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_8);
        13. Delay(1000);
        14. GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_8);
        15. GPIO_SetBits(GPIOC,GPIO_Pin_7|GPIO_Pin_9);
        16. Delay(1000);
        17. GPIO_Write(GPIOC,0x0140);
        18. Delay(1000);
        19. GPIO_Write(GPIOC,0x0280);
        20. Delay(1000);
        21. }
        22. }
        23. voidGPIO_Configuration(void)
        24. {
        25. GPIO_InitTypeDefGPIO_InitStructure;
        26. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
        27. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        28. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        29. GPIO_Init(GPIOC,&GPIO_InitStructure);
        30. }
        31. volatileu32TimingDelay;//定義全局變量,其聲明在stm32f10x_it.c中
        32. voidDelay(u32nTime)//定義延遲函數
        33. {
        34. TimingDelay=nTime;//將延遲數賦予全局變量
        35. while(TimingDelay!=0);
        36. }

        其中,在stm32f10x_it.c中:

        [cpp]view plaincopy
        1. externvolatileu32TimingDelay;//聲明全局變量
        2. voidSysTick_Handler(void)
        3. {
        4. TimingDelay--;
        5. }

        3.2結果

        編譯燒入開發板后,LED等以1s的時間精確交替閃爍。

        參考文獻:

        [1]JosephYiu,宋巖譯.《Cortex-M3權威指南》[EB/OL].http://ishare.iask.sina.com.cn/f/11378333.html?retcode=0,2010-11-05/2012-09-09.

        [2]ST.《STM32固件庫2.0.3與3.0版本的比較中文版》[EB/OL].http://ishare.iask.sina.com.cn/f/18297257.html?from=like,2011-08-22/2012-09-09.

        [3]Xxbing8.STM32_SysTick[EB/OL].http://hi.baidu.com/xxbing8/item/c99ea4f53f996ad042c36ab82012-06-14/2012-09-09.



        上一頁 1 2 3 下一頁

        關鍵詞: STM32SysTick定時

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 甘孜县| 东莞市| 阿瓦提县| 龙门县| 永吉县| 丰原市| 荆门市| 崇明县| 申扎县| 思南县| 曲靖市| 布尔津县| 涿鹿县| 封丘县| 新郑市| 普安县| 崇州市| 红安县| 浦城县| 昌黎县| 麻栗坡县| 渝北区| 延寿县| 永靖县| 龙南县| 朝阳区| 新化县| 三江| 慈溪市| 宣恩县| 张掖市| 密山市| 昌宁县| 宁陕县| 庄河市| 青州市| 青岛市| 海门市| 通化市| 大名县| 三江|