TIMxCLKfromRCC"颐TriggercontrollerTRGgtocentralbitusAuto-CK_PS£-■PrescalStop,ClearorupKUl—►xr基本定时器TIM6、TIM7stm32基本定时器的影子寄存器更新条件及UIF产生条件在下面的文档说明中,把UIF产生与EUV产生当作同等事情。Figure182・Basictimerblockdiagramevertyjrr»eonThtebtcanbeOyMitAsre.KisBusmaiBtydearedDyrwrcMare0Noaction.1:Re-«r>ndi2e8tnotime#counterandge<*e(atG6anupceteoftheregk^mNCC»matmepeescMrcougbclearedloo(butthepreecaterratio3nc<使用下面的函数町以主动产生更新,把上面的那些影子寄存器等刷新。TIM_GenerateEvent(TIMx,TIM_EventSource_Update);/*此命令单独使用即可更新影子寄存器,即它不产生UIF标志也可正常更新,当然EUV事件也可更新影子寄存器(由上下溢出或UG产生的EUV事件、从模式控制器发过来的复位)*/特定条件下从模磁来阳复位相关函数及默认值1、TIMx^CRlTIM.ARRPreloadConfiglTIMx,DISABLE);〃不启用影子寄存器,数据刷洗立即.TIM_SelectOnePulseMode(TIMx,TIM_OPMode_Repetitive);//不启用单次触发模式TIM_UpdateRequestConfig(TIMx,TIM_UpdateSource_Global);//多种EUV触发源TIM^UpdateDisableConfigfTIMx,DISABLE);//触发源均可产生更新TIM_Cmd(TIMx,DISABLE);//不起动定时器2、TIMx_CR2TIM_SelectOutputTrigger(TIMx/TIM_TRGOSource_Reset);//主模式TRGO输出的触发源为UG信号3、TIMx_DIERTIM_DMACmd(TIMx,TIM_DMA_Update,DISABLE);//更新不触发DMATIM」TConfig(TIMx,TIM」T_Update,DISABLE);//更新不产生中断4、TIMx_SRFlagStatusTIM_GetFlagStatus(TIMx,TIM_FLAG_Update);〃查询更新中断的状态TIM.ClearFlagfTIMx,TIM_FLAG_Update);//清除更新中断状态5、TIMx_EGRTIM_GenerateEvent(TIMx,TIM_EventSource-Update);〃软件产生更新/*如上在此之前加上一句命令TIM_UpdateRequestConfig(TIM6,TIM_UpdateSource_Regular);这样就不会产生UIF,程序也可以正确运行,可以看到UG这个位仅是刷新一下影子寄存器内容,不是由于产生了UIF之后才能更新影子寄存器。至于其产生的UIF标志,是因为在默认情况下UIF的产生源为TIM_UpdateSource_GlobaL*/6、TIMx_CNTTlM_SetCounter(TIMx,uint32_tCounter);//设置计数器数值uint32_tTIM_GetCounter(TIMx);〃取得计数器数值7、TIMx_PSCTIM_PrescalerConfig(TIMxzuintl6_tPrescaler,TIM_PSCReloadMode-Update);/*设置预分频器数值,将数据写入影子寄存器,其内含有一个命令TIMx->EGR=TIM_PSCReloadMode_Update,如果是TIM_PSCReloadModeJmmediate,就有可能产生UIF*/TIM_GetPrescaler(TIMx);〃获取预分频器数据8、TIMx_ARRTIM_SetAutoreload(TIMx,uint32_tAu...