查看: 3466|回复: 2

[已解决] 对KE06的systick定时器配置的疑问。

[复制链接]
  • TA的每日心情
    擦汗
    2019-2-26 17:09
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    6

    主题

    21

    帖子

    0

    注册会员

    Rank: 2

    积分
    196
    最后登录
    2019-4-11
    发表于 2018-11-26 12:45:25 | 显示全部楼层 |阅读模式
    KE06的参考手册对systick的说明很少。
    通过对STM32的systick进行参考,我配置了如下的代码,延时ms:

        uint32_t temp;
        SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk;
        SysTick->LOAD = nms * 5000-1;
        SysTick->VAL = 0x00;
        SysTick->CTRL = SysTick_CTRL_ENABLE_Msk;
        do
        {
             temp = SysTick->CTRL;
        }
         while((temp & SysTick_CTRL_ENABLE_Msk) && !(temp & SysTick_CTRL_COUNTFLAG_Msk));

    但是我一直没搞懂这个“
    SysTick->LOAD = nms * 5000-1”中5000的含义。在参考手册中我看到如图的内容。是不是systick的时钟源是50MHz?但是2图中又说CLKSOURCE=1时是内核时钟,不应该是48MHz吗?



    后面我本来想照搬STM32的systick中断配置:

    void SysTick_Init(void)
    {
      if (SysTick_Config(50000000 / 1000000)) // ST3.5.0库版本
    {
      /* Capture error */
      while (1);
    }
      NVIC_EnableIRQ(SysTick_IRQn);
    NVIC_SetPriority(SysTick_IRQn, 0);

    SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
    }

    void Delay_us(__IO uint32_t nTime)
    {
    TimingDelay = nTime;
    SysTick->CTRL |=  SysTick_CTRL_ENABLE_Msk;
    while(TimingDelay != 0);
    }

    void TimingDelay_Decrement(void)
    {
    if (TimingDelay != 0x00)
    {
      TimingDelay--;
    }
    }

    void SysTick_Isr(void)
    {
    TimingDelay_Decrement();
    }

    但是进不了中断函数。很头疼。


    最佳答案

    本帖最后由 stm1024 于 2018-11-26 14:58 编辑 这个你需要看ARM M0/M3权威指南,注意这个Systick是可以选择两个不同的时钟源,一个是系统频率,另一个是外设厂商设计的频率。例如对于STM32F103,可以是9Mhz,也可 ...

    时钟描述

    时钟描述

    systick配置

    systick配置
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24890
    最后登录
    2025-7-21
    发表于 2018-11-26 14:04:23 | 显示全部楼层
    Systick timer是Cortex 核自带的,不是厂商额外添加的功能,建议去参考《ARM Cortex权威指南》
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    昨天 22:51
  • 签到天数: 1847 天

    连续签到: 2 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112627
    最后登录
    2025-7-20
    发表于 2018-11-26 14:56:13 | 显示全部楼层
    本帖最后由 stm1024 于 2018-11-26 14:58 编辑

    这个你需要看ARM M0/M3权威指南,注意这个Systick是可以选择两个不同的时钟源,一个是系统频率,另一个是外设厂商设计的频率。例如对于STM32F103,可以是9Mhz,也可以是72MHz;对于LPC11系列,可以是系统频率,可以是系统频率的一半。

    评分

    参与人数 1 +1 收起 理由
    NXP管管 + 1

    查看全部评分

    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 09:14 , Processed in 0.094962 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表