stm8 tim1配置ch1N和ch2N不能当普通io输出了

2019-07-19 21:21发布

遇到个问题:stm8s105c6t6  tim1输出pwm配置,ch1和ch2都能输出pwm波形。但是发现ch1n(PB0) 和ch2n(PB1)管脚不能当作普通io口来输出了。


是不是需要复用管脚的第二功能什么的呀。大家有遇到这种情况吗。以下是我的配置代码:
大家帮我看看有什么问题没有呀。

void Init_Timer1_PWM(void)
{
        CLK->PCKENR1 = 0x80;//tim1 时钟使能
       
        //设置自动重装寄存器(须先写高8位再写低8位),决定PWM的频率       
       
        //  PWM频率:f=16KHZ, T=62.5us
        //  时钟周期:t=1/(fmaster)=1/16MHZ = 0.0625us
        //  TIM1_ARR = T/t = 62.5us/0.0625us = 1000
        /*
        TIM1_ARR=16M/fx;
        */
       
        TIM1->ARRH = CCR_P>>8;//0x00;      
        TIM1->ARRL = CCR_P&0xff;//0x05;
        //初始化预分频器,fmaster不分频,(须先写高8位再写低8位)
        TIM1->PSCRH = 0;        
        TIM1->PSCRL = 0;  
       
        //配置channel1
        //初始化捕获/比较模式寄存器1
        TIM1->CCMR1 = 0x60;     //TIM1_CCMR1[6:4]=110,设置PWM模式1
        //初始化捕获/比较使能寄存器1
        TIM1->CCER1 = 0x01;     //b0 CC1E=1,开启OC1信号输出到相应引脚
                          //b1 CC1P=0,OC1高电平有效
                          //b2 CC1NE=1,开启OC1N信号输出到相应引脚
                          //b3 CC1NP=0,OC1高电平有效   
        //初始化比较寄存器,决定PWM的占空比
        TIM1->CCR1H = CCR_V>>8;
        TIM1->CCR1L = CCR_V&0xff;

        //配置channel2
        TIM1->CCMR2 = 0x60;     //TIM1_CCMR1[6:4]=110,设置PWM模式1
        TIM1->CCER1 |= 0x10;
        TIM1->CCR2H = CCR_V>>8;
        TIM1->CCR2L = CCR_V&0xff;
       
        //CEN=1,则允许计数
        TIM1->CR1 |= (uint8_t)0x01;       
        //初始化刹车寄存器中MOE(主输出使能位)
        TIM1->BKR = 0x80;      
        //b0 MOE=1 使能OC和OCN引脚输出
        //b7 MOE=0
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。