日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]基于戰(zhàn)艦開發(fā)板 修改的可以對頻率和占空比同時調(diào)節(jié)的一個簡單程序。voidTIM3_PWM_Init(u16arr,u16psc){GPIO_InitTypeDefGPIO_InitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_OCInitTypeDefTIM_OCI

基于戰(zhàn)艦開發(fā)板 修改的可以對頻率和占空比同時調(diào)節(jié)的一個簡單程序。


voidTIM3_PWM_Init(u16arr,u16psc)

{

GPIO_InitTypeDefGPIO_InitStructure;

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

TIM_OCInitTypeDefTIM_OCInitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//ê1?ü?¨ê±?÷3ê±?ó

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);//ê1?üGPIOíaéèoíAFIO?′ó?1|?ü?£?éê±?ó

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);//Timer32?·???ó3é?TIM3_CH2->PB5

//éè????òy???a?′ó?ê?3?1|?ü,ê?3?TIM3CH2μ?PWM??3?2¨D?GPIOB.5

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//TIM_CH2

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//?′ó?í?íìê?3?

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);//3?ê??ˉGPIO

//3?ê??ˉTIM3

TIM_TimeBaseStructure.TIM_Period=arr;//éè???ú??ò????üD?ê??t×°è????ˉμ?×??ˉ??×°????′??÷?ü?úμ??μ

TIM_TimeBaseStructure.TIM_Prescaler=psc;//éè??ó?à′×÷?aTIMxê±?ó?μ?ê3yêyμ??¤·??μ?μ

TIM_TimeBaseStructure.TIM_ClockDivision=0;//éè??ê±?ó·???:TDTS=Tck_tim

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//TIM?òé???êy?£ê?

TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);//?ù?YTIM_TimeBaseInitStruct?D???¨μ?2?êy3?ê??ˉTIMxμ?ê±???ùêyμ¥??

//3?ê??ˉTIM3Channel2PWM?£ê?

TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;//?????¨ê±?÷?£ê?:TIM??3??í?èμ÷???£ê?2

TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//±è??ê?3?ê1?ü

TIM_OCInitStructure.TIM_Pulse=arr*50/100;

TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//ê?3???D?:TIMê?3?±è????D???

TIM_OC2Init(TIM3,&TIM_OCInitStructure);//?ù?YT???¨μ?2?êy3?ê??ˉíaéèTIM3OC2

TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);//ê1?üTIM3?úCCR2é?μ??¤×°????′??÷

TIM_Cmd(TIM3,ENABLE);//ê1?üTIM3

}

uint32_tTIM3_PWM_FQ=0;

uint32_tTIM3_PWM_FQ_Old=80000;

uint16_tTIM3_PWM_Pulse=0;//°′?????¢?a·¢°?pwm3?ê??ˉoóμ?μ??μ?ê?a80KHZ.×??oDT??????±è?a50%

uint16_tTIM3_PWM_Pulse_Old=50;

voidTIM3_PWM_Update(uint32_tTIM3_PWM_FQ,uint16_tTIM3_PWM_Pulse)

{

uint32_ttemp32;

uint32_tTimerfrequency;

uint16_tTimerPeriod;

uint16_tTimerPrescaler;

uint16_tTimerPulse;

if((TIM3_PWM_FQ_Old!=TIM3_PWM_FQ)||(TIM3_PWM_Pulse_Old!=TIM3_PWM_Pulse))

{

TIM3_PWM_FQ_Old=TIM3_PWM_FQ;

TIM3_PWM_Pulse_Old=TIM3_PWM_Pulse;

if(TIM3_PWM_FQ>=1000){//72000000/65535=1089è?1000HZ

Timerfrequency=TIM3_PWM_FQ;

TimerPrescaler=1;//′óóú10002?Dèòa±??μ?′?éíê3é

}else{

Timerfrequency=TIM3_PWM_FQ;//D?óú1000?íDèòa±??μá?

TimerPrescaler=1000/TIM3_PWM_FQ;

}

temp32=((72000000/(TimerPrescaler))/Timerfrequency);

if(temp32>65535)temp32=65535;

TimerPeriod=(uint16_t)temp32;

if(TIM3_PWM_Pulse>100)TIM3_PWM_Pulse=100;

TimerPulse=TimerPeriod*TIM3_PWM_Pulse/100;

TIM3->ARR=TimerPeriod-1;

TIM3->PSC=TimerPrescaler-1;

TIM3->CCR1=TimerPulse;

TIM3->EGR=TIM_PSCReloadMode_Update;

}

}


不知道為什么上傳注釋就模糊掉了 ,反正代碼就是這樣大家可以看看。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