1.定时器主要由时钟源、分频器、基准时钟、计数器和重装载值寄存器组成

  2.单片机定时器都是通过计数来实现计时, 而滴答定时器是Cortex-M3内核自带的一个24位向下计数的定时器 

  3.SysTick定时器被捆绑在NVIC中, 用于产生SysTick异常。例如: 实现1ms计时时间, 定时器时钟频率为
72MHz,使用内核时钟( FCLK) , STK_LOAD寄存器为计
72000个数实现1ms计时。
  

void Delay_Init(void)
{
//    SysTick->VAL = 0;//计数器清0
//    //使能计数器  中断  内核时钟
//    SysTick->CTRL |=(1<<0)|(1<<1)|(1<<2);
//    SysTick->LOAD = 72000-1;
//    NVIC_SetPriority(SysTick_IRQn,0xf);   // 11 11
    if(SysTick_Config(72000)==1)
    {
        while(1); //错误
    }
}
/*
    函数名称:Delay_ms
    函数功能:ms延时
    函数参数:time -- 延时时间
    函数返回值:无
*/
void Delay_ms(uint32_t time)
{
    uint32_t nowtime = runtime;
    while(runtime < nowtime + time);    
}
SysTick初始化---Delay_Init------延时1ms

可以借由此滴答时钟进行时间片的实验  

uint32_t runtime = 0; //记录系统运行的时间
uint32_t ledrun[2]={0,300}; //ledrun[0]  -- 起始时间 
                                                        //ledrun[1]  -- 结束时间
uint32_t beeprun[2] = {0,500};
uint32_t keyrun[2] = {0,10};
// 1ms产生一次中断
void SysTick_Handler(void)
{
    runtime++;
    ledrun[0]++;
    beeprun[0]++;
    keyrun[0]++;
}
时间片

  Systick库函数相关函数

  STM32之滴答定时器

 

 









相关文章: