• 系统滴答定时器(SysTick)中断配置


    系统滴答定时器(SysTick)中断配置

    在STM32标准库中是通过SysTick_Config()函数配置时钟中断的,然后SysTick_Handler()函数自动定时触发其中的函数。

    	if(SysTick_Config(SystemCoreClock/1000))
    		while(1);
    	////////////////////////////////////////
    	/*    系统中断处理函数     */
    	void SysTick_Handler(void)
    	{
    		/* 定义时钟中断处理函数 */
    	}
    

    库文件中对SysTick_Config()函数的定义如下所示:

    __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
    {
      if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) { return (1UL); }    /* Reload value impossible 
      */
      SysTick->LOAD  = (uint32_t)(ticks - 1UL); /* set reload register */
      NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
      SysTick->VAL   = 0UL;  /* 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 (0UL);                                                     /* Function successful */
    }
    

    SysTick_Config()函数内部主要是对SysTick寄存器的控制, 最主要是修改其中的重载计数值,然后设置中断优先级,配置控制寄存器。

    • SysTick->CTRL,
      控制和状态寄存器, 位[0]是使能位; 位[1]TICKINT 计数将为0时是否触发SysTick Handler; CLKSOURCE 时钟源; COUNTFLAG 计数是否减为0.
    • SysTick->LOAD,
      重装载寄存器, 作用是当计数减为0时,将特定的初始值装载到当前值寄存器中。
    • SysTick->VAL,
      当前值寄存器, 当前计数值,每一次系统中断就减小1
    • SysTick->CALIB,
      校准值寄存器
  • 相关阅读:
    如何开启无线网卡
    E-SATA接口
    sata express接口
    联想服务器驱动
    国家信息安全漏洞共享平台
    SQL SERVER 性能调优
    计算机网络知识库
    CCNP 视频
    ORACLE 培训 -相克军
    phxsql
  • 原文地址:https://www.cnblogs.com/gexin/p/7474219.html
Copyright © 2020-2023  润新知