娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月22日(星期日)

正在發生

2018年09月22日 | 【STM32電機方波】記錄4——PWM輸出配置

發布者:SereneVoyage 來源: eefocus關鍵字:STM32  電機方波  PWM  輸出配置 手機看文章 掃描二維碼
隨時隨地手機看文章

PWM生成原理:

 通用定時器可以利用GPIO引腳進行脈沖輸出,在配置為比較輸出、PWM輸出功能時,捕獲/比較寄存器通用定時器可以利用GPIO引腳進行脈沖輸出,在配置為比較輸出、PWM輸出功能時,捕獲/比較寄存器TIMx_CCR被用作比較功能,下面把它簡稱為比較寄存器。 這里直接舉例說明定時器的PWM輸出工作過程:若配置脈沖計數器TIMx_CNT為向上計數,而重載寄存器TIMx_ARR被配置為N,即TIMx_CNT的當前計數值數值X在TIMxCLK時鐘源的驅動下不斷累加,當TIMx_CNT的數值X大于N時,會重置TIMx_CNT數值為0重新計數。 而在TIMxCNT計數的同時,TIMxCNT的計數值X會與比較寄存器TIMx_CCR預先存儲了的數值A進行比較,當脈沖計數器TIMx_CNT的數值X小于比較寄存器TIMx_CCR的值A時,輸出高電平(或低電平),相反地,當脈沖計數器的數值X大于或等于比較寄存器的值A時,輸出低電平(或高電平)。 如此循環,得到的輸出脈沖周期就為重載寄存器TIMx_ARR存儲的數值(N+1)乘以觸發脈沖的時鐘周期,其脈沖寬度則為比較寄存器TIMx_CCR的值A乘以觸發脈沖的時鐘周期,即輸出PWM的占空比為 A/(N+1) 。

STM32產生PWM的配置方法:

1、配置GPIO口:

  配置IO口的時候無非就是開啟時鐘,然后選擇引腳、模式、速率,最后就是用結構體初始化。不過在32上,不是每一個IO引腳都可以直接使用于PWM輸出,因為在硬件上已經規定了用某些引腳來連接PWM的輸出口。下面是定時器的引腳重映像,其實就是引腳的復用功能選擇:

  a.定時器1/8的引腳配置及復用功能映像:

【STM32電機方波】記錄4——PWM輸出配置
【STM32電機方波】記錄4——PWM輸出配置
根據以上重映像表,我們使用定時器1的通道TIM1__CH2作為PWM的輸出通道,若選擇PA9引腳則應進行配置,如下:

{

 GPIO_InitTypeDef GPIO_InitStructure;//定義結構體

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA  | RCC_APB2Periph_AFIO, ENABLE);

//使能 GPIO外設和AFIO復用功能模塊時鐘

 //GPIO_PinRemapConfig(GPIO_FullRemap_TIM1, ENABLE); //選擇Tim1完全重映像,即用了 PE11

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  //TIM_CH2

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //復用推挽功能

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

 

 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化引腳

}


產生六路PWM互補輸出的GPIO配置:

{

  GPIO_InitTypeDef   GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO |RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);

 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;   //PA8、9、10  

  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_Pin_15;   //PB13、14、15  

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOB, &GPIO_InitStructure);

}


產生六路PWM互補輸出的TIM1設置:

{

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;//定義時基結構體

TIM_OCInitTypeDef  TIM_OCInitStructure;//定義輸出結構體

TIM1_BDTRInitTypeDef TIM1_BDTRInitStructure; //定義死區結構體


RCC_APB2PeriphClockCmd(RCC_APB1Periph_TIM1, ENABLE); //使能定時器1時鐘


 

TIM_TimeBaseStructure.TIM_Period = arr; //自動重裝載寄存器ARR的值

TIM_TimeBaseStructure.TIM_Prescaler =psc; //TIM1預分頻器PSC的值

TIM_TimeBaseStructure.TIM_ClockDivision = 0; //時鐘分割,不分頻

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上計數

TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根據以上功能對定時器進行初始化


 

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                     //選擇定時器模式,TIM脈沖寬度調制模式2

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;          //比較輸出使能

TIM_OCInitStructure.TIM_OutputState = TIM_OutputNState_Enable;       //互補端輸出使能

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;                   //輸出比較極性

TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;              //輸出互補端極性

//TIM1_OCInitStructure.TIM1_OCIdleState = TIM1_OCIdleState_Reset;     //死區后輸出狀態

//TIM1_OCInitStructure.TIM1_OCNIdleState = TIM1_OCIdleState_Reset;  //死區后互補端輸出狀態

TIM_OCInitStructure.TIM_Pulse = ccr1;         //設置通道CH1/CH1N占空比

TIM_OC1Init(TIM1, &TIM_OCInitStructure);   //通道CH1/CH1N初始化

TIM_OCInitStructure.TIM_Pulse = ccr2;         //設置通道CH2/CH2N占空比

 

TIM_OC2Init(TIM1, &TIM_OCInitStructure);   //通道CH2/CH2N初始化

TIM_OCInitStructure.TIM_Pulse = ccr3;        //設置通道CH3/CH3N占空比

TIM_OC3Init(TIM1, &TIM_OCInitStructure);  //通道CH3/CH3N初始化


 

TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);

TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);

TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);


 

TIM1_BDTRInitStructure.TIM1_OSSRState = TIM1_OSSRState_Enable;                          //運行模式下輸出選擇

TIM1_BDTRInitStructure.TIM1_OSSIState = TIM1_OSSIState_Enable;                            //空閑模式下輸出選擇

TIM1_BDTRInitStructure.TIM1_LOCKLevel = TIM1_LOCKLevel_OFF;                              //鎖定設置

TIM1_BDTRInitStructure.TIM1_DeadTIM1 = 0xF2;                                                          //死區時間,2us

TIM1_BDTRInitStructure.TIM1_Break = TIM1_Break_Enable;                                          //剎車功能使能

TIM1_BDTRInitStructure.TIM1_BreakPolarity =TIM1_BreakPolarity_High;                     //剎車輸入極性

TIM1_BDTRInitStructure.TIM1_AutomaticOutput =TIM1_AutomaticOutput_Enable;    //自動輸出使能


 

 

TIM1_BDTRConfig(&TIM1_BDTRInitStructure); 


TIM_Cmd(TIM1, ENABLE); //使能TIM1

TIM1_CtrlPWMOutputs(ENABLE); //使能TIM1的主輸出

}

至此,用TIM1產生6路PWM互補輸出的配置結束。


TIM1輸出初始化缺省值:

{

TIM1_OCMode = TIM1_OCMode_Timing;

TIM1_OutputState = TIM1_OutputState_Disable;

TIM1_OutputNState = TIM1_OutputNState_Disable;

TIM1_Pulse = TIM1_Pulse_Reset_Mask;

TIM1_OCPolarity = TIM1_OCPolarity_High;

TIM1_OCNPolarity = TIM1_OCNPolarity_High;

TIM1_OCIdleState = TIM1_OCIdleState_Reset;

TIM1_OCNIdleState = TIM1_OCNIdleState_Reset;

}


TIM1死區初始化缺省值:

{

TIM1_OSSRState = TIM1_OSSRState_Disable;

TIM1_OSSIState = TIM1_OSSIState_Disable;

TIM1_LOCKLevel = TIM1_LOCKLevel_OFF;

TIM1_DeadTime = TIM1_DeadTime_Reset_Mask;

TIM1_Break = TIM1_Break_Disable;

TIM1_BreakPolarity = TIM1_BreakPolarity_Low;

TIM1_AutomaticOutput = TIM1_AutomaticOutput_Disable;

}



主要完成任務:

1、對無霍爾BLDC電機程序作了更深層的理解,嘗試修改程序將 PWM_OFF的過零檢測模式換成PWM_ON,刪除程序冗余部分,對TIM 高級定時器的程序段作了詳細注釋,加深印象。

2、對有霍爾BLDC電機程序進行了解及解讀,基本上理解其運行原理及程序編寫方式。

霍爾元件的BLDC電機:

與不帶霍爾元件的電機的區別除了少了啟動檢測外,多了EXTI 外部中斷,電機的轉動程序在此中斷服務子程序中?;魻栐臋z測采用了三個中斷線路捕獲轉子位置。

對于其PWM輸出與無霍爾元件BLDC電機相同,換向也是用六步換向為霍爾六步換向,但無過零檢測即無ADC 外設的參與。


關鍵字:STM32  電機方波  PWM  輸出配置 引用地址:【STM32電機方波】記錄4——PWM輸出配置

上一篇:【STM32電機矢量控制】記錄5——FOC原理大概
下一篇:【STM32電機方波】記錄3——TIM1時基初始化配置

推薦閱讀

