查看: 3521|回复: 10

[求助] FRDM-KL05Z systick时间长度限制

[复制链接]

该用户从未签到

6

主题

55

帖子

0

中级会员

Rank: 3Rank: 3

积分
319
最后登录
1970-1-1
发表于 2016-4-21 15:40:59 | 显示全部楼层 |阅读模式
本帖最后由 Nella 于 2016-4-21 15:42 编辑

开发板: FRDM-KL05Z
开发环境 : keil c uVision5

目前知道如何使用systick计数时间,
https://www.nxpic.org.cn/module/foru ... xtra=page%3D&page=1

-----------------------------------------------------------------------------------------------------------------------------------------

但遇到另一个困难,此M0+ core(48MHz)使用systick计数时只能从0xFFFFFF开始,如果想要计数较长的时间该如何调整?
这是否为硬体限制或是有其他可以计数的方法。
http://infocenter.arm.com/help/i ... 79b/ar01s02s08.html

目前使用方式如下,簡單計數1秒鐘但是Systick溢出時間,最久只能數0.349..秒,
void systick_init(void)
{
   SYST_CVR = 0x0;
   SYST_RVR = 0x00FFFFFF;
   SYST_CSR = SysTick_CSR_CLKSOURCE_MASK | SysTick_CSR_ENABLE_MASK;     
}

void systick_disable(void)
{
    SYST_CSR &= ~SysTick_CSR_ENABLE_MASK;
}


for(;;)
{
    systick_init();
    sys_st = SYST_CVR;


    delay(1000);


    sys_end = SYST_CVR;
    systick_disable();


    sys_time = sys_st - sys_end;
    fSystickTime = ((float)sys_time/48000000);
}

是否有其他方式可以使用,请大家指导一下,谢谢!
我知道答案 目前已有10人回答
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24871
最后登录
2025-7-18
发表于 2016-4-21 16:02:13 | 显示全部楼层
楼主你好!
两个办法:
1. 在中断中加一个全局变量,比如你能计数到0.349s,你配置只计数到200ms, 然后使能溢出中断。
中断中计数,进入一次中断就是200ms,所以如果进入5次,则满1s。
2. 换一个定时器,比如PIT等,能够一次性计数到1S的。
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

55

帖子

0

中级会员

Rank: 3Rank: 3

积分
319
最后登录
1970-1-1
 楼主| 发表于 2016-4-21 16:16:20 | 显示全部楼层
小恩GG 发表于 2016-4-21 16:02
楼主你好!
两个办法:
1. 在中断中加一个全局变量,比如你能计数到0.349s,你配置只计数到200ms, 然后使 ...

您好,谢谢您的回答:

是否有简单的sample code可以参考?
1.由于目前对这板子的中断设定尚未了解,所以无法得知溢出时如何调配中断。
2.PIT不太清楚。
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24871
最后登录
2025-7-18
发表于 2016-4-21 16:36:55 | 显示全部楼层
Nella 发表于 2016-4-21 16:16
您好,谢谢您的回答:

是否有简单的sample code可以参考?

1.中断非常简单
初始化中使能systick 中断,使能中断向量表。
  然后添加systick中断服务函数。
2.PIT官方很多相关例程的。
PIT附件驱动
pit.rar (1.33 KB, 下载次数: 12)
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24871
最后登录
2025-7-18
发表于 2016-4-21 16:41:16 | 显示全部楼层
systick的例子,看看这个帖子:
http://community.freescale.com/message/483364
里面EARL GOODRICH贴出了相关代码。
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

55

帖子

0

中级会员

Rank: 3Rank: 3

积分
319
最后登录
1970-1-1
 楼主| 发表于 2016-4-21 19:22:01 | 显示全部楼层
本帖最后由 Nella 于 2016-4-21 19:23 编辑
小恩GG 发表于 2016-4-21 16:41
systick的例子,看看这个帖子:
http://community.freescale.com/message/483364
里面EARL GOODRICH贴出了 ...

这方法我试了可以成功触发中断,谢谢您的帮助!!!
第二个PIT待会测试。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2023-6-2 13:32
  • 签到天数: 272 天

    连续签到: 1 天

    [LV.8]以坛为家I

    44

    主题

    995

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4413
    最后登录
    2023-6-2
    发表于 2016-4-21 21:33:58 | 显示全部楼层
    不知道CM0+进入中断需要多少个时钟周期.
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24871
    最后登录
    2025-7-18
    发表于 2016-4-22 10:08:46 | 显示全部楼层
    andrewz 发表于 2016-4-21 21:33
    不知道CM0+进入中断需要多少个时钟周期.

    看ARM内核文档,进入需要16个时钟周期。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24871
    最后登录
    2025-7-18
    发表于 2016-4-22 10:09:10 | 显示全部楼层
    Nella 发表于 2016-4-21 19:22
    这方法我试了可以成功触发中断,谢谢您的帮助!!!
    第二个PIT待会测试。

    好的,后续有问题,欢迎继续发帖交流!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-6-2 13:32
  • 签到天数: 272 天

    连续签到: 1 天

    [LV.8]以坛为家I

    44

    主题

    995

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    4413
    最后登录
    2023-6-2
    发表于 2016-4-22 20:39:05 | 显示全部楼层
    小恩GG 发表于 2016-4-22 10:08
    看ARM内核文档,进入需要16个时钟周期。

    谢谢回复.
    不知道systick怎么设置分频.
    是CTRL吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-19 19:45 , Processed in 0.108472 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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