微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > stm32f103的 time1互补输出PWM问题

stm32f103的 time1互补输出PWM问题

时间:10-02 整理:3721RD 点击:
以下程序在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积分

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top