热度 2
2024-1-21 14:34
269 次阅读|
0 个评论
** ************************************************************************** ** -------------------------------------------------------------------- ** ** @name : Systick_init ** @brief : None ** @param : None ** @retval : None ** @author data : Depressed 2023-09-06 ** @version : v1.0 ** -------------------------------------------------------------------- ** ** @modifier data : None ** @version : None ** @description : None ** -------------------------------------------------------------------- ** ** @attention : None ** -------------------------------------------------------------------- ** ************************************************************************** **/ void Systick_init(void) { /*下面这两种写法都可以*/ // if (SysTick_Config(SystemCoreClock / 1000)) if (SysTick_Config(RCC_GetSysClockFreq() / 1000)) { // Capture error while (1); } // Configure the SysTick handler priority NVIC_SetPriority(SysTick_IRQn, 0x0);//SysTickinterrupt priority class set 这段代码是一个名为`SysTick_init`的函数,用于初始化系统定时器(SysTick)。它使用了两个版本的`SysTick_Config`函数来配置系统定时器的时钟频率。 首先,通过调用`SystemCoreClock / 1000`或`RCC_GetSysClockFreq() / 1000`来设置系统定时器的时钟频率。这两个表达式中的任何一个都可以得到正确的时钟频率值。 接下来,使用`if (SysTick_Config(...))`语句来检查配置是否成功。如果配置失败,将进入一个无限循环,直到配置成功为止。 最后,使用`NVIC_SetPriority(SysTick_IRQn, 0x0)`来设置系统定时器的中断优先级。这里的`SysTick_IRQn`是系统定时器中断的名称,而`0x0`表示最低优先级。 这段代码的目的是初始化系统定时器,以便在程序中进行计时和中断处理。