[定时器]强置输出模式

    技术2022-05-19  22

    void TIMER_Mode2_Configuration()

     {

        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

        TIM_OCInitTypeDef TIM_OCInitStructure; 

        GPIO_InitTypeDef  GPIO_InitStruct;

       

        GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);     //TIM3 完全重映射

           

        GPIO_DeInit(GPIOC);

        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;  //输出端口:OCx映射到的引脚

        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;

        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;

        GPIO_Init(GPIOC,&GPIO_InitStruct);

       

        TIM_DeInit(TIM3);

        TIM_TimeBaseStructure.TIM_Period=2000;            //ARR的值

        TIM_TimeBaseStructure.TIM_Prescaler=36000-1;

        TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //采样分频

        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式

        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

       

        TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_Active;  //强制输出模式

        TIM_OCInitStructure.TIM_Channel=TIM_Channel_1;     //通道1选择

        TIM_OCInitStructure.TIM_Pulse=1000;                //比较值即脉冲周期

        TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;  //极性高电平

    TIM_OCInit(TIM3, &TIM_OCInitStructure);

     

        TIM_ARRPreloadConfig(TIM3, ENABLE);  //使能ARR预装载缓冲器

        TIM_ForcedOC1Config(TIM3, TIM_ForcedAction_InActive);  //TIM通道输出有效的活动电平

    TIM_ITConfig(TIM3,TIM_IT_CC1,ENABLE);                 //允许更新产生中断

        TIM_Cmd(TIM3, ENABLE);          //开启时钟

     }

    说明:根据手册上所说的,就是让OCx输出可以由软件配置成强置输出有效和无效状态。但是比较器依然进行工作,因而通过配置可以产生中断和DMA

          例如配置输出比较模式为强制有效电平(OC1REF为高), 极性配置为高电平有效,此时输出一直输出高电平。


    最新回复(0)