Hi Dialog,
现在外部sensor有一个频率(比如:1khz)输出,想利用681的timer1输入捕获功能来实现这个sensor的频率计数。
我在681手册上看到,timer1是可以有2个通道的输入捕获,但是我在sdk1.0.8里面,发现timer1被用做freertos的tick时钟,
但我在hw_timer1.h是看到了有2通道捕获功能的函数接口。
问题1:如果我想测试这个输入捕获的功能,应该如何修改代码?
问题2:我如果修改宏定义define dg_configUSER_CAN_USE_TIMER1 1,对freertos的影响在哪里? 之后配置681的端口P0_7用做频率捕获的端口,软件上应该如何配置实现?
谢谢。
Keywords:
Device:
这方面我也不熟悉,看了一下代码和datasheet,你可以尝试使用一下,应该不会引起太大的问题。
timer1捕获的原理在DS里也有说明,在第一个事件(比如上升沿)触发时,TIMER1会把当前的时间写到CAPTIM_CAPTURE_GPIO1_REG里,第二个事件触发时,当前时间会写到CAPTIM_CAPTURE_GPIO2_REG里面。函数hw_timer1_get_capture1和hw_timer1_get_capture2做的也仅仅是从这两个寄存器里拿读到的值。你可以用他们的差来得到interval,也就能得到你需要计算的频率。
我们不推荐用timer1,理由如你所说timer1作为唯一一个睡眠也工作的时钟是全程用来驱动FreeRTOS的,但是介于其他timer没有捕获的功能,也只能尝试一下用timer1了。
更详细的信息我需要询问一下软件工程师
非常感谢你的 回答,我目前是在freertos上测试的,一旦打开用户使用timer1的情况下,代码编译出错,在freertos底层很多使用timer1的地方,我再选一个无操作系统的代码试试。
如果dialog可以提供一个实例就最好了,基于freertos的,如果可以的话。