初级会员

- 积分
- 149
- 金钱
- 149
- 注册时间
- 2013-6-16
- 在线时间
- 37 小时
|

楼主 |
发表于 2016-1-28 15:05:20
|
显示全部楼层
void PWM_Init(u16 arr,u16 psc)
{
//此部分需手动修改IO口设置
RCC->APB2ENR|=1<<4; //使能PORTC时钟
GPIOC->CRL&=0x00FFFFFF; //PC7 PC6输出
GPIOC->CRL|=0xBB000000; //复用功能输出
GPIOC->CRH&=0xFFFFFF00; //PC9 PC8输出
GPIOC->CRH|=0x000000BB; //复用功能输出
GPIOC->ODR|=(1<<9); //PC9上拉
GPIOC->ODR|=(1<<8); //PC8上拉
GPIOC->ODR|=(1<<7); //PC7上拉
GPIOC->ODR|=(1<<6); //PC6上拉
RCC->APB1ENR|=1<<1; //TIM3时钟使能
RCC->APB2ENR|=0x01; //使能AFIO时钟
delay_us(10);
AFIO->MAPR&=0xFFFFF3FF; //完全映像(CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9)
AFIO->MAPR|=0x00000C00; //完全映像(CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9)
delay_us(10);
RCC->APB2ENR&=0xFE; //关闭AFIO时钟
delay_us(10);
RCC->APB1ENR|=1<<1; //TIM3时钟使能
TIM3->ARR=arr; //设定计数器自动重装值
TIM3->PSC=psc; //预分频器不分频
TIM3->CCMR1|=7<<4; //CH1 PWM2模式 PC6
TIM3->CCMR1|=1<<3; //CH1预装载使能
TIM3->CCMR1|=7<<12; //CH2 PWM2模式 PC7
TIM3->CCMR1|=1<<11; //CH2预装载使能
TIM3->CCMR2|=7<<4; //CH3 PWM2模式 PC8
TIM3->CCMR2|=1<<3; //CH1预装载使能
TIM3->CCMR2|=7<<12; //CH4 PWM2模式 PC9
TIM3->CCMR2|=1<<11; //CH2预装载使能
TIM3->CCER|=(1<<0); //OC2 输出使能PC6
TIM3->CCER|=(1<<4); //OC2 输出使能PC7
TIM3->CCER|=(1<<8); //OC2 输出使能PC8
TIM3->CCER|=(1<<12); //OC2 输出使能PC9
TIM3->CR1=0x8000; //ARPE使能
TIM3->CR1|=0x01; //使能定时器3
}
只出来了PC6 和PC7的PWM波 , PC8和PC9没出来,请问哪里设置不对??
|
|