久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

stm32 SysTick的詳細配置

作者:佚名   來源:本站原創   點擊數:  更新時間:2014年03月28日   【字體:

一、文件main.c
 
#include "stm32f10x.h"
#include "SysTick.h"
/*
 * 函數名:main
 * 描述  :主函數
 * 輸入  :無
 * 輸出  :無
 */
int main(void)
{
/* 配置SysTick 為10us中斷一次 */
    SysTick_Init();
    for(;;)
    {
        Delay_us(50000);    // 50000 * 10us = 500ms
    }
   
}
 
二、文件SysTick..c對SysTick_Init進行初始化
 
void SysTick_Init(void)
{
/* SystemFrequency / 1000    1ms中斷一次
 * SystemFrequency / 100000 10us中斷一次
 * SystemFrequency / 1000000 1us中斷一次
 */
//if (SysTick_Config(SystemFrequency / 100000))// ST3.0.0庫版本
    if (SysTick_Config(SystemCoreClock / 100000))// ST3.5.0庫版本
    {
        while (1);/* Capture error */
    }
    SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;// 關閉滴答定時器
}
 
三、文件system_stm32f10x.c中定義SystemCoreClock
 
uint32_t SystemCoreClock         = SYSCLK_FREQ_72MHz;        /*!< System Clock Frequency (Core Clock) */
 
四、文件core_cm3.h里的函數SysTick_Config
 
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */                                                            
  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */
  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                  /* Function successful */
}
 
五、文件core_cm3.h
 
#define SysTick_CTRL_CLKSOURCE_Pos          2                                   /*!< SysTick CTRL: CLKSOURCE Position */
#define SysTick_CTRL_CLKSOURCE_Msk         (1ul << SysTick_CTRL_CLKSOURCE_Pos)  /*!< SysTick CTRL: CLKSOURCE Mask */
 
#define SysTick_CTRL_TICKINT_Pos            1                                   /*!< SysTick CTRL: TICKINT Position */
#define SysTick_CTRL_TICKINT_Msk           (1ul << SysTick_CTRL_TICKINT_Pos)    /*!< SysTick CTRL: TICKINT Mask */
 
#define SysTick_CTRL_ENABLE_Pos             0                                   /*!< SysTick CTRL: ENABLE Position */
#define SysTick_CTRL_ENABLE_Msk            (1ul << SysTick_CTRL_ENABLE_Pos)     /*!< SysTick CTRL: ENABLE Mask */
 
/* SysTick Reload Register Definitions */
#define SysTick_LOAD_RELOAD_Pos             0                                    /*!< SysTick LOAD: RELOAD Position */
#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos)
 
六、文件SysTick.c
 
static __IO u32 TimingDelay;
 
void Delay_us(__IO u32 nTime)
{
    TimingDelay = nTime;
    SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;// 使能滴答定時器
    while(TimingDelay != 0);
}
 
七、文件SysTick.c
 
void TimingDelay_Decrement(void)
{
    if (TimingDelay != 0x00)
    {
        TimingDelay--;
    }
}
 
八、文件stm32f10x_it.c
 
SystemCoreClock / 100000=10us中斷一次,TimingDelay為總中斷次數
extern void TimingDelay_Decrement(void);
void SysTick_Handler(void)
{
    TimingDelay_Decrement();
}

 

關閉窗口

相關文章

主站蜘蛛池模板: 91中文字幕在线 | 中文字幕在线播放第一页 | 中文字幕视频在线 | aa级毛片毛片免费观看久 | 国产精品欧美一区二区 | 国产伦一区二区三区视频 | 在线观看第一页 | 91婷婷韩国欧美一区二区 | 狠狠干网站| 欧美精品一区二区在线观看 | 国产一区二区电影 | 91婷婷韩国欧美一区二区 | 中文字幕一区二区三区在线观看 | 日韩中文字幕一区二区 | 久久久久久久一区 | 91久久精品日日躁夜夜躁欧美 | 国产精品免费看 | 国产精品久久久久久久久久三级 | 一区二区三区精品视频 | 久久精品 | 日韩精彩视频 | 成人精品国产免费网站 | 久久亚洲视频网 | 不卡的av在线 | 我想看国产一级毛片 | 日本成人片在线观看 | 欧美色综合一区二区三区 | 欧美日韩精品一区 | 91精品久久久久久久久 | 久久午夜视频 | 一级毛片成人免费看a | 蜜臀久久99精品久久久久野外 | 丁香久久 | av一区二区三区四区 | 中文字幕一区二区三区乱码图片 | 国产69精品久久99不卡免费版 | 久久精品亚洲精品国产欧美 | 亚洲欧美一区二区三区1000 | 国产情侣久久 | 天天拍天天操 | 亚洲精品久久久久久久久久久久久 |