打印

[ARM入门] 新手求教定时器通道单独关闭

[复制链接]
122|2
跳转到指定楼层
楼主
void TIM4_Configuration(void)
{
        u32        temp;
        TIM_TimeBaseInitTypeDef        TIM_TimeBaseInitStruct;
        TIM_OCInitTypeDef TIM_OCInitStruct;

        temp = SystemCoreClock / 1000000;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);                       
        TIM_DeInit(TIM4);
        if(SystemCoreClock > 36000000)
        {
                TIM_TimeBaseInitStruct.TIM_Prescaler = 1;
                TIM_TimeBaseInitStruct.TIM_Period = PWM_Period * temp / 2;
                TIM_OCInitStruct.TIM_Pulse = PWM_Recharge * temp / 2;
        }
        else
        {
                TIM_TimeBaseInitStruct.TIM_Prescaler = 0;
                TIM_TimeBaseInitStruct.TIM_Period = PWM_Period * temp;
                TIM_OCInitStruct.TIM_Pulse = PWM_Recharge * temp;
        }
        TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseInit(TIM4, &TIM_TimeBaseInitStruct);

        TIM_OCInitStruct.TIM_OCMode        = TIM_OCMode_PWM1;
        TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Disable;
        TIM_OCInitStruct.TIM_OCPolarity        = TIM_OCPolarity_High;
        TIM_OC1Init(TIM4, &TIM_OCInitStruct);
        TIM_OC2Init(TIM4, &TIM_OCInitStruct);
        TIM_OC3Init(TIM4, &TIM_OCInitStruct);
        TIM_OC4Init(TIM4, &TIM_OCInitStruct);

        TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
        TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);
        TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);
        TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);
        TIM_CCxCmd(TIM4, TIM_Channel_1, TIM_CCx_Enable);
        TIM_CCxCmd(TIM4, TIM_Channel_2, TIM_CCx_Enable);
        TIM_CCxCmd(TIM4, TIM_Channel_3, TIM_CCx_Enable);
        TIM_CCxCmd(TIM4, TIM_Channel_4, TIM_CCx_Enable);
        TIM_ARRPreloadConfig(TIM4, ENABLE);

        TIM_ClearFlag(TIM4, TIM_FLAG_Update);
        TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
        TIM_Cmd(TIM4, ENABLE);
       
        TIM_CCxCmd(TIM4, TIM_Channel_2, TIM_CCx_Disable); //放在这里面起作用
}


        。
        。
        。

        TIM4_Configuration();

//期望随时单独失能某一通道,但这样不起作用:       
        TIM_CCxCmd(TIM4, TIM_Channel_2, TIM_CCx_Disable);


        。
        。
        。

使用特权

评论回复
沙发
| 2019-6-15 17:26 | 只看该作者
是 STM32 吗? 上来一通代码, 谁知道你说什么

提问, 希望能够明确详细些.

使用特权

评论回复
板凳
| 2019-6-17 11:09 | 只看该作者
仔细阅读数据手册,每个定时器都有一个CCER位,看看它的作用。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /4 下一条

在线客服 快速回复 返回顶部 返回列表
全民彩票