老师好
我用的是探索者F4开发板,输入捕获的实验我做完了,我通过TIM14产生4KHz的PWM,然后通过TIM5的通道1也捕获到了,现在我想测试一下输入捕获是否有丢失,也就是统计一下捕获到的脉冲个数,这其中遇到了点问题。
我是这样做的,
首先是配置TIM14的PWM输出,其他部分都和教程一样,只有自动重载值和脉宽调整了一下。
TIM14_PWM_Init(250-1,84-1); //84M/84=1Mhz的计数频率计数到250,PWM频率为1M/250=4Khz
TIM_SetCompare1(TIM14,125); //脉宽125
1、定义了变量v_count,用来记录捕获的脉冲个数,
2、在TIM5的中断中,当捕获到上升沿时,v_count++;
3、用TIM3定时,每秒打印一次 v_count
PWM的频率4KHz,每秒应该会产生4000个脉冲信号(我这样计算对不对呀老师?),
实测每秒捕获到3996个,少了4个,而且这个数值很稳定。请问老师这是什么原因呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
库函数只是对寄存器操作的封装而已,便于理解。寄存器操作速度最快,库函数操作还有调用函数的时间花费呢,虽然很短但是也是有这个时间浪费,对执行时间要求较高的地方能汇编则汇编,能寄存器就寄存器,最后考虑库函数。
USART1->DR=data;//对串口1的数据寄存器写入数据串口就开始发送了
明白了,谢谢老师。好强大的后台支持!!选正点,真正点!!
老师,我用寄存器方式向串口发数据,结果不理想,预期是1500000/秒,也就是16E360 ,实测是在16E1左右浮动,差了不少。还有其他办法么?
一周热门 更多>