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

歷史上的今天

今天是:2025年03月29日(星期六)

2020年03月29日 | stm32---輸入捕獲

發(fā)布者:電子設(shè)計(jì)探索者 來(lái)源: eefocus關(guān)鍵字:stm32  輸入捕獲  基本定時(shí)器 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

輸入捕獲模式可以用來(lái)測(cè)量脈沖寬度或者測(cè)量頻率。STM32 的定時(shí)器,除了 TIM6 和 TIM7,其他定時(shí)器都有輸入捕獲功能。STM32 的輸入捕獲,簡(jiǎn)單地說(shuō)就是通過(guò)檢測(cè) TIMx_CHx 上的邊沿信號(hào),在邊沿信號(hào)發(fā)生跳變(比如上升沿/下降沿)的時(shí)候,將當(dāng)前定時(shí)器的值(TIMx_CNT)存放到對(duì)應(yīng)的通道的捕獲/比較寄存器(TIMx_CCRx)中。

1. 相關(guān)寄存器介紹

1) 捕獲/比較模式寄存器 (TIMx_CCMRx) 


當(dāng)在輸入捕獲模式下使用的時(shí)候,對(duì)應(yīng)上圖的第二行描述,從圖中可以看出,TIMx_CCMR1 明顯是針對(duì) 2 個(gè)通道的配置,低八位[7:0]用于捕獲/比較通道 1 的控制,而高八位[15:8]則用于捕獲/比較通道 2 的控制。同理,CCMR2 這個(gè)寄存器用來(lái)控制通道 3 和通道 4。今天的實(shí)驗(yàn),我們用到的是 TIM5 的捕獲/比較通道 1。


 (1)CC1S[1:0],這兩個(gè)位用于 CCR1 的通道配置,這里我們?cè)O(shè)置 CC1S[1:0]=01,也就是配置 IC1 映射在 TI1 上。如果不理解沒(méi)有關(guān)系,看圖就知道了。


從圖中可以知道,IC1有三個(gè)輸入源,分別是TI1,TI2,TRC。

TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; 這是通過(guò)庫(kù)函數(shù)配置,映射到TI1。

頭文件(stm32f10x_tim.h)定義如下:

#define TIM_ICSelection_DirectTI           ((uint16_t)0x0001) 
#define TIM_ICSelection_IndirectTI         ((uint16_t)0x0002) 
#define TIM_ICSelection_TRC                 ((uint16_t)0x0003)

(2)IC1F[3:0]


表格中的f_ck_int 是定時(shí)器的輸入頻率(TIMxCLK),f_dts 則是根據(jù) TIMx_CR1 的 CKD[1:0]來(lái)確定。



上圖就是TIMx_CR1寄存器。

#define TIM_CKD_DIV1                       ((uint16_t)0x0000)
#define TIM_CKD_DIV2                       ((uint16_t)0x0100)
#define TIM_CKD_DIV4                       ((uint16_t)0x0200)

假定選IC1F[3:0]=0101,即采樣頻率為fDTS/2, N=8;

選CKD[1:0]=01,即 tDTS = 2 × tCK_INT;并假定 fCK_INT=72MHz。  

這時(shí)可以算出,采樣頻率為72MHz/2/2=18MHz.

1/(18MHz)*8 = 0.4444us = 444.4ns.

因?yàn)镹=8,所以濾波器可以濾除掉輸入端小于444.4ns的脈沖。 

數(shù)字濾波器由一個(gè)事件計(jì)數(shù)器組成,它記錄到N個(gè)事件后會(huì)產(chǎn)生一個(gè)輸出的跳變”,這句話可以這樣理解:

當(dāng)濾波器連續(xù)采樣到N個(gè)有效電平時(shí),就輸出這個(gè)有效電平。 
當(dāng)濾波器沒(méi)有連續(xù)采樣到N個(gè)有效電平時(shí),再?gòu)?開(kāi)始計(jì)數(shù),輸出一直保持上一次輸出的有效電平。

例如:濾波器上一次輸出是高電平,本次連續(xù)采樣到(N-1)個(gè)高電平,但第N個(gè)是個(gè)低電平,那么濾波器仍然保持上次輸出的高電平,并重新開(kāi)始計(jì)數(shù),記錄1次低電平,如果其后采樣的(N-1)個(gè)也是低電平,此時(shí)濾波才輸出低電平,于是一個(gè)下降沿才出現(xiàn)在IC1上。

(3)IC1PSC[1:0]


這里的“事件”指的是上升沿或者下降沿,具體是哪個(gè)由TIMx_CCER寄存器的CCxP位決定。

2)捕獲/比較使能寄存器:TIMx_CCER


