//pwm输出初始化
//arr:自动重装值
//psc:时钟预分频数
void pwm_init(u16 arr,u16 psc)
{
//此部分需手动修改io口设置
rcc->apb1enr|=1<<1; //tim3时钟使能
rcc->apb2enr|=1<<3; //使能portb时钟
rcc->apb2enr|=1<<0; //开启辅助时钟
afio->mapr&=0xfffff3ff; //清除mapr的[11:10]
afio->mapr|=1<<11; //部分重映像,tim3_ch2->pb5
gpiob->crl&=0xff0fffff;//pb5输出
gpiob->crl|=0x00b00000;//复用功能输出
gpiob->odr|=1<<5;//pa7上拉
tim3->arr=arr;//设定计数器自动重装值
tim3->psc=psc;//预分频器不分频
tim3->ccmr1|=7<<12; //ch2 pwm2模式
tim3->ccmr1|=1<<11; //ch2预装载使能
tim3->ccer|=1<<4; //oc2 输出使能
tim3->cr1=0x8000; //arpe使能
tim3->cr1|=0x01; //使能定时器3
重映射不包括普通io功能的映射。
重映射只是针对复用功能。
『本文转载自网络,皇冠最新app版本的版权归原作者所有,如有侵权请联系删除』