遇到个问题: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
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>