所以,要使能輸入捕獲,必須設(shè)置 CC1E=1,而 CC1P 則根據(jù)自己的需要來(lái)配置(捕獲發(fā)生在上升沿還是下降沿)。 

3) DMA/中斷使能寄存器(TIMx_DIER) 


在實(shí)驗(yàn)中,我們需要允許位0和位1的中斷。

#define TIM_IT_Update                      ((uint16_t)0x0001)
#define TIM_IT_CC1                         ((uint16_t)0x0002)
#define TIM_IT_CC2                         ((uint16_t)0x0004)
#define TIM_IT_CC3                         ((uint16_t)0x0008)
#define TIM_IT_CC4                         ((uint16_t)0x0010)

對(duì)應(yīng)的庫(kù)函數(shù)是:TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);

4) 捕獲/比較寄存器 (TIMx_CCRx) 


該寄存器用來(lái)存儲(chǔ)捕獲發(fā)生時(shí),TIMx_CNT的值,我們從 TIMx_CCR1 就可以讀出通道 1 捕獲發(fā)生時(shí)刻的 TIMx_CNT 值,通過(guò)兩次捕獲(一次上升沿捕獲,一次下降沿捕獲)的差值,就可以計(jì)算出高電平脈沖的寬度。

2. 實(shí)驗(yàn)設(shè)計(jì)

通過(guò)TIM3產(chǎn)生一路PWM(從PB5輸出),把PB5連接到PA0上,PA0和 TIM5_CH1是同一個(gè)管腳。利用TIM5_CH1的輸入捕獲功能,測(cè)量出PWM的寬度。


3. 參考代碼

[cpp] view plain copy

  1. //TIM5_CH1輸入捕獲配置  

  2. void TIM5_Cap_Init(u16 arr,u16 psc)  

  3. {      

  4.     TIM_ICInitTypeDef  TIM5_ICInitStructure;  

  5.     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  

  6.     NVIC_InitTypeDef NVIC_InitStructure;  

  7.   

  8.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);    //使能TIM5時(shí)鐘  

  9.       

  10.     //TIM5的配置  

  11.     TIM_TimeBaseStructure.TIM_Period = arr;     //重裝載值  

  12.     TIM_TimeBaseStructure.TIM_Prescaler =psc;   //分頻系數(shù)   

  13.     TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;      //tDTS = tCK_INT  

  14.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上計(jì)數(shù)  

  15.     TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);   

  16.     

  17.     //TIM5輸入捕獲配置  

  18.     TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; //我們用通道1  

  19.     TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;    //上升沿捕獲  

  20.     TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //映射到TI1  

  21.     TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;   //無(wú)預(yù)分頻器   

  22.     TIM5_ICInitStructure.TIM_ICFilter = 0x00; //IC1F=0000 ,無(wú)濾波器  

  23.     TIM_ICInit(TIM5, &TIM5_ICInitStructure);  

  24.       

  25.     //中斷優(yōu)先級(jí)配置  

  26.     NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;    

  27.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;    

  28.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;    

  29.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   

  30.     NVIC_Init(&NVIC_InitStructure);    

  31.       

  32.     TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);//打開(kāi)更新中斷和捕獲中斷  

  33.       

  34.     TIM_Cmd(TIM5,ENABLE );  //使能定時(shí)器5  

  35.      

  36. }  


[cpp] view plain copy

  1. #define START          0X01  

  2. #define WAIT_RISING    0X02  

  3. #define WAIT_FALLING   0X03  

  4.   

  5.                           

  6. u16 TIM5CH1_CAPTURE_VAL;    //輸入捕獲值  

  7. u32 a[500] = {0};           //存放電平寬度  

  8. u32 i = 0; //數(shù)組下標(biāo)  

  9. u8 overflow = 0;    //記錄定時(shí)器更新中斷的次數(shù)  

  10. u8 state = START;  

  11.   

  12. //定時(shí)器5中斷服務(wù)程序  

  13. void TIM5_IRQHandler(void)  

  14. {   

  15.   

  16.     if(i<500)  

  17.     {       

  18.         if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)  

  19.         {         

  20.             ++overflow;  

  21.         }  

  22.           

  23.         if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//捕獲事件  

  24.         {     

  25.             if(state == START)      //初始狀態(tài)                

  26.             {     

  27.                 overflow = 0;  

  28.                 TIM_SetCounter(TIM5,0);  

  29.                 state = WAIT_FALLING;  

  30.                 TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);     //設(shè)置為下降沿捕獲  

  31.             }     

  32.             else if(state == WAIT_RISING)    //等待上升沿  

  33.             {  

  34.                 TIM5CH1_CAPTURE_VAL = TIM_GetCapture1(TIM5);  

  35.                 a[i++] = TIM5CH1_CAPTURE_VAL + overflow*65536;  

  36.                   

  37.                 overflow = 0;  

  38.                 TIM_SetCounter(TIM5,0);  

  39.                 state = WAIT_FALLING;  

  40.                 TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling); //設(shè)置為下降沿捕獲  

  41.                   

  42.             }  

  43.             else // wait falling  

