2016年7月21日 星期四

STM32F411xC 基礎教學 :SysTick使用方式

本篇基於STM32F411xC平台,紀錄SysTick的使用方式。

實驗說明:
    使用GPIO(PC15)來觀察程式進入SysTick_Handler,到下一次進入SysTick_Handler的時間。

Main function:
int main(void)
{

  RCC_ClocksTypeDef RCC_Clocks;
  RCC_GetClocksFreq(&RCC_Clocks);

  SysTick_Config(960000+1);//10ms中斷一次

  while ( 1 ) {
    if (flag_10ms_period){
      flag_10ms_period = 0;
      //每10ms要執行的function
    }
  }
}


SysTick_Handler function:
extern volatile uint8_t flag_10ms_period;
void SysTick_Handler(void)
{
  GPIO_SetBits(GPIOC, GPIO_Pin_15);

  flag_10ms_period = 1;

  GPIO_ResetBits(GPIOC, GPIO_Pin_15);
}


    SysTick會依照你使用MCU的系統頻率來計算中斷次數,下圖為STM32F411xC的SysClk,這次範例要計算每10ms中斷一次,計算方式為96000MHz(實體頻率) * 10,並在main.c中加入SysTick_Config(96000*10)

STM32F411xC Sysclk
使用邏輯分析儀觀察GPIO:
    由下圖觀察到,由於我們在SysTick_Handler中有做將GPIO拉high->low的動作,因此觀察GPIO high的間格時間,即可知道SysTick是否依我們的設計每10m觸發一次。



沒有留言:

張貼留言