免费作图网站都有哪些,网站开发学的啥,述建设一个网站的具体步骤,石家庄网页制作设计营销文章目录 OPM应用1-精准延时应用2-精准定时 OPM T IMx_CR1的OPM位 位 3 OPM#xff1a;单脉冲模式 (One-pulse mode) 0#xff1a;计数器在发生更新事件时不会停止计数 1#xff1a;计数器在发生下一更新事件时停止计数#xff08;将 CEN 位清零#xff09; 应用1-精准延时… 文章目录 OPM应用1-精准延时应用2-精准定时 OPM T IMx_CR1的OPM位 位 3 OPM单脉冲模式 (One-pulse mode) 0计数器在发生更新事件时不会停止计数 1计数器在发生下一更新事件时停止计数将 CEN 位清零 应用1-精准延时
OPM置位后当CEN置1启动CNT计数达到ARP的值后触发更新事件会自动讲CEN位清零利用这个特性可以实现很准确的延时函数其中TIM2/TIM5是32位的寄存器TIM的时钟是240MHZ可以设置预分频为24-1这样一个CNT计数就是0.1微秒如此32位CNT就能实现429秒的长时间精准延时了非常好用
//采用TIM5 One-Pulse模式的准确延时函数总延时的时间为Delay01uS/10微秒最长429秒
void Delay01uS(uint32_t Delay01uS) {TIM5-ARR Delay01uS-1; //设置要延时的时间Delay01uS*0.1uSTIM5-CR1 | TIM_CR1_CEN; //启动TIM6计数计数更新事件后CNT自动清零while( TIM5-CR1 TIM_CR1_CEN); // ARP更新事件后CEN位自动清零
}
函数的使用while (1){//HAL_Delay(1000);Delay01uS(5000000*10); //延时5秒 printf(HelloWrold!\n);Delay01uS(2000000*10); //延时2秒 printf(HelloWrold!\n);}应用2-精准定时 void TIM4_IRQHandler(void)
{ TIM_SelectOnePulseMode(TIM4,TIM_OPMode_Single);//OPM模式if (TIM_GetITStatus(TIM4, TIM_IT_Update) ! RESET) {TIM_ClearITPendingBit(TIM4, TIM_IT_Update);switch( time4_phaseflag ) {case FLAG_IDLING:ADIS_LED_STEST1_State( 1 );// ADIS_LED_STEST1_State( 0 );//这是用示波器测试定时时间是否准确TIM4_Pri-ARR 250; TIM4-CR1 | TIM_CR1_CEN;//启动TIM计数计数更新事件后CNT自动清零 ARP更新事件后CEN位自动清零break;case FLAG_D2_CONVERTING:ADIS_LED_STEST1_State( 1 );