久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
STM32F103VET6的TIM1輸出帶延時的互補(bǔ)PWM
[打印本頁]
作者:
das
時間:
2015-4-4 19:21
標(biāo)題:
STM32F103VET6的TIM1輸出帶延時的互補(bǔ)PWM
要求得到下列波形,死區(qū)時間1us,CH1和CH1之間的相位差事3us,頻率50HZ。
1,To get TIM1 counter clock at 72MHz,the prescaler is computer as follows:
Prescaler = (TIM1CLK / TIM1 counter clock) - 1
To objective is to genterate PWM signal at 50KHz:
-TIM1_Priod = (SystemCoreClock / 50000) - 1
To get TIM1 output clock at 50KHz , the period (ARR) is computed as follows :
ARR = (TIM1 counter clock / TIM1 output clock) - 1
The Two Duty cycles are computed as the following description :
TIM1 Channel1 duty cycle = (TIM1_CCR1 / TIM1_ARR)*100 = 50%
TIM1 Channel2 duty cycle = (TIM1_CCR1 / TIM1_ARR)*100 = 50%
The Timer pulse is calculated as follows :
TIM1_CCRx = (DutyCycle * TIM1_ARR) / 100
2,死區(qū)時間deadtime的計算方法
UTG[7:0]:死區(qū)發(fā)生器裝置,這些位定義了插入互補(bǔ)輸出之間的死區(qū)持續(xù)時間,假設(shè)DT標(biāo)示其持續(xù)時 間:
DTG[7:0] = 0xx => DT = DTG[7:0]
×
Tdtg , Tdtg = TDTS ;
DTG[7:0] = 10x => DT = (64 + DTG[5:0])
×
Tdtg , Tdtg = 2
×
TDTS ;
DTG[7:0] = 110 => DT = (32 + DTG[4:0])
×
Tdtg , Tdtg = 8
×
TDTS ;
DTG[7:0] = 111 => DT = (32 + DTG[4:0])
×
Tdtg , Tdtg = 16
×
TDTS ; 例子:若TDTS = 13.89ns(72MHz),可能的死區(qū)時間位:
0到1764ns,若步長13.89ns;
1777.9ns到3528.88ns;
3555.84ns到7000.56ns;
7111.68ns到14001.12ns;
如果 deadtime=1us,落在區(qū)間0到1764ns,所以公式選擇& amp;nbsp;DTG[7:0] = 0xx => DT = DTG[7:0]
×
Tdtg , Tdtg = TDTS ;
1us = x 13.89ns,x=72,DTG[7:0]=0x72。假設(shè)是用第二個公式得到的30則DTG[5:0]=0b11110,加上DTG的前兩位就是 DTG[7: 0]=0b1011110=0x5E;
3,Configure the break feature,active at High level,and using the automatic output enable feature
4,Use the Locking parameters level1
5,要求這兩個通道的波形不對齊,那么TIM1_CCMR1的OC1M[2:0]必須設(shè)定為011,即 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_Toggle;這樣ARR走兩趟才是一個周期。
6,要求PWM輸出頻率為50KHz。所以ARR=(72MHz/100000)-1=719
因?yàn)锳RR加1的時間為(1/72MHz)s,則(1/72MHz)X=3us。X=216即CCR1、 CCR2之間相隔216時,PWM的相位差是3us。
程序如下:< /div>void TIM1_PWM_DeadtimeInit(uint16_t arr,uint16_t psc,uint16_t ccr1,uint16_t ccr2,uint16_t deadtime)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
/*************************************************
*采用寄存器模式
*TIM1的互補(bǔ)PWM,沒有使用重映像,CH1-PA8,CH1-PB13< /div> GPIOA->CRH&=0XFFFFFFF0; //PA8輸出
GPIOA->CRH|=0X0000000B; //復(fù)用功能輸出 推挽式
GPIOA->ODR|=3<<8;
GPIOB->CRH&=0XFF0FFFFF; //PB13輸出
GPIOB->CRH|=0X00B00000; //復(fù)用功能輸出 推挽式
GPIOB->ODR|=3<<13;
***************************************************/
/**************************************************/
/*TIM1的互補(bǔ)PWM,沒有使用重映像,CH1-PA8,CH1-PB13*/< /div> GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13 | GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
/*************************************************/
/*************************************************
*TIM1的互補(bǔ)PWM,使用完全重映射,CH1-PE9,CH1N-PE8*< /div> GPIO_PinRemapConfig(GPIO_FullRemap_TIM1,ENABLE);//使用 AFIO_MARP的位7:6=11,完全重映像TIM1_CH1到PE9,TIM1_CH1N到PE8
<div& gt; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&GPIO_InitStructure);
*************************************************/
/**問題是當(dāng)使用不完全重映射的互補(bǔ)PWM出現(xiàn)問題****< /div> GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE);//使用 AFIO_MARP的位7:6=01,部分重映像TIM1_CH1到PA8,TIM1_CH1N到PA7
<div& gt; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7 | GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
************************************************/
//TIM1
TIM_TimeBaseStructure.TIM_Period=arr;
TIM_TimeBaseStructure.TIM_Prescaler=psc;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_ClockDivision=0;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_Toggle;//翻轉(zhuǎn),當(dāng) TIMx_CCR1=TIMx_CNT時,翻轉(zhuǎn)OC1REF的電平
TIM_OCInitStructure.TIM_Pulse=ccr1;
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; //CCER的CC1P,輸入/捕獲輸出極性
TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; //CER的CC1N,輸入/捕獲輸出使能
TIM_OCInitStructure.TIM_OutputNState=TIM_OutputNState_Enable;
TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Reset; //OIS1位
TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset; //CR2的OIS1N位,當(dāng)MOE位0時,輸出空閑狀態(tài)位OIS1N.
TIM_OC1Init(TIM1,&TIM_OCInitStructure);
TIM_OCInitStructure.TIM_Pulse=ccr2;//316
TIM_OC2Init(TIM1,&TIM_OCInitStructure);
TIM_BDTRInitStructure.TIM_OSSRState=TIM_OSSRState_Disable; //OSSR:運(yùn)行模式下“關(guān)閉狀態(tài)”選擇(Off-state selection for Run mode)
TIM_BDTRInitStructure.TIM_OSSIState=TIM_OSSIState_Disable; //OSSI:空閑模式下“關(guān)閉狀態(tài)”選擇 (Off-state selection for Idle mode)
TIM_BDTRInitStructure.TIM_LOCKLevel=TIM_LOCKLevel_1;//鎖定設(shè) 置,級別為1,
TIM_BDTRInitStructure.TIM_DeadTime=deadtime;//死區(qū)延時時間< /div> TIM_BDTRInitStructure.TIM_Break=TIM_Break_Disable;//禁止剎車輸 入
TIM_BDTRInitStructure.TIM_BreakPolarity=TIM_BreakPolarity_Low; //剎車輸入極性
TIM_BDTRInitStructure.TIM_AutomaticOutput=TIM_AutomaticOutput_Enable; //自動輸出使能
TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);
TIM_CtrlPWMOutputs(TIM1,ENABLE);//BDTR的MOE位< /div>
TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);//CCMR1
TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);//CCMR1
TIM_ARRPreloadConfig(TIM1,ENABLE);//CR1
TIM_Cmd(TIM1,ENABLE);//CR1
}< /div>
主函數(shù)調(diào)用
void main(void)
{
......
TIM1_PWM_DeadtimeInit(719,0,100,316,72)//uint16_t arr,uint16_t psc,uint16_t ccr1,uint16_t ccr2,uint16_t deadtime
}
作者:
曾火華1222
時間:
2017-5-5 15:33
你好,你有這個源程序嗎
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久综合爱
|
亚洲欧美第一页
|
国产精品美女久久久久久久久
|
久久激情视频
|
亚洲一区
|
黄色一级视频网站
|
久久99精品久久久久久水蜜桃
|
国产欧美激情
|
青青草国产精品
|
国产精品自在线
|
中文有码在线
|
精品久久久久久
|
中国极品少妇xxxx做受
|
亚洲精品一区二区三区蜜桃久
|
日本不卡免费
|
欧美极品一区
|
天天天操
|
在线视频日韩
|
亚洲裸体视频
|
国产精品美女在线观看
|
欧美日韩精品久久久免费观看
|
毛片中文字幕
|
高潮毛片又色又爽免费
|
九九久久精品视频
|
偷拍福利视频
|
欧美日韩精品一区
|
日韩午夜片
|
中文字幕99
|
亚洲欧美综合网
|
亚洲国产精品自拍
|
日韩视频网
|
国产精品原创
|
成人激情av
|
国产一区二区网站
|
久久久国产精品人人片
|
中文字幕精品一区久久久久
|
国产精品成人免费视频
|
一级片av
|
久久99热这里只频精品6学生
|
色吧综合
|
日本熟妇毛耸耸xxxxxx
|