于pwm波的輸出實(shí)驗(yàn)老早之前就學(xué)了,一直拖到現(xiàn)在才寫,,,。由于之前接觸過32的高級(jí)定時(shí)器所以是先從死區(qū)pwm波開始學(xué)的,后面才學(xué)的pwm波。其實(shí)會(huì)發(fā)出死區(qū)pwm波了也就會(huì)發(fā)pwm波了。在學(xué)習(xí)32的某個(gè)功能時(shí)要先去看32的數(shù)據(jù)參考手冊(cè)了解它的功能然后看它有哪些寄存器,對(duì)你需要用到的寄存器深入了解,最后看庫函數(shù)進(jìn)行編程。
要發(fā)出死區(qū)pwm波就要用到32的高級(jí)定時(shí)器TIM1或TIM8,這兩個(gè)定時(shí)器才有死區(qū)寄存器才能發(fā)出死區(qū)pwm波,對(duì)于它們的介紹網(wǎng)上資料有很多這里就不重復(fù)啰嗦了,但需要看幾個(gè)重要的寄存器:
● 控制寄存器(TIMx_CRx)
● 模式控制寄存器(TIMx_SMCR)
● 狀態(tài)寄存器(TIMx_SR)
● 計(jì)數(shù)器寄存器(TIMx_CNT)
● 預(yù)分頻器寄存器(TIMx_PSC)
● 自動(dòng)裝載寄存器(TIMx_ARR)
● 重復(fù)次數(shù)寄存器(TIMx_RCR)
● 剎車和死區(qū)寄存器(TIMx_BDTR)
前面幾個(gè)寄存器是在配置TIM1/TIM8是要用到的基本設(shè)置。自動(dòng)裝載寄存器是預(yù)先裝載的,寫或讀自動(dòng)重裝載寄存器將訪問預(yù)裝載寄存器。根據(jù)在TIMx_CR1寄存器中的自動(dòng)裝載預(yù)裝載使能位(ARPE)的設(shè)置,預(yù)裝載寄存器的內(nèi)容被立即或在每次的更新事件UEV時(shí)傳送到影子寄存器。當(dāng)計(jì)數(shù)器達(dá)到溢出條件(向下計(jì)數(shù)時(shí)的下溢條件)并當(dāng)TIMx_CR1寄存器中的UDIS位等于0時(shí),產(chǎn)生更新事件。更新事件也可以由軟件產(chǎn)生。計(jì)數(shù)器由預(yù)分頻器的時(shí)鐘輸出CK_CNT驅(qū)動(dòng),僅當(dāng)設(shè)置了計(jì)數(shù)器TIMx_CR1寄存器中的計(jì)數(shù)器使能位(CEN)時(shí),CK_CNT才有效。(更多有關(guān)使能計(jì)數(shù)器的細(xì)節(jié),請(qǐng)參見控制器的從模式描述)。注意,在設(shè)置了TIMx_CR寄存器的CEN位的一個(gè)時(shí)鐘周期后,計(jì)數(shù)器開始計(jì)數(shù)。最后來看一下死區(qū)寄存器:它是用來設(shè)置兩個(gè)互補(bǔ)pwm波的死區(qū)時(shí)間的
上面的位都是在配置死區(qū)寄存器要用到的基本配置,下面是它的死區(qū)時(shí)間配置位[7:0]
DT表示的是死區(qū)時(shí)間,分了有四種情況位[7:5]為0xx、10x、110、111(x表示0或1)。32的主頻是72M,它每走一下的時(shí)間為1/72000000=13.89ns。表中64的由來是2^6,由此32是2的5次方。因?yàn)閁TG是有8個(gè)位。
知道這些應(yīng)該差不多了,接著就去看它的庫函數(shù)吧,32定時(shí)器的庫函數(shù)有兩頁之多,需仔細(xì)的看,死區(qū)寄存器的配置要注意兩路波的極性,不能搞錯(cuò)了。
#include "pwm.h"
#include "sys.h"
//FUNCTION:TIM1初始化函數(shù)
//AUTHOR:BiggerPast
//DATE:20181010
void TIM1_Init(u16 arr,u16 psc,u16 dead_time)
{
float T_TDS=13.89;//13.89ns
u16 death_time;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure; //死區(qū)設(shè)置
//dead_time--->255,以下計(jì)算按死區(qū)寄存器UTG位而得
if(dead_time >=0 && dead_time <=1764)//公式1
death_time = dead_time/T_TDS;
else if(dead_time>=1778 && dead_time<=3529)//公式2
death_time=dead_time/(T_TDS*2)+64;
else if(dead_time>=3556 && dead_time<=7001)//公式3
death_time=dead_time/(T_TDS*8)+160;
else if(dead_time>=7112 && dead_time<=14001)//公式4
death_time=dead_time/(T_TDS*16) + 192;
else
death_time=death_time;
//IO口初始化
RCC->APB2ENR|=(1<<2)|(1<<3)|(1<<11);//使能PA PB TIM1時(shí)鐘
GPIOA->CRH&=0XFFFFF000;//清除設(shè)置
GPIOB->CRH&=0X000FFFFF;
GPIOA->CRH|=0X0000000A;//PA8復(fù)用推挽輸出 2M
GPIOB->CRH|=0X00A00000;//B13復(fù)用推挽輸出 2M
//定時(shí)器配置
TIM_TimeBaseStructure.TIM_Period = arr;//在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler = psc;//TIM1時(shí)鐘頻率除數(shù)的預(yù)分頻值
TIM_TimeBaseStructure.TIM_ClockDivision = 0;//時(shí)鐘分頻可為1,2,4
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;// 計(jì)數(shù)模式Up為向上計(jì)數(shù),Down向下
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;//重復(fù)計(jì)數(shù)
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);
//輸出波形配置 CH1
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//定時(shí)器模式為PWM模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//輸出比較使能
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;//輸出比較N使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//空閑輸出極性高
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;//空閑輸出高
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;//空閑輸出低
TIM_OCInitStructure.TIM_Pulse = duty;
TIM_OC1Init(TIM1,&TIM_OCInitStructure);
/*高級(jí)定時(shí)器死區(qū)配置*/
TIM_BDTRInitStructure.TIM_AutomaticOutput=TIM_AutomaticOutput_Enable;//MOE主輸出使能
TIM_BDTRInitStructure.TIM_Break=TIM_Break_Disable;//剎車功能禁止
TIM_BDTRInitStructure.TIM_BreakPolarity=TIM_BreakPolarity_High;
TIM_BDTRInitStructure.TIM_DeadTime=death_time;//死區(qū)時(shí)間
TIM_BDTRInitStructure.TIM_LOCKLevel=TIM_LOCKLevel_OFF;//鎖定關(guān)閉,寄存器無寫保護(hù)
TIM_BDTRInitStructure.TIM_OSSRState=TIM_OSSRState_Disable;
TIM_BDTRInitStructure.TIM_OSSIState=TIM_OSSIState_Disable;
TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
TIM_CtrlPWMOutputs(TIM1,ENABLE);//MOE主輸出使能 高級(jí)定時(shí)器必須
TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);//CH1預(yù)裝載使能
TIM_ARRPreloadConfig(TIM1,ENABLE);//使能TIM1在ARR上的預(yù)裝載寄存器
TIM_Cmd(TIM1,ENABLE);
}
總結(jié):波形的輸出端口有個(gè)映射的問題:映射就像是功能復(fù)制,把一個(gè)IO口的功能復(fù)制到另一個(gè)IO口,當(dāng)一個(gè)IO口的功能重復(fù)時(shí)通過映射就可以實(shí)現(xiàn)一個(gè)IO口實(shí)現(xiàn)不同的功能了。需要特別注意,不然輸出波形不正常!
上一篇:STM32之3路ADC同步轉(zhuǎn)換
下一篇:STM32學(xué)習(xí)——矩陣鍵盤
推薦閱讀
史海拾趣
隨著公司的發(fā)展,E-Switch不斷推出新產(chǎn)品,以滿足不同客戶的需求。從最初的輕觸開關(guān),到后來的防破壞按鈕、搖桿開關(guān)、滑動(dòng)開關(guān)等多種類型,E-Switch的產(chǎn)品線逐漸豐富起來。同時(shí),公司也積極拓展市場,將產(chǎn)品銷往全球各地,進(jìn)一步提升了品牌影響力。
億寶科技在成立初期,就明確了以技術(shù)創(chuàng)新為核心的發(fā)展戰(zhàn)略。公司創(chuàng)始人帶領(lǐng)研發(fā)團(tuán)隊(duì),深入研究市場需求,不斷推出具有競爭力的電子產(chǎn)品。在一次偶然的機(jī)會(huì)中,他們成功研發(fā)出一款具有高性能、低功耗特點(diǎn)的芯片,這一創(chuàng)新技術(shù)迅速獲得了市場的認(rèn)可。此后,億寶科技不斷加大研發(fā)投入,形成了一套完整的自主研發(fā)體系,為公司后續(xù)的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
背景:GardTec始終致力于產(chǎn)品創(chuàng)新和技術(shù)研發(fā),不斷推出符合市場需求的新產(chǎn)品。
發(fā)展:公司積極與風(fēng)扇制造商密切合作,聯(lián)合推出了一系列具有創(chuàng)新性的風(fēng)扇配件產(chǎn)品。同時(shí),GardTec還投入大量資源用于研發(fā)工作,不斷提升產(chǎn)品的技術(shù)含量和附加值。
影響:通過持續(xù)的創(chuàng)新與合作,GardTec不僅鞏固了其在風(fēng)扇配件市場的領(lǐng)先地位,還推動(dòng)了整個(gè)行業(yè)的技術(shù)進(jìn)步和產(chǎn)業(yè)升級(jí)。
為了加速Q(mào)uantum?可編程加速器技術(shù)的商業(yè)化進(jìn)程,EFINIX公司與中芯國際集成電路制造有限公司展開合作。中芯國際是世界領(lǐng)先的集成電路晶圓代工企業(yè)之一,其先進(jìn)的制造能力為EFINIX公司提供了強(qiáng)有力的支持。雙方合作僅用了不到六個(gè)月的時(shí)間,就成功交付了首批Quantum?可編程加速器產(chǎn)品樣本,創(chuàng)造了行業(yè)內(nèi)的里程碑。
為了進(jìn)一步拓展國際市場,F(xiàn)EI Microwave Inc公司積極尋求與國際知名企業(yè)的合作。通過與歐洲宇航防務(wù)集團(tuán)下屬的子公司Astrium的合作,F(xiàn)EI Microwave Inc公司的微波技術(shù)成功應(yīng)用于航天領(lǐng)域,為火箭發(fā)射任務(wù)提供了關(guān)鍵的技術(shù)支持。這次成功的合作不僅提升了FEI Microwave Inc公司的品牌知名度,也為其在國際市場上贏得了更多的機(jī)會(huì)。
為了進(jìn)一步擴(kuò)大市場份額,GD Rectifiers Ltd實(shí)施了積極的國際化戰(zhàn)略。公司首先在歐洲市場設(shè)立了銷售分支機(jī)構(gòu),憑借其優(yōu)質(zhì)的產(chǎn)品和服務(wù)迅速贏得了當(dāng)?shù)乜蛻舻恼J(rèn)可。隨后,公司又陸續(xù)在北美、亞洲等地區(qū)建立了分銷網(wǎng)絡(luò),逐步構(gòu)建起覆蓋全球的營銷體系。在國際化進(jìn)程中,GD Rectifiers Ltd注重與當(dāng)?shù)仄髽I(yè)的合作與交流,共同推動(dòng)行業(yè)標(biāo)準(zhǔn)的制定和技術(shù)進(jìn)步。通過不斷的努力,公司成功地將品牌和產(chǎn)品推向了全球市場,實(shí)現(xiàn)了業(yè)務(wù)規(guī)模的快速增長。
大家討論一下電子技術(shù)課程設(shè)計(jì)的項(xiàng)目問題 本帖最后由 paulhyde 于 2014-9-15 09:26 編輯 如題,電子技術(shù)課程設(shè)計(jì)的項(xiàng)目問題一直困擾,想分三種類型,一種就是“合格”標(biāo)準(zhǔn)的題目,一種“良好”標(biāo)準(zhǔn),一種“優(yōu)秀”標(biāo)準(zhǔn),可就是確定不了具體用什么項(xiàng)目,請(qǐng)各位大蝦支招!謝謝! … 查看全部問答∨ |
|
Led 強(qiáng)大創(chuàng)意設(shè)計(jì)-有趣、時(shí)尚、另類的創(chuàng)意圖片!不可不看?。?! replyreload += \',\' + 380871;Timson,如果您要查看本帖隱藏內(nèi)容請(qǐng)回復(fù)把480個(gè)Led燈及光學(xué)感應(yīng)器嵌在桌子里面, 只要你輕輕觸碰到桌面,就如水面一樣,會(huì)泛起led燈的漣漪效果,非常棒的效果。 LED 夾燈給夾子加上一個(gè)小小的led 燈,它的效果和功 ...… 查看全部問答∨ |
|
高人請(qǐng)幫忙解答一下: 1,online mode下發(fā)送+++使modem進(jìn)入command mode,此時(shí)online mode是不是被中斷了? 2,對(duì)話后收到CONNECT,是不是說明modem進(jìn)入online mode? 3,為了使modem 進(jìn)入command mode并發(fā)送想要的command, 下面的AT command 是不是有 ...… 查看全部問答∨ |
|
初學(xué)者,請(qǐng)教下430中的pringtf怎么調(diào)試呢 我用的IAR,f5438開發(fā)板下面那個(gè)printf不知道打印到哪里去了?求指點(diǎn); #include \"msp430x54x.h\" #include \"stdio.h\" //************************************************************* unsigned char *point; void main( void ) { ...… 查看全部問答∨ |
|
比如說,由keil生成的bin文件。 源代碼中的函數(shù)是不是在bin文件中已經(jīng)有確定地址了,還是說等bin文件加載到內(nèi)存中以后才有的地址。 一直很疑惑這一點(diǎn),望老大給指點(diǎn)一下哈?!? 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- ARXML 規(guī)則下 ECU 總線通訊與 ADTF 測試方案
- 日產(chǎn)在歐洲推出第三代e-POWER技術(shù)
- 福特CEO更看好Waymo激光雷達(dá)方案:比特斯拉純視覺自動(dòng)駕駛路線可靠
- 智元機(jī)器人兩大核心產(chǎn)品啟動(dòng)規(guī)?;a(chǎn)
- 固態(tài)電池2026量產(chǎn)豪賭,真相還是泡沫?
- 100億元!湖北“下注”人形機(jī)器人產(chǎn)業(yè)
- 海外磷酸鐵鋰電池產(chǎn)能從0到1
- 基于多傳感器數(shù)據(jù)的自動(dòng)駕駛仿真確定性驗(yàn)證
- 國芯科技發(fā)布全球首款48V安全氣囊芯片,引領(lǐng)智能汽車新紀(jì)元
- 亞馬遜全球部署100萬臺(tái)機(jī)器人
- 下載有禮|ADI 最新《模擬對(duì)話》合訂本
- ADI有獎(jiǎng)下載活動(dòng)之11 ADI鋰電池測試設(shè)備解決方案
- 尋寶大冒險(xiǎn),搜索有好禮!
- TI系列有獎(jiǎng)直播|電源設(shè)計(jì)實(shí)戰(zhàn)進(jìn)階:從數(shù)字電源控制、LDO優(yōu)化到PCB布局全攻略
- 新春尋寶記,泰克送福利!快來開啟你的尋寶之旅~
- 悅覽 PI 節(jié)能技術(shù)資料,參與測試、評(píng)論贏雙重好禮!
- 參加RT-Thread軟件包賽,贏取RoboMaster等豐厚獎(jiǎng)品!
- 希望一月 愛上EEWORLD——論壇推廣月(恩智浦全程贊助)
- 有獎(jiǎng)直播報(bào)名:大聯(lián)大世平集團(tuán)&恩智浦 | AI 無所不在,單板電腦也可以
- Silicon Labs加入Wi-SUN聯(lián)盟
- stm32——串口配置一般步驟
- STM32系統(tǒng)學(xué)習(xí)——USART(串口通信)
- 關(guān)于2440的MDK平臺(tái)下移植ucOS2,遇到的問題,及解決辦法
- keil5中找不到lpc2368的解決方法
- 博通、高通合并 英特爾為何愁容滿面?
- 官方自曝紅米Note5夜拍樣張:AI雙攝系統(tǒng)成亮點(diǎn)
- 工信部部長苗圩:中國已在著手研究6G
- Nvidia將會(huì)準(zhǔn)備兩種架構(gòu):“圖靈”才是游戲顯卡
- 蘋果又雙叒叕申請(qǐng)新專利:下代Lightning接口能防水