stm32f103 pwm模式配置总结
扫描二维码
随时随地手机看文章
void MiniBalance_PWM_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1; //TIM3时钟使能
RCC->APB2ENR|=1<<3; //PORTB时钟使能
GPIOB->CRL&=0XFFFFFF00; //PORTB0 1复用输出
GPIOB->CRL|=0X000000BB; //PORTB0 1复用输出
TIM3->ARR=arr;//设定计数器自动重装值
TIM3->PSC=psc;//预分频器不分频
TIM3->CCMR2|=6<<12;//CH4 PWM1模式
TIM3->CCMR2|=6<<4; //CH3 PWM1模式
TIM3->CCMR2|=1<<11;//CH4预装载使能
TIM3->CCMR2|=1<<3; //CH3预装载使能
TIM3->CCER|=1<<12; //CH4输出使能
TIM3->CCER|=1<<8; //CH3输出使能
TIM3->CR1=0x8000; //ARPE使能
TIM3->CR1|=0x01; //使能定时器3
}
需要更改pwm时候应该对哪个寄存器进行操作:
#define PWMA TIM3->CCR4 //倒立摆仅使用一路驱动 使用的A路
main
{
MiniBalance_PWM_Init(7199,0); //=====初始化PWM 10KHZ,用于驱动电机
while(1)
{
PWMA=3000; //0~7200
}
}
1.
110: PWM模式1- 在向上计数时,一旦TIMx_CNT则为有效电平(OC1REF=1)。
111: PWM模式2- 在向上计数时,一旦TIMx_CNT
平。
2.
其中TIMX_EGR寄存器的UG位初始化所有寄存器没有设置是因为在寄存器版的程序里面的stm32f10x.c中已经定义为了‘1’:
重新初始化计数器,并产生一个更新事件3.
OCx的极性可以通过软件在TIMx_CCER寄存器中的CCxP位设置,它可以设置为高电平有效或
低电平有效。
CC1P:输入/捕获1输出极性 (Capture/Compare 1 output polarity)CC1通道配置为输出:
0: OC1高电平有效
1: OC1低电平有效
CC1通道配置为输入:
该位选择是IC1还是IC1的反相信号作为触发或捕获信号。
0:不反相:捕获发生在IC1的上升沿;当用作外部触发器时, IC1不反相。
1:反相:捕获发生在IC1的下降沿;当用作外部触发器时, IC1反相。
这里没有设置是因为默认是‘1’。