使用stm32f103c8t6的定时器4的通道3来作为外部计数使用时,读取不了计数值的问题。下面是初始化代码
[mw_shl_code=c,true]void Timer4_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<2; //TIM4 时钟使能
RCC->APB2ENR|=1<<3; //PORTB 时钟使能
GPIOB->CRH&=0XFFFFFFF0;
GPIOB->CRH|=0X00000008;
GPIOB->ODR|=1<<8;
TIM4->ARR=arr;
TIM4->  SC=psc;
TIM4->CCMR2|=1<<0;
TIM4->CCMR2|=0<<4;
TIM4->CCER|=1<<9;
TIM4->SMCR|=6<<4;
TIM4->SMCR|=7<<0;
TIM4->CR1|=1<<0;
}
[/mw_shl_code]
程序的目的是当计数值不等于0之后电机停止转动。延时以后段时间之后再次接着转动。测试结果是电机一直没有停止,也就是读取到的cnt数值始终为0。
下面是主函数调用的程序
[mw_shl_code=c,true]int main(void)
{
u32 cnt=0;
init_all();
while(1)
{
cnt=TIM4->CNT;
if(cnt !=0)
{
TIM4->CR1&=~(1<<0); //关闭计数器
move_stop(); //停止转动
delay_ms(1500);
delay_ms(1500);
delay_ms(1500);
delay_ms(1500);
TIM4->CR1|=1<<0; //打开计数器
move_zheng();
}
delay_ms(50);
}
}[/mw_shl_code]
|