輸入捕獲模式可以用來(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
//TIM5_CH1輸入捕獲配置
void TIM5_Cap_Init(u16 arr,u16 psc)
{
TIM_ICInitTypeDef TIM5_ICInitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); //使能TIM5時(shí)鐘
//TIM5的配置
TIM_TimeBaseStructure.TIM_Period = arr; //重裝載值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //分頻系數(shù)
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //tDTS = tCK_INT
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計(jì)數(shù)
TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
//TIM5輸入捕獲配置
TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; //我們用通道1
TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿捕獲
TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //映射到TI1
TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //無(wú)預(yù)分頻器
TIM5_ICInitStructure.TIM_ICFilter = 0x00; //IC1F=0000 ,無(wú)濾波器
TIM_ICInit(TIM5, &TIM5_ICInitStructure);
//中斷優(yōu)先級(jí)配置
NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);//打開(kāi)更新中斷和捕獲中斷
TIM_Cmd(TIM5,ENABLE ); //使能定時(shí)器5
}
[cpp] view plain copy
#define START 0X01
#define WAIT_RISING 0X02
#define WAIT_FALLING 0X03
u16 TIM5CH1_CAPTURE_VAL; //輸入捕獲值
u32 a[500] = {0}; //存放電平寬度
u32 i = 0; //數(shù)組下標(biāo)
u8 overflow = 0; //記錄定時(shí)器更新中斷的次數(shù)
u8 state = START;
//定時(shí)器5中斷服務(wù)程序
void TIM5_IRQHandler(void)
{
if(i<500)
{
if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)
{
++overflow;
}
if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//捕獲事件
{
if(state == START) //初始狀態(tài)
{
overflow = 0;
TIM_SetCounter(TIM5,0);
state = WAIT_FALLING;
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling); //設(shè)置為下降沿捕獲
}
else if(state == WAIT_RISING) //等待上升沿
{
TIM5CH1_CAPTURE_VAL = TIM_GetCapture1(TIM5);
a[i++] = TIM5CH1_CAPTURE_VAL + overflow*65536;
overflow = 0;
TIM_SetCounter(TIM5,0);
state = WAIT_FALLING;
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling); //設(shè)置為下降沿捕獲
}
else // wait falling
上一篇:深入分析MCU堆棧的作用,以及該如何設(shè)置堆棧大小
下一篇:Stm32用寄存器還是庫(kù)函數(shù)
推薦閱讀
史海拾趣
為了進(jìn)一步提升競(jìng)爭(zhēng)力,CSC開(kāi)始著手進(jìn)行產(chǎn)業(yè)鏈整合。公司通過(guò)與上下游企業(yè)的深度合作,形成了緊密的產(chǎn)業(yè)鏈協(xié)同關(guān)系。這不僅降低了生產(chǎn)成本,提高了生產(chǎn)效率,還使得CSC能夠更好地把握市場(chǎng)動(dòng)態(tài)和技術(shù)趨勢(shì),為公司的持續(xù)發(fā)展提供了有力保障。
品質(zhì)是川晶科技的生命線。公司始終將品質(zhì)管理貫穿于產(chǎn)品研發(fā)、生產(chǎn)、銷售等各個(gè)環(huán)節(jié),嚴(yán)格執(zhí)行質(zhì)量管理體系標(biāo)準(zhǔn)。通過(guò)引進(jìn)先進(jìn)的檢測(cè)設(shè)備和方法,加強(qiáng)產(chǎn)品質(zhì)量控制和檢驗(yàn),確保每一件產(chǎn)品都符合客戶的要求和期望。同時(shí),公司還建立了完善的售后服務(wù)體系,為客戶提供及時(shí)、專業(yè)的技術(shù)支持和服務(wù)。川晶科技憑借卓越的品質(zhì)和優(yōu)質(zhì)的服務(wù)贏得了客戶的信賴和支持。
在電子行業(yè)的初創(chuàng)期,Aromat Corp以其獨(dú)特的技術(shù)突破而嶄露頭角。公司創(chuàng)始人帶領(lǐng)團(tuán)隊(duì)研發(fā)出了一款高效能、低功耗的芯片,迅速吸引了市場(chǎng)的關(guān)注。通過(guò)不斷優(yōu)化產(chǎn)品性能和降低成本,Aromat Corp逐漸在競(jìng)爭(zhēng)激烈的電子市場(chǎng)中站穩(wěn)腳跟,為后續(xù)的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
為了進(jìn)一步提升公司的競(jìng)爭(zhēng)力,Aromat Corp開(kāi)始實(shí)施國(guó)際化戰(zhàn)略。公司積極拓展海外市場(chǎng),通過(guò)設(shè)立海外分支機(jī)構(gòu)、與當(dāng)?shù)仄髽I(yè)合作等方式,將產(chǎn)品推向全球。同時(shí),Aromat Corp還加強(qiáng)了與國(guó)際同行的交流與合作,學(xué)習(xí)借鑒先進(jìn)的經(jīng)驗(yàn)和技術(shù),不斷提升自身的綜合實(shí)力。
隨著公司規(guī)模的擴(kuò)大和市場(chǎng)份額的提升,AZ Displays開(kāi)始實(shí)施全球化戰(zhàn)略。公司在全球范圍內(nèi)建立銷售網(wǎng)絡(luò)和分支機(jī)構(gòu),積極開(kāi)拓國(guó)際市場(chǎng)。通過(guò)與國(guó)際知名企業(yè)的合作,AZ Displays成功將產(chǎn)品打入國(guó)際市場(chǎng),進(jìn)一步提升了公司的品牌影響力和市場(chǎng)競(jìng)爭(zhēng)力。
芯旺微電子自2012年成立以來(lái),始終致力于高可靠性MCU器件的研發(fā)設(shè)計(jì)。公司憑借其自主研發(fā)的KungFu內(nèi)核架構(gòu)處理器,迅速在汽車級(jí)和工業(yè)級(jí)混合信號(hào)MCU領(lǐng)域嶄露頭角。隨著技術(shù)的不斷積累和市場(chǎng)的深入拓展,芯旺微電子逐漸從一家初創(chuàng)公司發(fā)展成為國(guó)內(nèi)車規(guī)級(jí)MCU市場(chǎng)的領(lǐng)軍企業(yè)。
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)答∨ |
不帶操作系統(tǒng),經(jīng)bootloader引導(dǎo)后,從SD卡里讀數(shù)據(jù),現(xiàn)在對(duì)SD卡驅(qū)動(dòng)的流程很是模糊,求高手指點(diǎn)下,具體的步驟~~ 謝謝… 查看全部問(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)答∨ |
我有個(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,&BTCTL ;設(shè)置LCD 頻率 = ACLK / 128… 查看全部問(wèn)答∨ |
本帖最后由 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ā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開(kāi)發(fā)環(huán)境為開(kāi)發(fā)者提供支持
- iTOP-i.MX6開(kāi)發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開(kāi)發(fā)板Qt for Android搭建開(kāi)發(fā)環(huán)境
- 迅為i.MX8M mini開(kāi)發(fā)板Windots QT系統(tǒng)開(kāi)發(fā)環(huán)境搭建
- 迅為IMX8MM開(kāi)發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開(kāi)發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開(kāi)發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開(kāi)發(fā)板Yocto系統(tǒng)設(shè)置開(kāi)機(jī)自啟動(dòng)
- 迅為IMX6Q開(kāi)發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- 高通攜手中國(guó)“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動(dòng)艙駕創(chuàng)新升級(jí)
- 工業(yè)市場(chǎng)正在快速回暖,德州儀器如何重塑電力電子市場(chǎng)?
- 特斯拉:美國(guó)交付的Model Y/3電池包已實(shí)現(xiàn)100%美國(guó)生產(chǎn)
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產(chǎn)品
- 強(qiáng)化中國(guó)市場(chǎng)戰(zhàn)略布局,德州儀器正靈活應(yīng)對(duì)全球關(guān)稅挑戰(zhàn)
- Molex莫仕通過(guò)本地合作和創(chuàng)新加強(qiáng)支持中國(guó)汽車行業(yè)
- 貿(mào)澤開(kāi)售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數(shù)字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實(shí)現(xiàn)車載充電器小型化!
- 用上車規(guī)級(jí)UFS 4.0,讓出行變得高效且可靠
- 車載測(cè)試技術(shù)解析:聚焦高帶寬、多通道同步采集與協(xié)議分析
- 輕松注冊(cè)世健eSHOP,百份獎(jiǎng)品大派送!驚喜不斷,好禮無(wú)限!ipad air2等你拿!
- 已結(jié)束【Microchip 安全解決方案系列在線研討會(huì)】
- 創(chuàng)意改裝大比拼:給你一個(gè)升壓板和凈化器,你能改裝成啥?
- 慶元宵答題抽獎(jiǎng),知識(shí)與禮物齊飛
- 【瓜分2500元紅包】 票選DigiKey\"智造萬(wàn)物,快樂(lè)不停\"創(chuàng)意大賽人氣作品TOP3!
- 有獎(jiǎng)大調(diào)查:你遇到的電源設(shè)計(jì)挑戰(zhàn)有哪些?
- 為“ADI實(shí)驗(yàn)室電路”尋建議!
- UCOSIII系統(tǒng)初始化和啟動(dòng)
- UCOIII中任務(wù)的調(diào)度和切換
- UCOSIII任務(wù)創(chuàng)建、刪除、掛起和恢復(fù)
- UCOSIII時(shí)間片輪轉(zhuǎn)調(diào)度器
- UCOSIII的5個(gè)系統(tǒng)任務(wù)及鉤子函數(shù)編寫(xiě)
- 技術(shù)科普:鋰離子電池分容技術(shù)
- 國(guó)內(nèi)供應(yīng)商比例逐年升高,芯片將成為中國(guó)的新金礦
- 小米黑科技:Multi-link5.0無(wú)縫切換功能
- 用戶越來(lái)越舍得在軟件游戲上花錢 2020年全球應(yīng)用支出增35%
- CES2021最強(qiáng)前瞻出爐:頂級(jí)科技盛會(huì)都有什么看點(diǎn)
- 某美資芯片公司急聘Application Engineer
- PIC1939 關(guān)于I/O口配置及優(yōu)先級(jí)如何配置
- 電感和磁珠的區(qū)別
- 尋找在WINCE下面做過(guò)16C554驅(qū)動(dòng)的技術(shù)人員
- 數(shù)秒內(nèi)打造您的定制電感線圈!
- Wince下,怎么通過(guò)修改注冊(cè)表隱藏系統(tǒng)的任務(wù)欄
- zstack安裝問(wèn)題 請(qǐng)大俠救我!!!
- HVPSFB中ePWM寄存器配置問(wèn)題
- 220VAC轉(zhuǎn)15VDC加負(fù)載后輸出電壓不對(duì)可能是什么器件問(wèn)題?
- MCU的選用