stm32f103 pwm模式配置總結(jié)
void MiniBalance_PWM_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1; //TIM3時鐘使能
RCC->APB2ENR|=1<<3; //PORTB時鐘使能
GPIOB->CRL&=0XFFFFFF00; //PORTB0 1復(fù)用輸出
GPIOB->CRL|=0X000000BB; //PORTB0 1復(fù)用輸出
TIM3->ARR=arr;//設(shè)定計(jì)數(shù)器自動重裝值
TIM3->PSC=psc;//預(yù)分頻器不分頻
TIM3->CCMR2|=6<<12;//CH4 PWM1模式
TIM3->CCMR2|=6<<4; //CH3 PWM1模式
TIM3->CCMR2|=1<<11;//CH4預(yù)裝載使能
TIM3->CCMR2|=1<<3; //CH3預(yù)裝載使能
TIM3->CCER|=1<<12; //CH4輸出使能
TIM3->CCER|=1<<8; //CH3輸出使能
TIM3->CR1=0x8000; //ARPE使能
TIM3->CR1|=0x01; //使能定時器3
}
需要更改pwm時候應(yīng)該對哪個寄存器進(jìn)行操作:
#define PWMA TIM3->CCR4 //倒立擺僅使用一路驅(qū)動 使用的A路
main
{
MiniBalance_PWM_Init(7199,0); //=====初始化PWM 10KHZ,用于驅(qū)動電機(jī)
while(1)
{
PWMA=3000; //0~7200
}
}
1.
110: PWM模式1- 在向上計(jì)數(shù)時,一旦TIMx_CNT則為有效電平(OC1REF=1)。
111: PWM模式2- 在向上計(jì)數(shù)時,一旦TIMx_CNT
平。
2.
其中TIMX_EGR寄存器的UG位初始化所有寄存器沒有設(shè)置是因?yàn)樵诩拇嫫靼娴某绦蚶锩娴膕tm32f10x.c中已經(jīng)定義為了‘1’:
重新初始化計(jì)數(shù)器,并產(chǎn)生一個更新事件3.
OCx的極性可以通過軟件在TIMx_CCER寄存器中的CCxP位設(shè)置,它可以設(shè)置為高電平有效或
低電平有效。
CC1P:輸入/捕獲1輸出極性 (Capture/Compare 1 output polarity)CC1通道配置為輸出:
0: OC1高電平有效
1: OC1低電平有效
CC1通道配置為輸入:
該位選擇是IC1還是IC1的反相信號作為觸發(fā)或捕獲信號。
0:不反相:捕獲發(fā)生在IC1的上升沿;當(dāng)用作外部觸發(fā)器時, IC1不反相。
1:反相:捕獲發(fā)生在IC1的下降沿;當(dāng)用作外部觸發(fā)器時, IC1反相。
這里沒有設(shè)置是因?yàn)槟J(rèn)是‘1’。