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;
    }
  • 相关阅读:
    【引用】Android.mk简介
    android02android的四大组件
    rpm 安装指令全
    android04activity的布局管理器
    代码积累1统计图
    清除防火墙所有配置规则
    代码积累2tab页面滑动效果
    RHEL5 配置YUM源 安装RZSZ
    系统安全漏洞扫描软件
    liunx下防火墙的配置
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709582.html
Copyright © 2011-2022 走看看