[1] [2]
關(guān)鍵字:stm32  輸入捕獲  基本定時(shí)器 引用地址:stm32---輸入捕獲

上一篇:深入分析MCU堆棧的作用,以及該如何設(shè)置堆棧大小
下一篇:Stm32用寄存器還是庫(kù)函數(shù)

推薦閱讀

提到半導(dǎo)體公司,大家通常都會(huì)想到英特爾、三星、臺(tái)積電等業(yè)內(nèi)巨頭,但是實(shí)際上,除了這些半導(dǎo)體巨頭之外,還有一些不可忽視的增長(zhǎng)迅猛、悶聲發(fā)大財(cái)?shù)陌雽?dǎo)體企業(yè)。今天芯智訊要介紹的這家半導(dǎo)體公司,在過(guò)去15個(gè)月收購(gòu)了7家公司,僅在去年一年的時(shí)間,員工就由原來(lái)的2000多人增加到了11000人,營(yíng)收突破10億歐元,同比猛增93%,而且利潤(rùn)率還高達(dá)74%左右。...
在展示跑步、后空翻等系列操作之后,波士頓動(dòng)力公司(Boston Dynamics)近日又推出全新機(jī)器人——2017年Handle機(jī)器人的“reimagined”(再定義)版本,而且它真的非常擅長(zhǎng)疊箱子。正如視頻中所看到的新版Handle可以在倉(cāng)庫(kù)中使用吸盤自動(dòng)裝載和卸載裝有產(chǎn)品的盒子,并且使用輪子可以輕松的在倉(cāng)庫(kù)中運(yùn)輸。在技術(shù)方面,波士頓動(dòng)力公司表示,Handle可以裝卸高...
(文章來(lái)源:科技報(bào)告與資訊) ? ? ?? 近年來(lái),全世界的研究人員一直在嘗試開(kāi)發(fā)可復(fù)制人類觸覺(jué)的應(yīng)用在機(jī)器人上增強(qiáng)其操縱技能的。盡管其中一些傳感器取得了令人矚目的效果,但大多數(shù)現(xiàn)有解決方案的敏感度較低,或者只能收集低分辨率的圖像。 加州大學(xué)伯克利分校的一組研究人員最近開(kāi)發(fā)了一種稱為OmniTact的新型多向觸覺(jué)傳感器,該傳感器克服了...
華數(shù)Ⅲ型工業(yè)機(jī)器人控制系統(tǒng)是華數(shù)機(jī)器人有限公司自主研發(fā)的一套控制系統(tǒng),具有高速高精度的特點(diǎn),其編程語(yǔ)言簡(jiǎn)潔易懂,通過(guò)華數(shù)Ⅲ型示教器可以實(shí)現(xiàn)快速編程,實(shí)時(shí)調(diào)節(jié),滿足絕大多數(shù)工業(yè)需求。下面給大家介紹這款產(chǎn)品的基本注意事項(xiàng)。機(jī)械手使用注意事項(xiàng)華數(shù)機(jī)器人使用者必須在保證自己的安全的情況下操作機(jī)器人。確保工業(yè)機(jī)器人的狀態(tài)穩(wěn)定,底座穩(wěn)定。華...

史海拾趣

問(wèn)答坊 | AI 解惑

求固態(tài)硬盤SSD方案!

RT.那個(gè)兄弟可提供一下,謝謝!…

查看全部問(wèn)答∨

U-Boot簡(jiǎn)介

U-Boot  1 U-Boot簡(jiǎn)介   U-Boot,全稱 Universal Boot Loader,是遵循GPL條款的開(kāi)放源碼項(xiàng)目。從FADSROM、8xxROM、PPCBOOT逐步發(fā)展演化而來(lái)。其源碼目錄、編譯形式與Linux內(nèi)核很相似,事實(shí)上,不少U-Boot源碼就是相應(yīng)的Linux內(nèi)核源程序的簡(jiǎn)化 ...…

查看全部問(wèn)答∨

反轉(zhuǎn)式串聯(lián)開(kāi)關(guān)電源 開(kāi)關(guān)電源原理與設(shè)計(jì)(連載五)

