STM32--SYSTICK超简易定时器
当然CORTEX-M3独有的定时功能可是超级简单的 那就是SySTick,所谓的系统定时器.配置方式简单
简单的不能再简单,因为STM32 的库函数已经帮我们搞好了,只需要调用一个函数,就可以配
置系统时钟的频率和开启系统时钟的中断.呵呵....不过这么好用的定时器只有一个。
//SYSTICK 分频--1ms的系统时钟中断
if (SysTick_Config(SystemFrequency / 1000))
{
/* Capture error */
while (1);
}
就是这么简单,系统就会产生一个1MS 的系统时钟中断(如果除数是500,那么当然地就是
2MS的中断了).中断函数是:
void SysTick_Handler(void);
这个函数将以每1MS 就会运行一次,而且进入中断后不需要清除任何标志位,特省时间.而且
还有点要说明的,SysTick是24 位倒计时的.设置的定时值最大就是2 的24 次方个系统时钟
---已经很大了.
直接 SysTick_Config(SystemFrequency / 1000); 也行。
/***********************************************
const uint32_t SystemFrequency = SYSCLK_FREQ_72MHz;
#define SYSCLK_FREQ_72MHz 72000000
************************************************/
/*******************************************************************************
* Function Name : SysTickHandler
* Description :系统时钟,一般调教到1MS中断一次
*******************************************************************************/
void SysTick_Handler(void)
{
if(Timer1)
Timer1--;
}
/********************************************
**函数名:SysTickDelay
**功能:使用系统时钟的硬延迟
**注意事项:一般地,不要在中断中调用本函数,否则会存在重入问题.另外如果屏蔽了全局中断,则不要使用此函数
********************************************/
volatile u16 Timer1;
void SysTickDelay(u16 dly_ms)
{
Timer1=dly_ms;
while(Timer1);
}
/**********************************************************************************
3.0的库相对2.0来说貌似删减了部分内容
/**
* @brief Configures the SysTick clock source.
* @param SysTick_CLKSource: specifies the SysTick clock source.
* This parameter can be on
* @arg SysTick_CLKSource_HCLK_Div8: AHB clock divided by 8
* selected as SysTick clock source.
* @arg SysTick_CLKSource_HCLK: AHB clock selected as
* SysTick clock source.
* @retval : None
*/
void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)
{
/* Check the parameters */
assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
{
SysTick->CTRL |= SysTick_CLKSource_HCLK;
}
else
{
SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
}
}
STM32SysTick定时 相关文章:
- STM32学习之路(四)——Sys Tick定时器(12-02)
- STM32学习笔记——使用SysTick定时器做延时(11-28)
- stm32 系统嘀嗒(SysTick) 定时器 (2)-解决时钟分频问题(11-17)
- stm32 学习笔记 systick定时器(11-13)
- stm32 系统嘀嗒(SysTick) 定时器(11-13)
- Windows CE 进程、线程和内存管理(11-09)