乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      STM32 SysTick 系統(tǒng)時鐘 超簡易定時器SysTick

       Allen 圖書館 2011-09-17

      STM32 SysTick 系統(tǒng)時鐘 超簡易定時器SysTick  

      2010-05-30 19:45:15|  分類: stm32_ |  標簽: |字號 訂閱

      /**
      * @brief Configures the SysTick. 系統(tǒng)時鐘配置函數(shù)   main.c
      * @param None
      * @retval None
      */

      void SysTick_Configuration(void)
      {
      /* Setup SysTick Timer for 100 msec interrupts */
      if (SysTick_Config((SystemCoreClock) / 10))     //     1/10s=100ms
      {
         /* Capture error */
          while (1);
      }

         NVIC_SetPriority(SysTick_IRQn, 0x0);
      }

      /**
      * @brief This function handles SysTick Handler. 系統(tǒng)時鐘中斷函數(shù) stm32f10x_it.c
      * @param None
      * @retval None
      */

      void SysTick_Handler(void)
      {
      /* Generate TIM1 COM event by software */
      TIM_GenerateEvent(TIM1, TIM_EventSource_COM);
      }

      SysTick_Config(SystemFrequency / 10)   函數(shù)的形參就是systick重裝定時器的值。
      systck計數(shù)頻率為每秒72000000次,所以72000次就是1/10秒,也就是100ms。

      SysTick是1個24bit遞減計數(shù)器,通過對SysTick控制與狀態(tài)寄存器的設置,可選擇HCLK時鐘(72M)或HCLK的8分頻(9M,缺省是這個)作為SysTick的時鐘源。
      SysTick的重裝寄存器決定了定時器頻率。

       

      若SysTick的時鐘源是72M,   SystemFrequency = 72000000Hz
      所以 SysTick_Config(SystemFrequency / 1000); 就是1ms時基。

      //     1/1000 s=1ms

      關于SysTick校準寄存器的介紹  (大多數(shù)情況下,我們可以不必理會它)


          校準值寄存器提供了這樣一個解決方案:它使系統(tǒng)即使在不同的CM3產品上運行,也能產生恒定的SysTick中斷頻率。最簡單的作法就是:直接把TENMS的值寫入重裝載寄存器,這樣一來,只要沒突破系統(tǒng)極限,就能做到每10ms來一次 SysTick異常。如果需要其它的SysTick異常周期,則可以根據(jù)TENMS的值加以比例計算。只不過,在少數(shù)情況下,CM3芯片可能無法準確地提供TENMS的值(如,CM3的校準輸入信號被拉低),所以為保險起見,最好在使用TENMS前檢查器件的參考手冊。
         SysTick定時器除了能服務于操作系統(tǒng)之外,還能用于其它目的:如作為一個鬧鈴,用于測量時間等。要注意的是,當處理器在調試期間被喊停(halt)時,則SysTick定時器亦將暫停運作。

       

       

      下面利用 SysTick 產生的 硬件延時函數(shù) 延時 dly_ms 毫秒

      /*******************************************************************************
      * Function Name : SysTickHandler
      * Description    :系統(tǒng)時鐘,一般調教到1MS中斷一次
      *******************************************************************************/

      void SysTick_Handler(void)
      {
      if(Timer1)
         Timer1--;
      }

       

      /********************************************
      **函數(shù)名:SysTickDelay
      **功能:使用系統(tǒng)時鐘的硬延遲
      **注意事項:一般地,不要在中斷中調用本函數(shù),否則會存在重入問題.另外如果屏蔽了全局中斷,則不要使用此函數(shù)
      ********************************************/

      volatile u16 Timer1;
      void SysTickDelay(u16 dly_ms)
      {
      Timer1=dly_ms;
      while(Timer1);
      }

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多