首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PIC32,免费实时操作系统时钟,以毫秒计

PIC32,免费实时操作系统时钟,以毫秒计
EN

Stack Overflow用户
提问于 2011-11-22 23:28:45
回答 3查看 6.5K关注 0票数 1

我有一个运行实时操作系统的PIC32MX460F512L,我正在寻找一种方法来获得代码中两个点之间ms的区别。

下面的代码得到的是滴答时间,而不是ms中的时间。

代码语言:javascript
复制
static unsigned long gMSTP_timer_tick = 0 ;
void MSTP_timer_reset() {
    gMSTP_timer_tick = xTaskGetTickCount( ) ;
}
FLOAT32 MSTP_timer_differences() {
    unsigned long differences = xTaskGetTickCount( ) - gMSTP_timer_tick ;
    gMSTP_timer_tick += differences ;

    return (FLOAT32) differences ;
}

我的问题是

免费实时操作系统中,是否有一种方法可以获得ms中当前的相对时间?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-23 10:08:52

蜱应该有一个固定的频率。1000赫兹滴答->中断和任务切换触发每1毫秒。不会是这样的,特别是如果你有其他干扰的话。但它应该保持这个频率。

我相信你应该能够比较两个滴答计数,除以滴答率结束的延迟。

另一个经典的技巧是在定时间隔开始时直接切换GPIO引脚,在时间间隔结束时再切换一次(重复),然后使用示波器捕捉间隔。这应该会给出一个非常精确的实时结果。

你也可以问FreeRTOS列表

票数 1
EN

Stack Overflow用户

发布于 2011-11-22 23:43:11

根据这个相关的问题,有一个configTICK_RATE_HZ值。

使用这个值,它应该只是一点简单的数学,以确定一组滴答对应多少毫秒。类似于:

代码语言:javascript
复制
return (FLOAT32) (differences / configTICK_RATE_HZ / 1000);

还有一组计时器API可能需要查看,这些API支持按时间间隔对代码进行回调。不知道它是否适合你的需要,但也许它值得一看:

http://www.freertos.org/FreeRTOS-Software-Timer-API-Functions.html

票数 1
EN

Stack Overflow用户

发布于 2018-04-17 16:33:20

FreeRtos在pic32端口中使用计时器1,您可以在port.c文件中找到timer1寄存器配置,并在毫秒内计算精确的滴答率时间基config_TICK_RATE_HZ。并乘以除以滴答值。基频config_TICK_RATE_HZ: 1000 1MS~1ms 100 1MS~10 1MS

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8235393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档