一个关于STM32定时器的CCR清零话题
今天跟大家分享一个STM32应用开发过程中操作CCR寄存器遇到的小案例,是关于STM32定时器中的捕获寄存器清零的问题。 有人用STM32做输入捕获,在捕获的回调函数里先将捕捉到的CCR值放入缓冲区,然后打算将CCR寄存器清零。结果发现根本清不了。相关代码如下【基于STM32cube库】: voidHAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == TIM4) { if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) { ccr_cur =__HAL_TIM_GET_COMPARE(&htim4, TIM_CHANNEL_1); //【1】 __HAL_TIM_SET_COMPARE(&htim4,TIM_CHANNEL_1,0); //欲清零CCR1 【2】 dbug_data = __HAL_TIM_GET_COMPARE(&htim4,TIM_CHANNEL_1); // 【3】 //再次读取的值仍然为ccr_cur的值 上面代码第【1】句将捕获到的CCR值放入CCR_CUR变量。 代码第【2】句意图将TIM4_CCR1清零;第【3】句意欲从TIM4_CCR1读取数据到dbug_data. 最后发现,做过ccr清零操作后再来读取CCR的值时发现还是清零操作之前的数据。 从代码上看并无什么问题。再看看CCR寄存器定义:


编辑:admin 最后修改时间:2019-01-03