STM32/STM8技术论坛
直播中

渐行渐老

8年用户 24经验值
擅长:控制/MCU
私信 关注
[问答]

stm32f103的 time1互补输出PWM问题

以下程序在STM32f103c8中CH1,CH2,CH3,CHN3,有输出PWM,但是CHN1,CHN2未有PWM。然后把程序移植到
stm32f103zet6则输出都正常。stm32f103c8是有高级定时器 time1 的 求高手解答

void BLDC_Time1_Init( unsigned int  arr,unsigned int psc)    //PWM初始化程序
{
RCC->APB2ENR|=1<<11;              // 使能定时器1时钟
RCC->APB2ENR|=1<<2;               //使能IO口A时钟
RCC->APB2ENR|=1<<3;               //使能IO口B时钟
//RCC->APB2ENR|=1<<0;               //开启辅助时钟

GPIOB->CRH&=0X000FFFFF;     // 清除PB13PB14,15状态寄存器位
GPIOB->CRH|=0XBBB00000;     // 设定PB13PB14,15//TIM1CH1N,TIM1CHH2N CH3N输出
GPIOA->CRH&=0XFFFFF000;     // 清除PA8,9,10状态寄存器位
GPIOA->CRH|=0X00000BBB;     // 设定PA8,9,10为复用功能TIM1CH1,2,3输出

//GPIOB->ODR|=1<<13;
//GPIOB->ODR|=1<<14;
//GPIOB->ODR|=1<<15;      
//GPIOA->ODR|=1<<8;
//GPIOA->ODR|=1<<9;
//GPIOA->ODR|=1<<10;

TIM1->CR2&=0X0000;       
TIM1->CCR1=500;                //捕获比较预装载值
TIM1->CCR2=200;
TIM1->CCR3=400;

TIM1->ARR=arr;        // 设定计数器自动重装值     
TIM1->PSC=psc;        // 预分频器不分频


//        TIM1->CCER|=1<<0;       // TIM1CH1 通道开关
//        TIM1->CCER|=1<<2;       // TIM1CH1N 通道开关
//        TIM1->CCER|=1<<4;       // TIM1CH2 通道开关
//        TIM1->CCER|=1<<6;       // TIM1CH2N 通道开关
//        TIM1->CCER|=1<<8;       // TIM1CH3 通道开关
//  TIM1->CCER|=1<<10;      // TIM1CH3N 通道开关

TIM1->CCMR1|=7<<4;       // TIM1CH1 PWM2模式
TIM1->CCMR1|=7<<12;      // TIM1CH2 PWM2模式
TIM1->CCMR2|=7<<4;       // TIM1CH3 PWM2模式
TIM1->CCMR1|=1<<3;       // TIM1CH1 预装载使能
TIM1->CCMR1|=1<<11;      // TIM1CH2 预装载使能
TIM1->CCMR2|=1<<3;       // TIM1CH3 预装载使能
TIM1->CR1|=0X80;       // CR1 ARPE自动重装载预装载允许位使能

TIM1->CR1|=0X01;       // 使能定时计数器1
TIM1->EGR|=1<<0;
TIM1->EGR|=1<<5;

TIM1->BDTR|=0x2D;        // 死区时间设定,5US死区时间
TIM1->BDTR|=1<<15;     // 刹车使能位置1,开启所有输出通道

TIM1->CCER=0x555;     //主输出与互补输出都为高电平有效

}  

已退回10积分

更多回帖

发帖
×
20
完善资料,
赚取积分