![PWM發(fā)脈沖,怎么精確控制發(fā)脈沖的個數(shù)呢_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/7/39b7b123-467e-42d0-9062-d2e80db11e97/39b7b123-467e-42d0-9062-d2e80db11e971.gif)
![PWM發(fā)脈沖,怎么精確控制發(fā)脈沖的個數(shù)呢_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/7/39b7b123-467e-42d0-9062-d2e80db11e97/39b7b123-467e-42d0-9062-d2e80db11e972.gif)
![PWM發(fā)脈沖,怎么精確控制發(fā)脈沖的個數(shù)呢_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/7/39b7b123-467e-42d0-9062-d2e80db11e97/39b7b123-467e-42d0-9062-d2e80db11e973.gif)
![PWM發(fā)脈沖,怎么精確控制發(fā)脈沖的個數(shù)呢_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/7/39b7b123-467e-42d0-9062-d2e80db11e97/39b7b123-467e-42d0-9062-d2e80db11e974.gif)
![PWM發(fā)脈沖,怎么精確控制發(fā)脈沖的個數(shù)呢_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/7/39b7b123-467e-42d0-9062-d2e80db11e97/39b7b123-467e-42d0-9062-d2e80db11e975.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、STM32的PWM發(fā)送脈沖,周期和脈寬都可調(diào)了,但是現(xiàn)在不知道如何精確的控制所發(fā)的脈沖個數(shù)。具體要求就是在一段時間內(nèi)大概50ms內(nèi)發(fā)送5000-1W個脈沖個數(shù)要很精確,誤差2個以內(nèi)可以接受該怎么控制呢?1 .接上一個外部中斷口,在中斷中計(jì)數(shù)2 .用一個定時器對發(fā)脈沖的時間進(jìn)行控制各位大俠還有什么好的辦法嗎?求解啊!PWM溢出中斷計(jì)數(shù),是個不錯的解決辦法。如果一個上升沿算一個脈沖的話,控制周期(頻率)不就行了開啟PWM輸出的溢出中斷,進(jìn)入一次中斷,就是一個波位1CC1G:產(chǎn)生拔腳比較1.事件(Captur旬8mpare1generation)讀位由軟件置用于產(chǎn)生一力捕獲/比較事件p由硬件自動清唱
2、無動彳忸1:在通道CC1上叩生一個插樹比較事件:著通道CC1配置為輸出1設(shè)置CC1IF=1.若開啟對應(yīng)的中斷和口MA,則產(chǎn)生相拊的:祈和DMA,若遍道CC1配置為輸入1當(dāng)前的計(jì)數(shù)器值捕獲至TIMk_CCR1寄存器:設(shè)置CC1IF=1,若開啟對應(yīng)的中斷和口MA,則產(chǎn)生相庾的中斷和DMA.若CC1IF己姓為1,則設(shè)置CC1OF=1n原子哥是這里嗎?設(shè)置這個寄存器或者只是簡單的定時器溢出中斷oidTIM3_IRQHandler(void)(if(TIM3->SR&0X0001)/溢出中斷/計(jì)數(shù))TIM3->SR&=(1<<0);/清除中斷標(biāo)志位)看我們開發(fā)板:
3、定時器中斷例程。你好原子哥中斷計(jì)數(shù)的話那怎么停止呢還有停止了還想讓他循環(huán)發(fā)送呢有沒有實(shí)現(xiàn)好的源程序呢我是STM32F103控制輸出方波的脈沖數(shù)和周期好多人遇到這個問題,額!現(xiàn)在我用了兩種方法實(shí)現(xiàn),感覺都不好!方案1:定時器翻轉(zhuǎn)IO,到達(dá)指定個數(shù)關(guān)閉TIM方案2:PWM開啟比較捕獲中斷,到達(dá)指定個數(shù)關(guān)閉TIM感覺都是頻繁進(jìn)中斷,占用大量CP0源。不能做其他事了voidTIM4_GPIO_Config(void)(GPIO_InitTypeDefGPIO_InitStructure;/*TIM4clockenable*/PCLK1經(jīng)過2倍頻后作為TIM4的時鐘源等于72MHzRCC_APB1Per
4、iphClockCmd(RCC_APB1Periph_TIM4,ENABLE);NVIC_Configuration(1);/*GPIOBclockenable*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPI|ORBCC_APB2Periph_GPIOC,ENABLE);/*GPIOBConfiguration:TIM4channel1and2asalternatefunctionpush-pull*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode
5、=GPIO_Mode_AF_PP;/復(fù)用推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_ResetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);voidTim2_Slave_Init(void)一一TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_DeInit(TIM2);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);NVIC
6、_Configuration(8);TIM_TimeBaseStructure.TIM_Period=XBUF1-1;TIM_TimeBaseStructure.TIM_Prescaler=0;/時鐘預(yù)分頻數(shù)一一TIM_TimeBaseStructure.TIM_ClockDivision=0;/采樣分頻TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;向上溢出TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);TIM_SelectInputTrigger(TIM2,TIM_TS_I
7、TR3);/選擇TIM2的輸入觸發(fā)源內(nèi)部襁發(fā)3TIM4TIM_InternalClockConfig(TIM2);TIM2->SMCR|=0x0007;/設(shè)定從模式控制寄存器,外部時鐘模式1上升沿驅(qū)動計(jì)數(shù)/TIM_UpdateDisableConfig(TIM4,ENABLE);TIM_ARRPreloadConfig(TIM2,ENABLE);TIM_ClearFlag(TIM2,TIM_FLAG_Update);/清除溢出中斷標(biāo)志TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);TIM_Cmd(TIM2,ENABLE);/是否開啟時鐘(開啟后每發(fā)送一個脈
8、沖,定時器加一)voidTim3_Slave_Init(void)TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_DeInit(TIM3);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);NVIC_Configuration(9);TIM_TimeBaseStructure.TIM_Period=XBUF3-1;TIM_TimeBaseStructure.TIM_Prescaler=0;/時鐘預(yù)分頻數(shù)TIM_TimeBaseStructure.TIM_ClockDivision=0;/采樣分
9、頻TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;/向上溢出TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);TIM_SelectInputTrigger(TIM3,TIM_TS_ITR3);/選擇TIM2的輸入觸發(fā)源內(nèi)部襁發(fā)3TIM4TIM_InternalClockConfig(TIM3);TIM3->SMCR|=0x0007;/設(shè)定從模式控制寄存器,外部時鐘模式1上升沿驅(qū)動計(jì)數(shù)/TIM_UpdateDisableConfig(TIM4,ENABLE);TIM_ARRP
10、reloadConfig(TIM3,ENABLE);TIM_ClearFlag(TIM3,TIM_FLAG_Update);/清除溢出中斷標(biāo)志TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);TIM_Cmd(TIM3,ENABLE);/是否開啟時鐘(開啟后每發(fā)送一個脈沖,定時器加一)/* 函數(shù)名:TIM4_Mode_Config* 描述:配置TIM4輸出的PWMS號的模式,如周期、極性、占空比* 輸入:無* 輸出:無* 調(diào)用:內(nèi)部調(diào)用* /voidTIM4_PWM_Init(u16T)TIM_TimeBaseInitTypeDefTIM_TimeBaseStruc
11、ture;TIM_OCInitTypeDefTIM_OCInitStructure;u16CCR1_Val=(T+1)/2;u16CCR2_Val=(T+1)/2;u16CCR3_Val=(T+1)/2;u16CCR4_Val=(T+1)/2;/*TIM1Configuration:generate4PWMignalswith4differentdutycycles:TIM1CLK=36MHz,Prescaler=0x0,TIM1counterclock=36MHzTIM1ARRRegister=999=>TIM1Frequency=TIM1counterclock/(ARR+1)TIM
12、1Frequency=36KHz.TIM1Channel1dutycycle=(TIM1_CCR1/TIM1_ARR)*100=50%TIM1Channel2dutycycle=(TIM1_CCR2/TIM1_ARR)*100=50%TIM1Channel3dutycycle=(TIM1_CCR3/TIM1_ARR)*100=50%TIM1Channel4dutycycle=(TIM1_CCR4/TIM1_ARR)*100=50%*/*Timebaseconfiguration*/TIM_TimeBaseStructure.TIM_Period=T-1;/TusTIM_TimeBaseStru
13、cture.TIM_Prescaler=72-1;TIM_TimeBaseStructure.TIM_ClockDivision=0;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);TIM4->CR1&=(u16)0x03FD);/UDISenable/*PWM1Modeconfiguration:Channel1*/TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;TIM
14、_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse=CCR1_Val;TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;TIM_OC1Init(TIM4,&TIM_OCInitStructure);TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Enable);/*PWM1Modeconfiguration:Channel2*/TIM_OCInitStructure.TIM_O
15、utputState=TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse=CCR2_Val;TIM_OC2Init(TIM4,&TIM_OCInitStructure);TIM_OC2PreloadConfig(TIM4,TIM_OCPreload_Enable);/*TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse=CCR3_Val;TIM_OC3Init(TIM4,&TIM_OCInitStru
16、cture);TIM_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable);TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse=CCR4_Val;TIM_OC4Init(TIM4,&TIM_OCInitStructure);TIM_OC4PreloadConfig(TIM4,TIM_OCPreload_Enable);*/TIM_ARRPreloadConfig(TIM4,ENABLE);TIM_SelectOutputTrig
17、ger(TIM4,TIM_TRGOSource_OC1Ref);/*TIM1enablecounter*/TIM_Cmd(TIM4,ENABLE);/*MainOutputEnable*/TIM_CtrlPWMOutputs(TIM4,ENABLE);voidTIM4_PWM_START(void)TIM4_GPIO_Config();Tim2_Slave_Init();Tim3_Slave_Init();TIM4_PWM_Init(XBUF0);好像還有一種方法,就是利用定時器內(nèi)部互聯(lián),一個定時器的給另一個定時器提供時鐘,主從模式貌似,成功了!定時器內(nèi)部互聯(lián),一個PWM輸出脈沖給另一個定時提
18、供時鐘,每來一個脈沖,計(jì)數(shù)器值+1,當(dāng)+到指定個數(shù)后,產(chǎn)生一次中斷,然后關(guān)閉PWM輸出。發(fā)一次跟發(fā)n次,每次都是設(shè)置的脈沖數(shù)!很精確,一個不多一個不少,我測試了下20us的周期,發(fā)5000個,連續(xù)發(fā)了7次,都是準(zhǔn)的!上圖!不過感覺這種方法還不是我想要的,畢竟兩個定時器才控制一路脈沖,要是PWM的4個通道路分別給4個的定時器提供時鐘,那就好了!剛看了下手冊,這里確實(shí)能夠選擇比較捕獲通道Table53%TlM_TRGOSaurce值TIM_IRGOSourC描述TIMTROOScurce.Reset使用寄存器TIM_EGR的UG位作為觸發(fā)輸出(TRGO)IIM_TRGOSuurce_EnabIe使
19、用計(jì)數(shù)器使能CEN作為觸發(fā)輸出(TRGO)TIM.TRGOScurceUpdate使用更新事件作為觸發(fā)輸出(TRGO)TlM_TRGOSource_OCI一旦捕擾或者比匹配發(fā)生,當(dāng)標(biāo)志位CC1F被設(shè)置時觸發(fā)輸出發(fā)送一個肯定.峽祝(TRGO1TIM.TRGOSourceOClRef使用OCIREF作為觸發(fā)輸出TtRG。)TlM_TRGOSource_OC2Ref使用OC2REF作為觸發(fā)輸出(TRCK>)T1M_TRGOSourceOC3Ref使用OC3REF作為觸發(fā)輸對CTRGO)TJM_Tf<GOSuurfe_OC4Ref使用OC4REF作為觸發(fā)輸出(TRGO)例:如果是1路脈沖的
20、話,我選擇TIM_TRGOSource_Update和TIM_TRGOSource_OC1一樣的效果,不同在于后者每次脈沖會少一個。脈沖輸出通道1脈沖輸出通道2脈沖輸出通道3脈沖輸出通道4選擇TIM_TRGOSource_OC1Ref選擇TIM_TRGOSource_OC2Ref選擇TIM_TRGOSource_OC3Ref選擇TIM_TRGOSource_OC4Ref這樣話有個問題,是不是一個主定時器能有多個從定時器,從定時器:TIM2,TIM3TIM_SelectInputTrigger(TIM2,TIM_TS_ITR3);TIM_SelectInputTrigger(TIM3,TIM_TS_ITR3);主定時器:TIM4TIM_SelectOutputTrigger(TIM4,TIM_TRGOSource_OC1Ref|TIM_TRGOSource_OC2Ref);卡到這里了,這個主定時器的觸發(fā)輸入該如何選擇啊,上面這樣可行嗎?為何每次都有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版地理八年級上冊第二節(jié)《人口》聽課評課記錄3
- 粵教版道德與法治九年級上冊3.1.1《可持續(xù)發(fā)展戰(zhàn)略》聽課評課記錄
- 2025年運(yùn)載火箭承力殼段合作協(xié)議書
- 環(huán)保清潔標(biāo)準(zhǔn)協(xié)議書(2篇)
- 【部編版】道德與法治九年級下冊5.1《走向世界大舞臺》聽課評課記錄
- 新版湘教版秋八年級數(shù)學(xué)上冊第四章一元一次不等式組課題一元一次不等式組聽評課記錄
- 新北師大版數(shù)學(xué)一年級下冊《數(shù)一數(shù)》聽評課記錄
- 人教版七年級道德與法治七年級上冊聽課評課記錄:第四單元生命的思考第八課探問生命第一課時《生命可以永恒嗎》
- 湘教版九年級數(shù)學(xué)下冊2.2圓心角、圓周角2.2.1圓心角聽評課記錄
- 人教部編版八年級道德與法治上冊:4.1《尊重他人》聽課評課記錄1
- 醫(yī)院消防安全培訓(xùn)課件
- 質(zhì)保管理制度
- 《00541語言學(xué)概論》自考復(fù)習(xí)題庫(含答案)
- 2025年機(jī)關(guān)工會個人工作計(jì)劃
- 2024年全國卷新課標(biāo)1高考英語試題及答案
- 2024年10月自考13003數(shù)據(jù)結(jié)構(gòu)與算法試題及答案
- 華為經(jīng)營管理-華為激勵機(jī)制(6版)
- 2024年標(biāo)準(zhǔn)化工地建設(shè)管理實(shí)施細(xì)則(3篇)
- 江蘇省南京市、鹽城市2023-2024學(xué)年高三上學(xué)期期末調(diào)研測試+英語+ 含答案
- 2024護(hù)理不良事件分析
- 光伏項(xiàng)目的投資估算設(shè)計(jì)概算以及財(cái)務(wù)評價介紹
評論
0/150
提交評論