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復用輸出
GPIOB->CRL|=0X000000BB; //PORTB0 1復用輸出
TIM3->ARR=arr;//設定計數(shù)器自動重裝值
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 //倒立擺僅使用一路驅(qū)動 使用的A路
main
{
MiniBalance_PWM_Init(7199,0); //=====初始化PWM 10KHZ,用于驅(qū)動電機
while(1)
{
PWMA=3000; //0~7200
}
}
1.
110: PWM模式1- 在向上計數(shù)時,一旦TIMx_CNT則為有效電平(OC1REF=1)。
111: PWM模式2- 在向上計數(shù)時,一旦TIMx_CNT
平。
2.
其中TIMX_EGR寄存器的UG位初始化所有寄存器沒有設置是因為在寄存器版的程序里面的stm32f10x.c中已經(jīng)定義為了‘1’:
重新初始化計數(shù)器,并產(chǎn)生一個更新事件3.
OCx的極性可以通過軟件在TIMx_CCER寄存器中的CCxP位設置,它可以設置為高電平有效或
低電平有效。
CC1P:輸入/捕獲1輸出極性 (Capture/Compare 1 output polarity)CC1通道配置為輸出:
0: OC1高電平有效
1: OC1低電平有效
CC1通道配置為輸入:
該位選擇是IC1還是IC1的反相信號作為觸發(fā)或捕獲信號。
0:不反相:捕獲發(fā)生在IC1的上升沿;當用作外部觸發(fā)器時, IC1不反相。
1:反相:捕獲發(fā)生在IC1的下降沿;當用作外部觸發(fā)器時, IC1反相。
這里沒有設置是因為默認是‘1’。