zoukankan      html  css  js  c++  java
  • stm32 SysTick系统定时器

    它是一个24位向下递减的定时器,每计数一次所需时间为1/SYSTICK,SYSTICK是系统定时器时钟,它可以直接取自系统时钟,还可以通过系统时钟8分频后获取
    当定时器计数到0时,将从LOAD 寄存器中自动重装定时器初值,重新向下递减计数
    如果开启SysTick中断的话,当定时器计数到0,将产生一个中断信号

    SysTick

    void SysTick_Init(u8 SYSCLK)
    {
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); 
        fac_us=SYSCLK/8;    //1us次数             
        fac_ms=(u16)fac_us*1000;    //1ms次数                
    }
    
    void delay_us(u32 nus)
    {       
        u32 temp;            
        SysTick->LOAD=nus*fac_us;                   //时间初值           
        SysTick->VAL=0x00;                          //清空计数器
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;    //打开定时器   
        do
        {
            temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));       //等待时间到达   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;   //关闭计数器
        SysTick->VAL=0x00;                          //清空计数器  
    }
    
    void delay_ms(u16 nms)  //最大1864ms
    {                 
        u32 temp;          
        SysTick->LOAD=(u32)nms*fac_ms;
        SysTick->VAL=0x00;
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; 
        do
        {
            temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
        SysTick->VAL=0x00;
    }
  • 相关阅读:
    HDU
    Groundhog Build Home
    The Moving Points
    Problem I. Count
    Problem E. TeaTree
    树的启发式合并
    Special Segments of Permutation
    网络流24题
    2015-2016 Northwestern European Regional Contest (NWERC 2015)
    The 2018 ACM-ICPC Asia Beijing Regional Contest
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709582.html
Copyright © 2011-2022 走看看