5个帖子 / 0新
最后一篇文章
Wisilica
离线
最后一次露面:1年11个月前
加入:2015-03-17 08:16
时钟刻度

嗨对话,
我需要在执行应用程序的任何执行点上阅读时钟滴答。我的应用程序涉及差距角色切换,因此我从API获得的时钟时间lld_evt_time_get()每次发布A时重置gapm_reset_cmd。还有其他来源可以阅读时钟刻度吗?

提前致谢

设备:
mt_dialog
离线
最后一次露面:1年3个月前
职员
加入:2015-06-08 11:34
嗨,Wisilica,

嗨,Wisilica,

不,没有其他寄存器继续计数,您正在阅读的是主要的基本时间参考计数器,它重置堆栈后重置。

谢谢mt_dialog

nzbackpackers
离线
最后一次露面:5年3个月前
加入:2015-05-15 17:19
ARM Cortex-M0:Systick,一个

ARM Cortex-M0:Systick,假设它正在运行,则是一个增量的24位硬件计数器。如果您停止Systick,请重新开始,尽管当心其他功能可能取决于Systick,因此我强烈建议您不要停止或实际上更改当前的重载值。
有了这些知识,请尝试以下内容:
#include“ systick.h”
tick现在= systick_value();

这些是代码中已经存在的详细信息:
/** \简短结构类型访问系统计时器(Systick)。
*/
Typedef结构
{
__IO UINT32_T CTRL;/ *!__IO UINT32_T加载;/ *!__IO UINT32_T VAL;/ *!__i uint32_t calib;/ *!<偏移:0x00C(R/)Systick校准寄存器 */
} systick_type;

/ * Cortex-M0硬件的内存映射 */
#define scs_base(0xe000e000uul) / *!<系统控制空间基础地址 * /
#define systick_base(scs_base + 0x0010ul) / *!#define nvic_base(scs_base + 0x0100uul) / *!#define scb_base(scs_base + 0x0d00ul) / *!<系统控制块基础地址 * /

#define scb(((scb_type *)scb_base) / *!#Define Systick((Systick_Type *)systick_base) / *!#define nvic((nvic_type *)nvic_base) / *!除非您知道侧面影响:
Systick-> Val = 0;/ *加载Systick计数器值 */
/**
*******************************************************************************************************
* @brief函数读取计时器的当前值
*
* @param [in] void
*
* @return计时器的当前值
*******************************************************************************************************
*/
uint32_t systick_value(void)
{
返回getBits32(&systick-> val,systick_val_current_msk);
}

如果Systick不运行。
/**
*******************************************************************************************************
* @brief函数启动Systick Timer
*
* @param [in] usec倒计时的持续时间
* @param [in]异常设置为true以生成异常,当计时器计算下
*到0,错误不
*
* @return void
*******************************************************************************************************
*/
void systick_start(uint32_t usec,uint8_t异常)
{
setBits32(&systick-> ctrl,systick_ctrl_enable_msk,0);//禁用Systick
setBits32(&systick-> load,systick_load_reload_msk,usec-1);//基于1MHz时钟设置Systick Timeout
setBits32(&systick-> val,systick_val_current_msk,0);//清除当前值寄存器和计数FLAG为0
setBits32(&systick-> ctrl,systick_ctrl_tickint_msk,异常);//生成或不生成系统异常
setBits32(&systick-> ctrl,systick_ctrl_clksource_msk,0);//使用1 MHz的参考时钟频率
setBits32(&systick-> ctrl,systick_ctrl_enable_msk,1);//启用Systick
}

mt_dialog
离线
最后一次露面:1年3个月前
职员
加入:2015-06-08 11:34
你好,

你好,

如果设备处于睡眠模式,则系统不会运行,最终您将无法计算您睡觉的时间。它只是ARM处理器提供的附加计数器,您将无法获得设备的运行时间。

谢谢mt_dialog

nzbackpackers
离线
最后一次露面:5年3个月前
加入:2015-05-15 17:19
这是一个好主意

相当,可以指出睡眠问题的一个好主意。但是,我们没有使用睡眠,而Systick的最大优势在于,它不会因中断是硬件计数器而破坏。也许这不适合原始查询。