2019-07-20 21:41发布
22599967 发表于 2016-6-15 10:59 多谢,我再自己看书再自己尝试下,现在就是不是很清楚,怎么实现让编码器模式的定时器用另外个定时器的时 ...
最多设置5个标签!
不需要用另外一个时钟啊。只需要定时读取编码器计数值就好了,比如这是我在ucos任务里面的代码:
[mw_shl_code=c,true]#define ENCODER_READ_PERIOD (1000)
void Encoder_Task(void *pdat)
{
static int32_t Encoder_Speed=0;
ENCODER_Init();
while(1)
{
Encoder_Speed=ENCODER_Read()/(ENCODER_READ_PERIOD/1000);//读取计数器值并计算
ENCODER_Reset();//重置计数值
OSMboxPost(mbox_speed,(void*)(&Encoder_Speed));//发送速度值
delay_ms(ENCODER_READ_PERIOD);//延时
}
}[/mw_shl_code]
写在定时器中断里面也差不多,只要把定时器周期设定成ENCODER_READ_PERIOD,然后再溢出中断里面进行计算和重置。Encoder_Speed用全局变量代替就行了
一周热门 更多>