久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> STM32 >> 瀏覽文章

STM32高級定時器1控制伺服直流電機

作者:洛陽煙塵   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年05月15日   【字體:

 使用STM32也有很多年了,現(xiàn)在畢業(yè)臨近了,就想寫寫,做做記錄也希望能幫助到可以幫助的人。

 
STM32定時器有很多的用途,我也不一一舉例,我最常用的就是輸出PWM,定時器,輸入捕獲以及編碼盤模式等等。
 
第一 : 用STM32高級定時器1控制伺服直流電機
 
///////////////////////////////////////////
//定時器1PWM初始化 共4路可變掌控比/////////
//輸入?yún)?shù)PWM1/2/3/4掌控比參數(shù)30000-60000//
//////////////////////////////////////////
void TIM1_PWM(unsigned int PWM1_Val,unsigned int PWM2_Val,unsigned int PWM3_Val,unsigned int PWM4_Val )
{
vu16 CCR1_Val = PWM1_Val;
vu16 CCR2_Val = PWM2_Val;
vu16 CCR3_Val = PWM3_Val;
vu16 CCR4_Val = PWM4_Val;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_TIM1 , ENABLE); //打開相應(yīng)的定時器時鐘和復(fù)用推挽輸出對應(yīng)I/O口時鐘
//這里是定時器對應(yīng)的是TOP值是60000
 
TIM_TimeBaseStructure.TIM_Period = 60000;//計數(shù)器向上最大計數(shù)到65535后產(chǎn)生更新事件,計數(shù)值歸零
TIM_TimeBaseStructure.TIM_Prescaler = 2; //設(shè)置預(yù)分頻器分頻系數(shù)2 TIM_TimeBaseStructure.TIM_ClockDivision = 0;//設(shè)置了時鐘分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//選擇向上計數(shù)
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
 
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);//根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx
 
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2 ;//PWM2模式
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//輸出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;//TIM輸出比較極性
 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;//配著相對應(yīng)的I/O
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//復(fù)用推挽輸出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //翻轉(zhuǎn)頻率為50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure);
 
 
TIM_OCInitStructure.TIM_Pulse = CCR1_Val;//比較數(shù)
TIM_OC1Init(TIM1, &TIM_OCInitStructure);//初始化定時1
 
TIM_OCInitStructure.TIM_Pulse = CCR2_Val;
TIM_OC2Init(TIM1, &TIM_OCInitStructure);//初始化定時1
 
TIM_OCInitStructure.TIM_Pulse = CCR3_Val;
TIM_OC3Init(TIM1, &TIM_OCInitStructure);//初始化定時1
 
TIM_OCInitStructure.TIM_Pulse = CCR4_Val;
TIM_OC4Init(TIM1, &TIM_OCInitStructure);//初始化定時1
 
TIM_Cmd(TIM1, ENABLE);//使能定時器
 
TIM_CtrlPWMOutputs(TIM1,ENABLE);
}
 
在這個函數(shù)中我已經(jīng)把STM32定時器輸出PWM的模板寫好了,你可以去改進(jìn)也可以去深入的學(xué)習(xí),即使有了程序還是不夠的,你必須了解定時器工作的原理和它為什么能達(dá)到這樣的效果,不然你僅僅只會使用而不能得心應(yīng)手把它很好應(yīng)用到你自己的項目中。
 
對于定時器你去學(xué)習(xí)單片機時肯定會遇到的一個很重要的問題,在視頻教學(xué)里面有很多的講解和看法,在這里我也來說說自己的看法。
 
定時器我認(rèn)為就是一個只要你使能它,它就一直在計數(shù)的一個16位的計數(shù)器,從0到65535,當(dāng)你配置了相應(yīng)的定時器模式、TOP值、匹配值時,它就會在計數(shù)到相應(yīng)的位置產(chǎn)生中斷或者從新計數(shù)也就是說發(fā)生更新事件。就拿輸出PWM來做解釋,在上面我設(shè)定了TOP值為60000,設(shè)置了為PWM2模式,使定時器的輸出極性為低。通俗的說就是當(dāng)我在主函數(shù)中配置該定時器時,高級定時器TIM1就會啟動,這里如果我設(shè)定比較值為30000,那么定時器一直計數(shù),從0開始對應(yīng)的I/O口為高電平,一旦定時器計數(shù)到30000,對應(yīng)I/O口出現(xiàn)下降沿,電平發(fā)生改變,從高電平轉(zhuǎn)變成低電平,然后計數(shù)到60000,定時器出現(xiàn)更新事件,對應(yīng)的I/O出現(xiàn)上升沿,電平發(fā)生改變,從低電平轉(zhuǎn)變成高電平。由此反復(fù),從而形成50%占空比的PWM,這個函數(shù)可以自定義占空比,但是不能改變頻率。
 
這里我只是很隨意的講解了定時器的比較簡單的應(yīng)用,如果你想深入的了解,就一定要去看芯片手冊,看懂它,熟透它,只有這樣你才能對它使用的得心應(yīng)手,如果想做好就一定要去努力。
 
當(dāng)然定時器的時鐘這塊很是重要,也可以說STM32的時鐘樹是一定要了解,精通和熟透的東西,在這個我不講解,在后面的過程中我會用一個比較大的篇幅去講解STM32時鐘樹,還有一些我自己的看法。
 
希望能對有些初入的學(xué)者有所幫助,我也是記錄我自己的學(xué)習(xí)歷程,一起努力。
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 国产精品99久久久久久动医院 | 国产精品美女久久久久aⅴ国产馆 | 91视频网址| 欧美男人亚洲天堂 | 日本高清视频在线播放 | 欧美精品在线免费 | 国产一级免费视频 | 国产91在线视频 | 欧美一区二区三区在线看 | 国产精品美女www爽爽爽视频 | 一区二区精品在线 | 久久国产精品免费一区二区三区 | 国产欧美一区二区三区在线看 | 色又黄又爽网站www久久 | 伊人久久成人 | 亚洲视频免费播放 | 亚洲九九精品 | 九九成人 | 一区二区三区四区视频 | 国产精品久久a | 亚洲三区在线观看 | 国产成人午夜高潮毛片 | 欧美亚洲高清 | 国产精品久久久久久婷婷天堂 | 国产精品久久毛片av大全日韩 | 免费h在线| 日韩一级免费看 | 成年人黄色一级片 | 在线天堂免费中文字幕视频 | 亚洲午夜一区二区 | 亚洲毛片| 国产欧美日韩精品一区 | 久久99精品久久久久久青青日本 | 久久激情五月丁香伊人 | 91秦先生艺校小琴 | 国产一区二区在线免费观看 | 草久久久 | 久久久国产一区二区三区 | 亚洲一区二区三区高清 | 精品国产91 | 国产 亚洲 网红 主播 |