當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]在輸入捕獲模式下,當(dāng)檢測(cè)到ICx信號(hào)上升/下降邊沿時(shí),計(jì)數(shù)器的當(dāng)前值被存儲(chǔ)在捕獲比較寄存器TIMx_CCRx中。當(dāng)捕獲事件發(fā)生時(shí),相應(yīng)的CCxIF 標(biāo)志(TIMx_SR 寄存器) 被置1。如果中斷或者DMA功能被使能,就會(huì)產(chǎn)生中斷或者

在輸入捕獲模式下,當(dāng)檢測(cè)到ICx信號(hào)上升/下降邊沿時(shí),計(jì)數(shù)器的當(dāng)前值被存儲(chǔ)在捕獲比較寄存器TIMx_CCRx中。

當(dāng)捕獲事件發(fā)生時(shí),相應(yīng)的CCxIF 標(biāo)志(TIMx_SR 寄存器) 被置1。如果中斷或者DMA功能被使能,就會(huì)產(chǎn)生中斷或者DMA請(qǐng)求。如果捕獲發(fā)生時(shí),CCxIF標(biāo)志已經(jīng)被置位,這時(shí)過采樣標(biāo)志CCxOF就會(huì)被置位。向CCxIF寫0或者讀去TIM_CCRx中的數(shù)據(jù),將清除捕獲標(biāo)志。CCxOF位只能通過手動(dòng)寫入0進(jìn)行清除。

假如我設(shè)置為上升沿捕獲,那么當(dāng)一個(gè)上升沿到來的時(shí)候,定時(shí)器當(dāng)前的計(jì)數(shù)值(TIMx_CNT)就會(huì)寫入TIMx_CCRx中。我們讀取這個(gè)數(shù)據(jù)。等到下一個(gè)上升沿到了時(shí),就會(huì)有另一個(gè)計(jì)數(shù)器值TIMx_CNT記錄。根據(jù)這兩個(gè)數(shù)據(jù)值差,我們能算出來輸入數(shù)據(jù)的周期。當(dāng)然,我們還有處理定時(shí)器溢出這個(gè)問題,定時(shí)器溢出了就不準(zhǔn)了。

如果要測(cè)占空比,就需要同時(shí)捕獲上升沿和下降沿。相鄰兩個(gè)上升沿之間的計(jì)數(shù)是輸入的周期,相鄰兩次捕獲(一個(gè)上升沿一個(gè)下降沿)之間的時(shí)間是占或者空的時(shí)間。根據(jù)這個(gè)可以計(jì)算占空比或者PPM之類的東西。

【實(shí)驗(yàn)內(nèi)容】

本次實(shí)驗(yàn),使用TIM4產(chǎn)生一個(gè)1K的頻率輸出,用TIM1進(jìn)行捕獲。并測(cè)出頻率計(jì)算

TIM1 的時(shí)基單元配置:關(guān)于TIM1的時(shí)基設(shè)置問題前文已經(jīng)討論過了。這里只有一點(diǎn)需要明確的,就是為了盡量減少更新事件,將TIM_Period設(shè)置到最大即0xFFFF。定時(shí)器時(shí)鐘設(shè)置成2M,這樣定時(shí)器的更新頻率就是30Hz,不會(huì)造成兩次捕獲之間產(chǎn)生多次更新。

TIM1的完整配置代碼如下:

void TIM1_ICConfig(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
// //時(shí)基初始化
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //死區(qū)控制用。
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //計(jì)數(shù)器方向
TIM_TimeBaseInitStructure.TIM_Prescaler = 84-1; //Timer clock = sysclock /(TIM_Prescaler+1) = 2M
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInitStructure.TIM_Period = 0xFFFF; //Period = (TIM counter clock / TIM output clock) - 1 = 40Hz
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure);

TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICFilter = 0;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

TIM_ICInit(TIM1,&TIM_ICInitStructure);
TIM_Cmd(TIM1,ENABLE);
}

TIM4的配置就是基本的輸出配置,沒什么可說的。代碼如下:

void TIM4_OCConfig(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_Prescaler = 0;
TIM_TimeBaseInitStructure.TIM_RepetitionCounter =0;
TIM_TimeBaseInitStructure.TIM_Period = 42000-1; //周期:42M/(42000)= 1K

TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 10000;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;

TIM_OC1Init(TIM4,&TIM_OCInitStructure);
TIM_Cmd(TIM4,ENABLE);
}

這個(gè)輸出頻率,在示波器上可以看到的:

之后就是在主函數(shù)里邊進(jìn)行測(cè)量了:

CaptureNumber = 0;

while(1)
{
if(TIM_GetFlagStatus(TIM1,TIM_FLAG_CC1)==SET)
{
TIM_ClearFlag(TIM1,TIM_FLAG_CC1);
if(CaptureNumber == 0)
{
counter = TIM_GetCapture1(TIM1); //第一次捕獲
CaptureNumber = 1;

}
else if(CaptureNumber == 1) //處理第二次捕獲
{
if(TIM_GetFlagStatus(TIM1,TIM_FLAG_Update) != SET)//兩次捕獲間沒有發(fā)生溢出的處理
{
Time = TIM_GetCapture1(TIM1);
Time = Time - counter;
}
else
{
TIM_ClearFlag(TIM1,TIM_FLAG_Update); //產(chǎn)生了更新事件
Time = 0xFFFF - counter + TIM_GetCapture1(TIM1)+1; //如果有更新事件產(chǎn)生時(shí)候的計(jì)算方式
}
CaptureNumber = 0;
if(Time!=0)
{
freq= 2000000/Time; //計(jì)算頻率
}
freq = freq; //避免變量freq被編譯器優(yōu)化掉
}
}
}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