×
单片机 > 单片机程序设计 > 详情

STM32 SYSTICK

发布时间:2020-09-03 发布时间:
|
void SysTick_Config(void);//SysTick定时器配置 

void Delay_Ms(u32);//定时时间配置 
void void SysTickHandler(void);//中断定时时间处理函数 
static vu32 TimingDelay;//中断处理函数 

 
//SysTick设置 
void SysTick_Config(void) 

     
    SysTick_CounterCmd(SysTick_Counter_Disable); 
     
     
    SysTick_ITConfig(DISABLE); 
     
     
    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); 
     
     
    SysTick_SetReload(9000); 
    //系统嘀嗒校准值固定到9000,当系统嘀嗒时钟设定为9 兆赫,产生1ms 时基。 
     
 
     
    SysTick_ITConfig(ENABLE); 
     
 

 
 
void Delay_Ms(u32 nTime) 

     
    SysTick_CounterCmd(SysTick_Counter_Enable); 
     
    TimingDelay nTime; 
 
    while(TimingDelay != 0) 
    
    
     
     
    SysTick_CounterCmd(SysTick_Counter_Disable); 
     
    SysTick_CounterCmd(SysTick_Counter_Clear); 
     

  
 
void SysTickHandler(void) 

    if (TimingDelay != 0x00) 
    
        TimingDelay--; 
    

     这里所有使用的都是在有stm32f10x_systick.c这个文件的时候,这个是2.0中才有的文件,3.0中使用并不是这样使用的@!
 

在这里说明一下的是,必须要注意,systick和普通的中断一样,当计数器溢出时就会产生中断,必须要再中断处理函数中处理,但是没有经过NVIC的控制,这个是需要注意的,没有使用NVIC配置systick。

其中systick异常,异常号15,这个定时的异常的主要功能用于操作系统提供时钟信号。

但是当产生恒定的systick中断频率:最简单的作法就是:直接把TENMS的值写入重装载寄存器,这样一来,只要没突破系统极限,就能做到每10ms来一次systick异常,如果需要其他的systick异常周期,则可以根据TENMS的值加以比例计算,只不过,在少数情况下,CM3芯片可能无法准确地提供TENMS的值(如,CM3的叫转输入信号被拉低)。

Systick定时器除了能服务于操作系统之外,还能用于其他目的:如作为一个闹钟,用于测量时间等。要注意的是,当处理器在调试器件被喊停hatl时,则systick定时器亦将暂停运作。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址