STM32学习笔记—SysTick定时器
void SysTick_Configuration(void)
{
/* Select AHB clock(HCLK) as SysTick clock source 设置AHB时钟为SysTick时钟*/
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
/* Set SysTick Priority to 3 设置SysTicks中断抢占优先级 3, 从优先级0*/
NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 3, 0);
/* SysTick interrupt each 1ms with HCLK equal to 72MHz 每1ms发生一次SysTick中断*/
SysTick_SetReload(72000);
/* Enable the SysTick Interrupt */
SysTick_ITConfig(ENABLE);
}
延时函数,需要延时处调用:
view plaincopy to clipboardprint?
void Delay(u32 nTime)
{
/* Enable the SysTick Counter 允许SysTick计数器*/
SysTick_CounterCmd(SysTick_Counter_Enable);
TimingDelay = nTime;
while(TimingDelay != 0)
; //等待计数至0
/* Disable the SysTick Counter 禁止SysTick计数器*/
SysTick_CounterCmd(SysTick_Counter_Disable);
/* Clear the SysTick Counter 清零SysTick计数器*/
SysTick_CounterCmd(SysTick_Counter_Clear);
}
void Delay(u32 nTime)
{
/* Enable the SysTick Counter 允许SysTick计数器*/
SysTick_CounterCmd(SysTick_Counter_Enable);
TimingDelay = nTime;
while(TimingDelay != 0)
; //等待计数至0
/* Disable the SysTick Counter 禁止SysTick计数器*/
SysTick_CounterCmd(SysTick_Counter_Disable);
/* Clear the SysTick Counter 清零SysTick计数器*/
SysTick_CounterCmd(SysTick_Counter_Clear);
}
中断函数,定时器减至零时调用,放在stm32f10x_it.c文件中
view plaincopy to clipboardprint?
void SysTickHandler(void)
{
TimingDelay--;
}
尘埃粒子计数器相关文章:尘埃粒子计数器原理
评论