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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > stm32學(xué)習(xí)之四

          stm32學(xué)習(xí)之四

          作者: 時間:2016-12-03 來源:網(wǎng)絡(luò) 收藏
          systick(滴答定時器):

          系統(tǒng)的滴答定時器可以測試的例子是,將開發(fā)板上的LED等輪流點亮即可(我選擇的是1s輪流點亮三個LED等)。
          首先,系統(tǒng)滴答定時器的特點是,設(shè)置開啟定時器的話,會自動計數(shù),這個時候,計數(shù)到0的時候,會觸發(fā)中斷。
          可以設(shè)置一個靜態(tài)的變量,全局進行計數(shù),從而延時。

          步驟:
          1、建立一個SysTick.h文件,代碼如下:
          #ifndef _SYSTICK_H
          #define _SYSTICK_H

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

          #include "stm32f10x.h"
          void SysTick_Init(void);

          //void timeDecrement(void);

          void delay(__IO uint32_t count);

          #endif
          2、建立一個SysTick.c文件,代碼如下:
          #include "SysTick.h"
          static __IO uint32_t timeCount;

          void SysTick_Init(void)
          {
          if(SysTick_Config(SystemCoreClock/1000))//配置1ms的中斷
          {
          while(1);
          }
          SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
          }

          void delay(__IO uint32_t count)
          {
          timeCount = count;
          SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
          while(timeCount!=0);
          }

          void timeDecrement(void)
          {
          if(timeCount!=0x00)
          {
          timeCount--;
          }
          }

          3、中斷產(chǎn)生后,會執(zhí)行stm32f10x_it.c文件:
          會自動執(zhí)行這個函數(shù):
          SysTick_Handler()
          那么在函數(shù)內(nèi)部進行處理函數(shù):
          void SysTick_Handler(void)
          {
          timeDecrement();
          }

          4、LED的操作不變:
          led.c文件:
          #include "led.h"
          void LED_GPIO_Config(void)
          {
          GPIO_InitTypeDef GPIO_InitStructure;
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

          GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
          GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
          GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

          GPIO_Init(GPIOC,&GPIO_InitStructure);

          GPIO_SetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5);
          }
          led.h文件:
          #ifndef _LED_H
          #define _LED_H
          #include "stm32f10x.h"

          #define ON 1
          #define OFF 0

          #define LED1(a) if (a)
          GPIO_ResetBits(GPIOC,GPIO_Pin_3);
          else
          GPIO_SetBits(GPIOC,GPIO_Pin_3)
          #define LED2(a) if (a)
          GPIO_ResetBits(GPIOC,GPIO_Pin_4);
          else
          GPIO_SetBits(GPIOC,GPIO_Pin_4)
          #define LED3(a) if (a)
          GPIO_ResetBits(GPIOC,GPIO_Pin_5);
          else
          GPIO_SetBits(GPIOC,GPIO_Pin_5)
          void LED_GPIO_Config(void);


          #endif

          主函數(shù)如下:
          /******************** (C) COPYRIGHT 2013**************************
          * 文件名 :main.c
          * 描述 :用3.5.0版本建的工程模板。
          * 實驗平臺:野火STM32開發(fā)板
          * 庫版本 :ST3.5.0
          *
          * 作者 :wit_yuan
          * 版本 : v1.0
          * 時間 : 2013年4月27日
          **********************************************************************************/
          #include "stm32f10x.h"
          #include "led.h"
          #include "SysTick.h"

          /*
          * 函數(shù)名:main
          * 描述 : 主函數(shù)
          * 輸入 :無
          * 輸出 : 無
          */
          int main(void)
          {
          LED_GPIO_Config();
          SysTick_Init();
          while(1)
          {
          LED1(ON);
          delay(1000);
          LED1(OFF);
          delay(1000);
          LED2(ON);
          delay(1000);
          LED2(OFF);
          delay(1000);
          LED3(ON);
          delay(1000);
          LED3(OFF);
          delay(1000);


          }

          }

          整個實驗過程完畢。



          關(guān)鍵詞: STM32systic

          評論


          技術(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); })();