SysTick优先级在哪定义的

2019-07-20 11:24发布

找到了SysTick设置优先级的函数,默认设置优先级为0xF0,但是没找到调用的地方?
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks){
  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */

  SysTick->LOAD  = ticks - 1;                                  /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
  SysTick->VAL   = 0;                                          /* 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 (0);                                                  /* Function successful */
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
wuxp1993
2019-07-20 20:38
zuozhongkai 发表于 2016-10-21 16:43
那就说清楚什么例程,你直接一个函数提出来谁知道你有没有用滴答定时器。UCOS的话用汇编设置的滴答定时器 ...

你好。这个好像不是设置滴答定时器的,而是设置PendSV的优先级的。
因为NVIC_SYSPRI14   EQU     0xE000ED22   这句话中, 0xE000ED22是PendSV优先级寄存器。而STRB    R1, [R0]  这句话用于从R1中一个低8 位的字节数据传送到地址为0xE000ED22寄存器中。        

一周热门 更多>