您的位置 首页 ADAS

STM32–SYSTICK超简易定时器

上次的定时器搞得我比较晕,勉强调通了程序,就实用主义来说应该算是勉强合格了。当然CORTEX-M3独有的定时功能可是超级简单的那就是SyS…

前次的 守时器搞得我比较晕,勉着重通了程序,就实用主义来说应该算是牵强合格了。

当然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 one of the following values:
* @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;
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/252375.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部