SysTick——Cortex系统定时器

本文详细介绍了Cortex-M3微控制器中的SysTick定时器,探讨了其时钟源选择(外部时钟和处理器时钟),特别针对STM32F103芯片的HCLK/8和FCLK配置。还提到了在KeilDebug模式下查看SysTickControlandStatusRegister的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • SysTick的时钟源
  • 有两个可选,分别是外部时钟(external clock)和处理器时钟 (processor clock),通过SysTick Control and Status Register(时钟控制和状态寄存器)的CLKSOURCE[2bit]位进行配置。使用了m3内核的不同芯片其时钟设计可能不同,STM32F103此处的两个时钟对应HCLK/8(STM32F103芯片时钟源设计中,使用HCLK8分频输入至Cortex m3作为SysTick的其中一个时钟源)及FCLK(与HCLK同源)

461f7bc4e431cae2ab0d395f2b35391a.png

12cc61693b66327be5b31618b9db568b.png

SysTick Control and Status Register

 misc.c中用于配置SysTick时钟源的函数:

/**
  * @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;	//0x00000004
  }
  else
  {
    SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;	//FFFFFFFB
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值