我用来超声波传感器(HC-SR04),需要销量某个gpio上回声波形的时光,误差要求是几十个微秒以下。
尝试过的方法:
1)检测到gpio值进出发锰化时,直接直接定时器1的寄存器材。结果误差很大。
2)使用Timer1的GPIO触发功能,需要需要dg_configuser_can_use_timer1和dg_configuse_hw_timer0。结果:编译不错,sys_power_mgr似乎不允许dg_configuser_can_use_timer1为1。
3)使用Timer0,设置on_reload为1,T0_Reload为(0,0),即时设置中间数。这样中断被调使用的频率应该是32k / 4 = 8khz。在中间监理中查询gpio值,并并次数。结果测得的时尚是1÷2个计数。
请问这些方法哪种是可行的,问题是什么?有没有任何东西的合适的解决法?谢谢!
设备:
你好,
Timer1为RTOS。
可用计时器0或定时器。
因为从休眠中间的时间比较长,无法满足你的精致要求,
所以,建议你在开始数码冲前,先有一个信号,把da1468x系统,然后才使用计时器计数分数判断冲长。
谢谢回复!我们试了计时器0,使用下载的方法,没能否得到一下面有问题?
1)设置Timer0 by
hw_timer0_init(null);
hw_timer0_set_clock_source(hw_timer0_clk_src_slow);// 32khz(慢)时钟
hw_timer0_set_on_clock_div(false);//不要划分10
hw_timer0_set_t0_reload(0,0);
hw_timer0_set_on_reload(1);
hw_timer0_register_int(timer0_interrupt_cb);
hw_timer0_enable();
希望有了这个设置,我们可以获得32k / 4 = 8k Hz的中断频率。
2)在中断功能中,检测GPIO状态并进行计数。
波形高电平的时代约毫秒。如果timer0中间是8k Hz(或者125空间隔)被调用的话,测得的结果总。这是一个125岁125岁。
请问这样的语言是不是不合同?遇有问题呢?多重!