在线时间47 小时
UID3300670
注册时间2017-3-30
NXP金币0
TA的每日心情 | 开心 2017-8-25 16:03 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
中级会员
 
- 积分
- 369
- 最后登录
- 2018-3-26
|
最近在用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 ...
|
|