全球工業機器人產業正以驚人的速度發展,而協作機器人作為未來的一大趨勢,逐步顯現出巨大的市場潛力。高度靈活、易于編程的協作機器人可以應用到更多的場景當中,未來的機遇很大,越來越多的企業開始投身其中。近日,在上海舉辦的第二十屆中國國際工業博覽會上,眾多全球知名機器人企業展示了最新的機器人技術和產品解決方案,而來自丹麥的OnRobot也帶來...
中國儲能網訊:9月17日,在上海青浦與江蘇吳江交界,隨著國網上海市電力公司、國網江蘇省電力有限公司施工人員在最后一段線路上的接頭搭通完工,上海聯系江蘇的青浦-吳江10千伏互聯工程正式建成貫通。這是繼青浦聯系嘉善之后的第二條配電網跨省聯絡線路,也標志著上海已與浙江、江蘇實現了配電網跨省互聯互通,長三角地區跨區域電力融合進入了嶄新的階段...
致力于建立更智能、更互聯世界的領先芯片、軟件和解決方案供應商Silicon Labs(亦稱“芯科科技”,NASDAQ:SLAB),宣布與亞馬遜(Amazon)合作支持Amazon Sidewalk,這是一種通過相鄰區域之間分享部分Wi-Fi帶寬而創建的共享網絡,可以幫助設備在家中和戶外更順暢地工作。 Silicon Labs針對Amazon Sidewalk開發的無線解決方案,使開發人員無論使用任何...
  IP防護等級是指產品防塵防水的能力,IP防護等級是由兩個數字所組成,第1個數字表示電器防塵、防止外物侵入的等級,這里所指的外物含工具,人的手指等均不可接觸到電器內之帶電部分,以免觸電。第2個數字表示電器防濕氣、防水侵入的密閉程度。如下表所示:  通過大量實例,我們發現,一旦有水或灰塵進入產品外殼里面,將會造成產品失效或故障,尤其是...

史海拾趣

問答坊 | AI 解惑

步進電機和交流伺服電機性能比較

 步進電機是一種離散運動的裝置,它和現代數字控制技術有著本質的聯系。在目前國內的數字控制系統中,步進電機的應用十分廣泛。隨著全數字式交流伺服系統的出現,交流伺服電機也越來越多地... …

查看全部問答∨

【藏書閣】模擬電子技術基礎實驗與課程設計

目錄: 第一編 模擬電子技術基礎實驗基本知識 第一章 概述 第二章 實驗程序 第三章 模擬電子技術基礎實驗常用儀器使用練習 第四章 萬用表對常用電子元器件的檢測 第五章 集成運算放大器的主要參數測試 第六章 電路故障分析、排除及抗干擾 ...…

查看全部問答∨

有沒有用過幾元的AD芯片?

現在發現很多AD芯片價格都降不下來, 有沒有用過幾元的,請推薦一下…

查看全部問答∨

請各位推薦有關交流采樣的書?

我在研究交流采樣程序,對這方面有些一頭霧水,忘各位推薦一些初級的書/…

查看全部問答∨

請問各位wince的資源管理器有沒有右鍵菜單?

在win32下,資源管理器里右擊一個文件會彈出一個菜單。那在wince下有這個功能嗎? 我試了半天也沒搞出來。強烈懷疑沒這個功能。 …

查看全部問答∨

基于arm的大樓燈光控制器需要的硬件設備.

這是我的畢業設計題目,還不知道怎么做,希望得到幫助! …

查看全部問答∨

關于NDIS顯示數據包內容的問題

如果我要在NDIS中間驅動層攔截網絡數據包,那么,如果要把NDIS中間驅動層中截獲的一個NDIS封包全部輸出來,包括頭還有數據部分,以二進制的形式全部顯示出來,應如何實現呢?…

查看全部問答∨

信號切換問題

A,B兩路信號選擇一路通過,當然這是兩路都有信號的情況,如果只有一路有就直接讓它通過就是了.現在我用的是ls123觸發器來判斷哪路有信號但是試驗板做出來老是有問題不知道還有沒有別的什么思路不用ls123觸發器.謝謝希望高手指點…

查看全部問答∨

DS1302有關問題求指教

在定入單字節中為什么是for(i=0;i<8;i++)         {         sck=0;         sda=dat&0x01;//取出dat的第0位數據寫入1302 數據由低位開始傳         dat ...…

查看全部問答∨

一些下載的資料拿來分享

一些下載的資料拿來分享…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 辽阳市| 沾益县| 宝清县| 常熟市| 辛集市| 蒙山县| 垦利县| 永寿县| 南宫市| 九江县| 兴安县| 富阳市| 鄱阳县| 盐边县| 略阳县| 宁蒗| 巴塘县| 宿迁市| 农安县| 嘉善县| 北安市| 南漳县| 陆川县| 新安县| 高要市| 黄陵县| 乌鲁木齐县| 保山市| 仙桃市| 玛沁县| 青铜峡市| 梅州市| 平阳县| SHOW| 松桃| 丰原市| 淳化县| 威海市| 利辛县| 大连市| 奇台县|