超声波水声换能器激励,每10ms产生固定脉冲个数(可控,1~20个),频率200K或500K,利用TIM1的重复计数器,始终不对,产生的个数总不对,跟踪发现CNTR到ARR值后没有让RCR减少,怎么回事?勘误表没发现有这方面的问题啊。
TIM1_TimeBaseInit(0,TIM1_COUNTERMODE_UP,
(uint32_t)CLK_GetClockFreq()/Freq - 1,
MAXNUM); //MAXNUM为脉冲实际个数
TIM1_ARRPreloadConfig(ENABLE);
TIM1_OC1Init( TIM1_OCMODE_PWM2,
TIM1_OUTPUTSTATE_ENABLE,
TIM1_OUTPUTNSTATE_ENABLE,
(uint32_t)CLK_GetClockFreq()/(Freq*2),
TIM1_OCPOLARITY_HIGH,
TIM1_OCNPOLARITY_HIGH,
TIM1_OCIDLESTATE_RESET,
TIM1_OCNIDLESTATE_RESET);
TIM1_OC1PreloadConfig(ENABLE);
TIM1_CtrlPWMOutputs(ENABLE);
TIM1_ITConfig(TIM1_IT_UPDATE , ENABLE);
TIM1_Cmd(ENABLE);
我在UEV事件中关PWM,然后把TIM1延时时间改为大约10ms,下一次再设置为MAXNUM次的本频率重复计数。能产生脉冲,但示波器测量,个数不对,感觉产生脉冲时长相同,未正确触发中断的感觉 |