查看: 15343|回复: 10

[S32] S32K144的SysTick时钟,求助

[复制链接]
  • TA的每日心情
    开心
    2017-8-25 16:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    53

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    369
    最后登录
    2018-3-26
    发表于 2017-4-12 09:49:37 | 显示全部楼层 |阅读模式
    最近在用S32K144的System Tick Timer做延时函数,即写一个delay函数,函数内部的延时用SysTick实现,查看S32K14x Series Reference Manual发现,
    SysTick的时钟源始终是CORE_CLK

    在查看手册Cortex-M4 Devices Generic User Guide,发现SysTick Control and Status Register寄存器的Bits2位,由上图知道,CLKSOURCE位始终为1,即选择processor clock,

    由于S32K144用的是Cortex-M4内核,结合原子的STM32F407的delay函数实现,发现原子的delay函数设置CLKSOURCE位为0,即AHB/8,参考手册是STM32F3和F4系列Cortex M4内核编程手册

    我在S32K144用SysTick的时候,发现不能实现精准的延时,猜测原因应该是SysTick的时钟源问题,即CORE_CLK不准确的问题,尝试过好多种时钟代码,发现精准的延时很难实现,应该是CORE_CLK需要分频之后,才能作为SysTick的时钟,有没有谁用过SysTick,给一点指导意见?
    上传我的代码,风格比较Low,见谅,环境是IAR 7.6
    [url=]SysTick.rar[/url]

    最佳答案

    施青海 发表于 2017-4-12 11:02 找个示波器看电平翻转呗,主函数里面就是,延时3us,电平翻转, 楼主你好 IO翻转、wihle循环等代码执行本身也消耗时间,请参考下面两张图片。 [attach]409088[/attach] [attach]40908 ...
    QQ截图20170412093028.png
    QQ截图20170412093603.png
    QQ截图20170412094111.png

    SysTick.rar

    2.46 MB, 下载次数: 419, 下载积分: 威望 1

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-11-30 16:16
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    74

    主题

    2793

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    7879
    最后登录
    2025-4-11
    发表于 2017-4-12 10:28:26 | 显示全部楼层
    M4核的,都一样,我这是LPC54114的延时
    hardware.rar (1.13 KB, 下载次数: 165)
    来根华子
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-11-30 16:16
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    74

    主题

    2793

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    7879
    最后登录
    2025-4-11
    发表于 2017-4-12 10:59:34 | 显示全部楼层
    你是用什么方法验证延时精确度的
    来根华子
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-8-25 16:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    53

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    369
    最后登录
    2018-3-26
     楼主| 发表于 2017-4-12 11:02:42 | 显示全部楼层
    混森蓝兽 发表于 2017-4-12 10:59
    你是用什么方法验证延时精确度的

    找个示波器看电平翻转呗,主函数里面就是,延时3us,电平翻转,
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-8-25 16:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    53

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    369
    最后登录
    2018-3-26
     楼主| 发表于 2017-4-12 11:07:40 | 显示全部楼层
    混森蓝兽 发表于 2017-4-12 10:28
    M4核的,都一样,我这是LPC54114的延时

    你的SysTick时钟源是30M的吗?没用过LPC54114,还有你的us延时准不准呀?
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2017-4-12 14:01:56 | 显示全部楼层
    施青海 发表于 2017-4-12 11:02
    找个示波器看电平翻转呗,主函数里面就是,延时3us,电平翻转,

    楼主你好
    IO翻转、wihle循环等代码执行本身也消耗时间,请参考下面两张图片。
    KL25的IO口最高翻转频率.png
    KL25的IO口最高翻转频率 code.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2021-12-23 09:57
  • 签到天数: 1587 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    5

    主题

    3048

    帖子

    23

    金牌会员

    Rank: 6Rank: 6

    积分
    8416
    最后登录
    2025-4-23
    发表于 2017-4-12 19:32:29 | 显示全部楼层
    嵌汇编能改善这个问题。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-8-25 16:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    53

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    369
    最后登录
    2018-3-26
     楼主| 发表于 2017-4-12 20:16:15 | 显示全部楼层
    FSL_TICS_Robin 发表于 2017-4-12 14:01
    楼主你好
    IO翻转、wihle循环等代码执行本身也消耗时间,请参考下面两张图片。

    好吧,看来不能用IO口翻转来精准测量delay的延时时间了。
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-8-25 16:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    53

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    369
    最后登录
    2018-3-26
     楼主| 发表于 2017-4-12 20:23:09 | 显示全部楼层
    是不是可以用硬件仿真的方式,直接查看SysTick Current Value Register寄存器的值,
    假设SysTick的时钟是1MHz,那么SysTick Current Value Register寄存器的值应该每次减1.
    我试过这种方法,发现每次减的值不是1,不固定的值,不清楚是何原因。
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2017-4-13 09:26:38 | 显示全部楼层
    施青海 发表于 2017-4-12 20:16
    好吧,看来不能用IO口翻转来精准测量delay的延时时间了。


    不修改while循环和IO翻转语句,只修改SYSTICK值, 察看增量是否精确。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-22 12:13 , Processed in 0.109797 second(s), 32 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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