首先,RT是个非常优秀的国产操作系统,她没出现前我都是用UCOS的,虽然用的顺手了,但国产操作系统出现后我就毅然决然的选择了操作系统,一方面觉得架构清晰函数简明,另一方面对国产操作系统情节有点重上手之后差点泪流满面,国产开源东西已经做到此等程度确实让人振奋!
书归正传,这么优秀的操作系统用户面就会很广,我因为工作的原因小型嵌入式系统做的比较多,任务繁琐的情况下会有限考虑使用操作系统来简化任务调度。
问题是这样出现的:
耐心看完,用嵌入式操作系统的一定会有帮助的!
在做一个项目,用到STM32F407 的捕获功能,用rt-thread-3.1.3,只用最基础的内核,任何组件都不使用,对一个非周期脉冲进行数据记录,上升沿下降沿都捕获,分别记录脉冲的高低电平宽度,进入片子的脉冲是调制过的,所以波形数据我知道,对记录后的数据也有预期,但发现总是会丢几个脉冲。
然后我用函数发生器产生一个占空比50%的方波束,频率10K数量10000,进行测试,测试结果正常,增加频率,20K正常,50K正常。直接上100k,然后发现丢数了……10000个脉冲只记录到了9k多,查记录到的脉宽数据,本来应该是高低电平各5us,但中间会夹杂着10us的宽度。
捕获计时时钟我用的1us所以误差1~2个us是可以接受的,但大了一倍,而且每次都是一倍就很蹊跷了,继续查数据,发现9k多的脉冲数据丢的那部分脉冲都是被这么吃掉的。
重点来了。我是这样排故的!
首先,怀疑是函数发生器发出的脉冲有问题,用示波器查看波形一切正常。减少脉冲数量,每次只发出100个脉冲,ARM捕获没问题,