1-3.反轉(zhuǎn)式串聯(lián)開(kāi)關(guān)電源 1-3-1.反轉(zhuǎn)式串聯(lián)開(kāi)關(guān)電源的工作原理 圖1-7是另一種串聯(lián)式開(kāi)關(guān)電源,一般稱為反轉(zhuǎn)式串聯(lián)開(kāi)關(guān)電源。這種反轉(zhuǎn)式串聯(lián)開(kāi)關(guān)電源與一般串聯(lián)式開(kāi)關(guān)電源的區(qū)別是,這種反轉(zhuǎn)式串聯(lián)開(kāi)關(guān)電源輸出的電壓是負(fù)電壓,正好與一般串聯(lián)式 ...…

查看全部問(wèn)答∨

求購(gòu)二手51單片機(jī)開(kāi)發(fā)板,壇友誰(shuí)有閑置的?

距離畢業(yè)還有一個(gè)月。畢設(shè)用的是FPGA, 以前學(xué)過(guò)單片機(jī)的基礎(chǔ)知識(shí),我想實(shí)際做一下。 作為單片機(jī)的入門,還有就是熟悉C語(yǔ)言的開(kāi)發(fā)。 DSP開(kāi)發(fā)板和仿真器比較貴,所以目前暫時(shí)考慮要一塊單片機(jī)的開(kāi)發(fā)板。 壇友里面,有沒(méi)有閑置的呢? 由于本人目 ...…

查看全部問(wèn)答∨

SD卡驅(qū)動(dòng)

不帶操作系統(tǒng),經(jīng)bootloader引導(dǎo)后,從SD卡里讀數(shù)據(jù),現(xiàn)在對(duì)SD卡驅(qū)動(dòng)的流程很是模糊,求高手指點(diǎn)下,具體的步驟~~ 謝謝…

查看全部問(wèn)答∨

mc55發(fā)短消息問(wèn)題

這是我的AT指令; AT+CMGF=1 OK AT+CSCS="GSM" OK AT+CSMP=17,168,0,0 OK AT+CSCA="+8613800472500" OK AT+CMGS="13684724106" >  +CMS ERROR: 500 為什么會(huì)返回這個(gè)錯(cuò)誤呢,期待大家?guī)兔獯稹?

查看全部問(wèn)答∨

ARM7 內(nèi)部時(shí)鐘問(wèn)題 見(jiàn)鬼了!!!

PREINT = (CLK_Apb_PclkFreq()>>15) -1 ;// 設(shè)置基準(zhǔn)時(shí)鐘分頻器 CLK_Apb_PclkFreq() / 32768 -1 PREFRAC = (UINT32)CLK_Apb_PclkFreq() & 0x7fff;//CLK_Apb_PclkFreq() - (CLK_Apb_PclkFreq() / 32768) * 32768; printf("PCLK:%d",CLK_ ...…

查看全部問(wèn)答∨

如何建立gprs連接

我有個(gè)gprs modem 我用windows自帶的撥號(hào)連接建了一個(gè)連接,撥號(hào)*99***1#以后可以連接,但不能上網(wǎng),不能上qq,不知道是什么原因 如果用隨e行軟件調(diào)用gprs連接,就可以上網(wǎng) 請(qǐng)指教!!…

查看全部問(wèn)答∨

【求助】急問(wèn):413液晶顯示問(wèn)題!急急急急急急急急急急急急急急急急急急急急急急

SetupBT       mov.b   #018H,&amp;BTCTL                ;設(shè)置LCD 頻率 = ACLK / 128…

查看全部問(wèn)答∨

【曬經(jīng)典】VS1003 MP3音頻解碼電路圖

本帖最后由 dontium 于 2015-1-23 12:43 編輯 VS1003概述: ●VS1003 是一個(gè)單片MP3/WMA/MIDI音頻解碼器和ADPCM編碼器。它包含一個(gè)高性能,自主產(chǎn)權(quán)的低功耗DSP 處理器核VS_DSP4,工作數(shù)據(jù)存儲(chǔ)器,為用戶應(yīng)用提供5KB 的指令RAM 和0.5KB 的數(shù)據(jù)RA ...…

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 铜陵市| 红原县| 甘德县| 青海省| 汾西县| 临朐县| 秦皇岛市| 昌图县| 聂荣县| 漳浦县| 牙克石市| 年辖:市辖区| 裕民县| 三明市| 大英县| 宜兰县| 嘉兴市| 芦山县| 广河县| 卢湾区| 鹿邑县| 万州区| 益阳市| 若尔盖县| 奎屯市| 固安县| 榆树市| 亳州市| 紫金县| 两当县| 天津市| 奉节县| 宣汉县| 普宁市| 灌阳县| 信丰县| 海阳市| 茶陵县| 滕州市| 长治市| 敦煌市|