一、 SysTick是一个定时器,只是它放在了NVIC中,主要的目的是为了给操作系统提供一个硬件上的中断(号称滴答中断)。只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息。SysTick是基于32M高频晶振工作,所以32M不停止,则嘀嗒定时器一直存在。
SysTick源码参考:
/*Readme * * if程序主频为60M,SysTick_Config设置为60M,则1s进一次中断; * else程序测试1ms进1次中断,while循环中1000次计数一次,最终显示1s打印一次,可证明1ms进1次中断。 */ #include "CH58x_common.h" volatile uint32_t time , timee= 0; void DebugInit(void) { GPIOA_SetBits(GPIO_Pin_9); GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU); GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); UART1_DefInit(); } int main() { SetSysClock(CLK_SOURCE_PLL_60MHz); DebugInit(); /* 配置串口调试 */ PRINT("Start @ChipID=%02X\n", R8_CHIP_ID); SysTick_Config(60000000); while(1){ PRINT("SYS_GetSysTickCnt = %d\r\n", SYS_GetSysTickCnt()); } } __INTERRUPT __HIGH_CODE void SysTick_Handler() /***嘀嗒定时器中断函数***/ { SysTick->SR = 0; //清除中断标志 }
标签:定时器,中断,void,嘀嗒,CH58x,SysTick,GPIO From: https://www.cnblogs.com/gscw/p/17159115.html