打印
[牛人杂谈]

滴答时钟的配置

[复制链接]
1304|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
NUC029有多少个系列不同的有不同个系统时钟源
NUC029xAN系列有3个时钟源

NUC029xGE系列的系统时钟有6个时钟源

在Cortex®-M0核中的SysTick的时钟源可以使用CPU时钟或者外部时钟(SYST_CSR[2])。如果使用
外部时钟,SysTick时钟(STCLK)有4个时钟源。时钟源切换使用寄存器STCLK_S(CLKSEL0[5:3]的
设置。 SysTick时钟框图如图

因此对于滴答时钟都是一样的,一共五个选择
我们看官方提供的BSP库函数,如何使用滴答时钟

void CLK_SetSysTickClockSrc(uint32_t u32ClkSrc);
void CLK_EnableSysTick(uint32_t u32ClkSrc, uint32_t u32Count);
void CLK_DisableSysTick(void);

/**
  * [url=home.php?mod=space&uid=247401]@brief[/url]      Set SysTick clock source
  * @param[in]  u32ClkSrc is module clock source. Including:
  *             - \ref CLK_CLKSEL0_STCLKSEL_HXT
  *             - \ref CLK_CLKSEL0_STCLKSEL_LXT
  *             - \ref CLK_CLKSEL0_STCLKSEL_HXT_DIV2
  *             - \ref CLK_CLKSEL0_STCLKSEL_HCLK_DIV2
  *             - \ref CLK_CLKSEL0_STCLKSEL_HIRC_DIV2
  * [url=home.php?mod=space&uid=266161]@return[/url]     None
  * [url=home.php?mod=space&uid=1543424]@Details[/url]    This function set SysTick clock source. \n
  *             The register write-protection function should be disabled before using this function.
  */
void CLK_SetSysTickClockSrc(uint32_t u32ClkSrc)
{
    CLK->CLKSEL0 = (CLK->CLKSEL0 & ~CLK_CLKSEL0_STCLKSEL_Msk) | u32ClkSrc;
}
/**
  * @brief      Enable System Tick counter
  * @param[in]  u32ClkSrc is System Tick clock source. Including:
  *             - \ref CLK_CLKSEL0_STCLKSEL_HXT
  *             - \ref CLK_CLKSEL0_STCLKSEL_LXT
  *             - \ref CLK_CLKSEL0_STCLKSEL_HXT_DIV2
  *             - \ref CLK_CLKSEL0_STCLKSEL_HCLK_DIV2
  *             - \ref CLK_CLKSEL0_STCLKSEL_HIRC_DIV2
  *             - \ref CLK_CLKSEL0_STCLKSEL_HCLK
  * @param[in]  u32Count is System Tick reload value. It could be 0~0xFFFFFF.
  * @return     None
  * @details    This function set System Tick clock source, reload value, enable System Tick counter and interrupt. \n
  *             The register write-protection function should be disabled before using this function.
  */
void CLK_EnableSysTick(uint32_t u32ClkSrc, uint32_t u32Count)
{
    /* Set System Tick counter disabled */
    SysTick->CTRL = 0;

    /* Set System Tick clock source */
    if(u32ClkSrc == CLK_CLKSEL0_STCLKSEL_HCLK)
        SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk;
    else
        CLK->CLKSEL0 = (CLK->CLKSEL0 & ~CLK_CLKSEL0_STCLKSEL_Msk) | u32ClkSrc;

    /* Set System Tick reload value */
    SysTick->LOAD = u32Count;

    /* Clear System Tick current value and counter flag */
    SysTick->VAL = 0;

    /* Set System Tick interrupt enabled and counter enabled */
    SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk;
}
/**
  * @brief      Disable System Tick counter
  * @param      None
  * @return     None
  * @details    This function disable System Tick counter.
  */
void CLK_DisableSysTick(void)
{
    /* Set System Tick counter disabled */
    SysTick->CTRL = 0;
}



使用特权

评论回复
沙发
kiwis66| | 2022-1-21 11:21 | 只看该作者
感谢楼主讲解

使用特权

评论回复
板凳
littlelida| | 2022-1-28 16:04 | 只看该作者
这是时钟部分,感谢分享

使用特权

评论回复
地板
zljiu| | 2022-2-6 19:32 | 只看该作者
可以选择什么时钟源啊

使用特权

评论回复
5
tfqi| | 2022-2-6 19:44 | 只看该作者
滴答时钟都用作什么呢

使用特权

评论回复
6
nawu| | 2022-2-6 20:02 | 只看该作者
一般最快是多少呢

使用特权

评论回复
7
gwsan| | 2022-2-6 20:16 | 只看该作者
都可以成为它的时钟源吗

使用特权

评论回复
8
aoyi| | 2022-2-6 20:32 | 只看该作者
有没有什么简单的配置方式呢

使用特权

评论回复
9
麻花油条| | 2022-2-8 16:35 | 只看该作者
选择性还是挺多的

使用特权

评论回复
10
sadicy| | 2022-2-10 14:31 | 只看该作者
每次看完就忘,因为基本配置,或者看完之后,基本不会更改了
但这个又很重要

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

879

帖子

1

粉丝