国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

WIZnet W55MH32以太網(wǎng)單片機(jī)開(kāi)發(fā)教程 第十一章 通用定時(shí)器(上篇)

W55MH32 ? 來(lái)源:W55MH32 ? 作者:W55MH32 ? 2025-05-28 10:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

單芯片解決方案,開(kāi)啟全新體驗(yàn)——W55MH32 高性能以太網(wǎng)單片機(jī)

W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機(jī),它為用戶(hù)帶來(lái)前所未有的集成化體驗(yàn)。這顆芯片將強(qiáng)大的組件集于一身,具體來(lái)說(shuō),一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達(dá)216MHz;配備1024KB FLASH與96KB SRAM,滿(mǎn)足存儲(chǔ)與數(shù)據(jù)處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協(xié)議棧、內(nèi)置MAC以及PHY,擁有獨(dú)立的32KB以太網(wǎng)收發(fā)緩存,可供8個(gè)獨(dú)立硬件socket使用。如此配置,真正實(shí)現(xiàn)了All-in-One解決方案,為開(kāi)發(fā)者提供極大便利。

在封裝規(guī)格上,W55MH32 提供了兩種選擇:QFN68和QFN100。

W55MH32Q采用QFN68封裝版本,尺寸為8x8mm,它擁有36個(gè)GPIO、3個(gè)ADC、12通道DMA、17個(gè)定時(shí)器、2個(gè)I2C、3個(gè)串口、2個(gè)SPI接口(其中1個(gè)帶I2S接口復(fù)用)、1個(gè)CAN以及1個(gè)USB2.0。在保持與同系列其他版本一致的核心性能基礎(chǔ)上,僅減少了部分GPIO以及SDIO接口,其他參數(shù)保持一致,性?xún)r(jià)比優(yōu)勢(shì)顯著,尤其適合網(wǎng)關(guān)模組等對(duì)空間布局要求較高的場(chǎng)景。緊湊的尺寸和精簡(jiǎn)化外設(shè)配置,使其能夠在有限空間內(nèi)實(shí)現(xiàn)高效的網(wǎng)絡(luò)連接與數(shù)據(jù)交互,成為物聯(lián)網(wǎng)網(wǎng)關(guān)、邊緣計(jì)算節(jié)點(diǎn)等緊湊型設(shè)備的理想選擇。 同系列還有QFN100封裝的W55MH32L版本,該版本擁有更豐富的外設(shè)資源,適用于需要多接口擴(kuò)展的復(fù)雜工控場(chǎng)景,軟件使用方法一致。

此外,本W(wǎng)55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應(yīng)用,涵蓋TCP SSL、HTTP SSL以及MQTT SSL等,為網(wǎng)絡(luò)通信安全再添保障。

為助力開(kāi)發(fā)者快速上手與深入開(kāi)發(fā),基于W55MH32Q這顆芯片,WIZnet精心打造了配套開(kāi)發(fā)板。開(kāi)發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開(kāi)發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開(kāi)發(fā)者全面評(píng)估芯片性能。

wKgZO2gbOfaAVPzkACJSygzv-rI600.png

第十一章 通用定時(shí)器(上篇)

W55MH32的通用定時(shí)器為TIM2~TIM5/TIM9~TIM14,由于篇幅有限,這里我們講解TIM2~TIM5的相關(guān)功能,對(duì)于通用定時(shí)器TIM9~TIM14,感興趣的朋友查閱《W55MH32參考手冊(cè)》使用方法一致,功能上存在些許差異,掌握了方法之后都是一通百通的。

本章分為如下幾個(gè)小節(jié):

1 通用定時(shí)器概述

2 程序設(shè)計(jì)

3 下載驗(yàn)證

1 通用定時(shí)器概述

1.1 通用定時(shí)器簡(jiǎn)介

通用定時(shí)器是一個(gè)通過(guò)可編程預(yù)分頻器驅(qū)動(dòng)的 16 位自動(dòng)裝載計(jì)數(shù)器構(gòu)成。它適用于多種場(chǎng)合,包括測(cè)量輸入信號(hào)的脈沖長(zhǎng)度(輸入捕獲)或者產(chǎn)生輸出波形(輸出比較和PWM)。使用定時(shí)器預(yù)分頻器和 RCC 時(shí)鐘控制器預(yù)分頻器,脈沖長(zhǎng)度和波形周期可以在幾個(gè)微秒到幾個(gè) 毫秒間調(diào)整。每個(gè)定時(shí)器都是完全獨(dú)立的,沒(méi)有互相共享任何資源。

1.2 主要功能

通用TIMx (TIM2、TIM3、TIM4和TIM5)定時(shí)器功能包括:

?16位向上、向下、向上/向下自動(dòng)裝載計(jì)數(shù)器

?16位可編程(可以實(shí)時(shí)修改)預(yù)分頻器,計(jì)數(shù)器時(shí)鐘頻率的分頻系數(shù)為1~65536之間的任意 數(shù)值

?4個(gè)獨(dú)立通道:

······輸入捕獲

······輸出比較

······PWM生成(邊緣或中間對(duì)齊模式)

······單脈沖模式輸出

?使用外部信號(hào)控制定時(shí)器和定時(shí)器互連的同步電路

?如下事件發(fā)生時(shí)產(chǎn)生中斷/DMA:

······更新:計(jì)數(shù)器向上溢出/向下溢出,計(jì)數(shù)器初始化(通過(guò)軟件或者內(nèi)部/外部觸發(fā))

······觸發(fā)事件(計(jì)數(shù)器啟動(dòng)、停止、初始化或者由內(nèi)部/外部觸發(fā)計(jì)數(shù))

······輸入捕獲

······輸出比較

?支持針對(duì)定位的增量(正交)編碼器和霍爾傳感器電路

?觸發(fā)輸入作為外部時(shí)鐘或者按周期的電流管理

通用定時(shí)器框圖如下:

wKgZO2g2cEWABEDfAAHJuXxtXmI133.png

1.3 功能描述

1.3.1時(shí)基單元

可編程通用定時(shí)器的主要部分是一個(gè)16位計(jì)數(shù)器和與其相關(guān)的自動(dòng)裝載寄存器。這個(gè)計(jì)數(shù)器可以向上計(jì)數(shù)、向下計(jì)數(shù)或者向上向下雙向計(jì)數(shù)。此計(jì)數(shù)器時(shí)鐘由預(yù)分頻器分頻得到。

計(jì)數(shù)器、自動(dòng)裝載寄存器和預(yù)分頻器寄存器可以由軟件讀寫(xiě),在計(jì)數(shù)器運(yùn)行時(shí)仍可以讀寫(xiě)。時(shí)基單元包含:

?計(jì)數(shù)器寄存器(TIMx_CNT)

?預(yù)分頻器寄存器 (TIMx_PSC)

?自動(dòng)裝載寄存器 (TIMx_ARR)

自動(dòng)裝載寄存器是預(yù)先裝載的,寫(xiě)或讀自動(dòng)重裝載寄存器將訪問(wèn)預(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)生。隨后會(huì)詳細(xì)描述每一種配置下更新事件的產(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)參見(jiàn)控制器的從模式描述)。

注:真正的計(jì)數(shù)器使能信號(hào)CNT_EN是在CEN的一個(gè)時(shí)鐘周期后被設(shè)置。

預(yù)分頻器描述

預(yù)分頻器可以將計(jì)數(shù)器的時(shí)鐘頻率按1到65536之間的任意值分頻。它是基于一個(gè)(在TIMx_PSC 寄存器中的)16位寄存器控制的16位計(jì)數(shù)器。這個(gè)控制寄存器帶有緩沖器,它能夠在工作時(shí)被改 變。新的預(yù)分頻器參數(shù)在下一次更新事件到來(lái)時(shí)被采用。

下面出了在預(yù)分頻器運(yùn)行時(shí),更改計(jì)數(shù)器參數(shù)的例子:

wKgZO2g2cEOARXdFAABmVnizRS4188.png

當(dāng)預(yù)分頻器的參數(shù)從1變到2時(shí),計(jì)數(shù)器的時(shí)序圖

wKgZO2g2cEOAPh8QAACL7psv-2c736.png

當(dāng)預(yù)分頻器的參數(shù)從1變到4時(shí),計(jì)數(shù)器的時(shí)序圖

1.3.2計(jì)數(shù)器模式

向上計(jì)數(shù)模式

在向上計(jì)數(shù)模式中,計(jì)數(shù)器從0計(jì)數(shù)到自動(dòng)加載值(TIMx_ARR計(jì)數(shù)器的內(nèi)容),然后重新從0開(kāi)始 計(jì)數(shù)并且產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件。

每次計(jì)數(shù)器溢出時(shí)可以產(chǎn)生更新事件,在TIMx_EGR寄存器中(通過(guò)軟件方式或者使用從模式控 制器)設(shè)置UG位也同樣可以產(chǎn)生一個(gè)更新事件。

設(shè)置TIMx_CR1寄存器中的UDIS位,可以禁止更新事件;這樣可以避免在向預(yù)裝載寄存器中寫(xiě) 入新值時(shí)更新影子寄存器。在UDIS位被清'0'之前,將不產(chǎn)生更新事件。但是在應(yīng)該產(chǎn)生更新事 件時(shí),計(jì)數(shù)器仍會(huì)被清'0',同時(shí)預(yù)分頻器的計(jì)數(shù)也被請(qǐng)0(但預(yù)分頻系數(shù)不變)。此外,如果設(shè)置 了TIMx_CR1寄存器中的URS位(選擇更新請(qǐng)求),設(shè)置UG位將產(chǎn)生一個(gè)更新事件UEV,但硬件 不設(shè)置UIF標(biāo)志(即不產(chǎn)生中斷或DMA請(qǐng)求);這是為了避免在捕獲模式下清除計(jì)數(shù)器時(shí),同時(shí)產(chǎn) 生更新和捕獲中斷。

當(dāng)發(fā)生一個(gè)更新事件時(shí),所有的寄存器都被更新,硬件同時(shí)(依據(jù)URS位)設(shè)置更新標(biāo)志位 (TIMx_SR寄存器中的UIF位)。

?預(yù)分頻器的緩沖區(qū)被置入預(yù)裝載寄存器的值(TIMx_PSC寄存器的內(nèi)容)。

?自動(dòng)裝載影子寄存器被重新置入預(yù)裝載寄存器的值(TIMx_ARR)。

下圖給出一些例子,當(dāng)TIMx_ARR=0x36時(shí)計(jì)數(shù)器在不同時(shí)鐘頻率下的動(dòng)作:

wKgZPGg2cEOADGzHAACL7psv-2c145.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為1

wKgZPGg2cESAR_MKAAB-EATFNto954.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為2

wKgZPGg2cESAEKa7AABwLvLjwaY895.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為4

wKgZO2g2cESAZrk-AABnmN1g-BQ643.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為N

wKgZPGg2cESAD0nvAACyExeRrjQ043.png

計(jì)數(shù)器時(shí)序圖,當(dāng)ARPE=0時(shí)的更新事件(TIMx_ARR沒(méi)有預(yù)裝入)

wKgZO2g2cESAar8nAADKRhEpG6U661.png

計(jì)數(shù)器時(shí)序圖,當(dāng)ARPE=1時(shí)的更新事件(預(yù)裝入了TIMx_ARR)

向下計(jì)數(shù)模式

在向下模式中,計(jì)數(shù)器從自動(dòng)裝入的值(TIMx_ARR計(jì)數(shù)器的值)開(kāi)始向下計(jì)數(shù)到0,然后從自動(dòng) 裝入的值重新開(kāi)始并且產(chǎn)生一個(gè)計(jì)數(shù)器向下溢出事件。

每次計(jì)數(shù)器溢出時(shí)可以產(chǎn)生更新事件,在TIMx_EGR寄存器中(通過(guò)軟件方式或者使用從模式控 制器)設(shè)置UG位,也同樣可以產(chǎn)生一個(gè)更新事件。

設(shè)置TIMx_CR1寄存器的UDIS位可以禁止UEV事件。這樣可以避免向預(yù)裝載寄存器中寫(xiě)入新值 時(shí)更新影子寄存器。因此UDIS位被清為'0'之前不會(huì)產(chǎn)生更新事件。然而,計(jì)數(shù)器仍會(huì)從當(dāng)前自 動(dòng)加載值重新開(kāi)始計(jì)數(shù),同時(shí)預(yù)分頻器的計(jì)數(shù)器重新從0開(kāi)始(但預(yù)分頻系數(shù)不變)。

此外,如果設(shè)置了TIMx_CR1寄存器中的URS位(選擇更新請(qǐng)求) ,設(shè)置UG位將產(chǎn)生一個(gè)更新事 件UEV但不設(shè)置UIF標(biāo)志(因此不產(chǎn)生中斷和DMA請(qǐng)求),這是為了避免在發(fā)生捕獲事件并清除計(jì) 數(shù)器時(shí),同時(shí)產(chǎn)生更新和捕獲中斷。

當(dāng)發(fā)生更新事件時(shí),所有的寄存器都被更新,并且(根據(jù)URS位的設(shè)置)更新標(biāo)志位(TIMx_SR寄 存器中的UIF位)也被設(shè)置。

?預(yù)分頻器的緩存器被置入預(yù)裝載寄存器的值(TIMx_PSC寄存器的值)。

?當(dāng)前的自動(dòng)加載寄存器被更新為預(yù)裝載值(TIMx_ARR寄存器中的內(nèi)容) 。

注:自動(dòng)裝載在計(jì) 數(shù)器重載入之前被更新,因此下一個(gè)周期將是預(yù)期的值。

以下是一些當(dāng)TIMx_ARR=0x36時(shí),計(jì)數(shù)器在不同時(shí)鐘頻率下的操作例子。

wKgZPGg2cESAG0CoAACRfx0rdzY994.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為1

wKgZO2g2cESAcoJlAACAwEexPR0454.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為2

wKgZPGg2cESAeeJPAAA61IkSUJU432.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為4

wKgZO2g2cESAJcabAAA2_EMBfGg480.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為N

wKgZO2g2cESAFpk8AABdjGTtfZ4775.png

計(jì)數(shù)器時(shí)序圖,當(dāng)沒(méi)有使用重復(fù)計(jì)數(shù)器時(shí)的更新事件

中央對(duì)齊模式(向上/向下計(jì)數(shù))

在中央對(duì)齊模式,計(jì)數(shù)器從0開(kāi)始計(jì)數(shù)到自動(dòng)加載的值(TIMx_ARR寄存器)-1,產(chǎn)生一個(gè)計(jì)數(shù)器 溢出事件,然后向下計(jì)數(shù)到1并且產(chǎn)生一個(gè)計(jì)數(shù)器下溢事件;然后再?gòu)?開(kāi)始重新計(jì)數(shù)。

在這個(gè)模式,不能寫(xiě)入TIMx_CR1中的DIR方向位。它由硬件更新并指示當(dāng)前的計(jì)數(shù)方向。

可以在每次計(jì)數(shù)上溢和每次計(jì)數(shù)下溢時(shí)產(chǎn)生更新事件;也可以通過(guò)(軟件或者使用從模式控制器) 設(shè)置TIMx_EGR寄存器中的UG位產(chǎn)生更新事件。然后,計(jì)數(shù)器重新從0開(kāi)始計(jì)數(shù),預(yù)分頻器也 重新從0開(kāi)始計(jì)數(shù)。

設(shè)置TIMx_CR1寄存器中的UDIS位可以禁止UEV事件。這樣可以避免在向預(yù)裝載寄存器中寫(xiě)入 新值時(shí)更新影子寄存器。因此UDIS位被清為'0'之前不會(huì)產(chǎn)生更新事件。然而,計(jì)數(shù)器仍會(huì)根據(jù) 當(dāng)前自動(dòng)重加載的值,繼續(xù)向上或向下計(jì)數(shù)。

此外,如果設(shè)置了TIMx_CR1寄存器中的URS位(選擇更新請(qǐng)求) ,設(shè)置UG位將產(chǎn)生一個(gè)更新事 件UEV但不設(shè)置UIF標(biāo)志(因此不產(chǎn)生中斷和DMA請(qǐng)求),這是為了避免在發(fā)生捕獲事件并清除計(jì) 數(shù)器時(shí),同時(shí)產(chǎn)生更新和捕獲中斷。

當(dāng)發(fā)生更新事件時(shí),所有的寄存器都被更新,并且(根據(jù)URS位的設(shè)置)更新標(biāo)志位(TIMx_SR寄 存器中的UIF位)也被設(shè)置。

?預(yù)分頻器的緩存器被加載為預(yù)裝載(TIMx_PSC寄存器)的值。

?當(dāng)前的自動(dòng)加載寄存器被更新為預(yù)裝載值(TIMx_ARR寄存器中的內(nèi)容)。

注:如果因?yàn)橛?jì)數(shù) 器溢出而產(chǎn)生更新,自動(dòng)重裝載將在計(jì)數(shù)器重載入之前被更新,因此下一個(gè)周期將是預(yù)期 的值(計(jì)數(shù)器被裝載為新的值)。

以下是一些計(jì)數(shù)器在不同時(shí)鐘頻率下的操作的例子:

wKgZPGg2cESAIyAKAABQDg_JHVs883.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為1,TIMx_ARR=0x6

1.這里使用了中心對(duì)齊模式1。

wKgZO2g2cESAB0bHAABCsnUPytg473.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為2

wKgZPGg2cESAaUuFAAA2i1iaut0559.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為4,TIMx_ARR=0x36

wKgZO2g2cESALVK5AAA2i1iaut0314.png

計(jì)數(shù)器時(shí)序圖,內(nèi)部時(shí)鐘分頻因子為N

wKgZPGg2cESAJzGuAABq5I2a9nI067.png

計(jì)數(shù)器時(shí)序圖,ARPE=1時(shí)的更新事件(計(jì)數(shù)器下溢)

計(jì)數(shù)器時(shí)序圖,ARPE=1時(shí)的更新事件(計(jì)數(shù)器溢出)

1.3.3時(shí)鐘選擇

計(jì)數(shù)器時(shí)鐘可由下列時(shí)鐘源提供:

?內(nèi)部時(shí)鐘(CK_INT)

?外部時(shí)鐘模式1:外部輸入腳(TIx)

?外部時(shí)鐘模式2:外部觸發(fā)輸入(ETR)

?內(nèi)部觸發(fā)輸入(ITRx):使用一個(gè)定時(shí)器作為另一個(gè)定時(shí)器的預(yù)分頻器,如可以配置一個(gè)定時(shí)器Timer1而作為另一個(gè)定時(shí)器Timer2的預(yù)分頻器。

內(nèi)部時(shí)鐘源(CK_INT)

如果禁止了從模式控制器(TIMx_SMCR寄存器的SMS=000),則CEN 、DIR(TIMx_CR1寄存器) 和UG位(TIMx_EGR寄存器)是事實(shí)上的控制位,并且只能被軟件修改(UG位仍被自動(dòng)清除)。只 要CEN位被寫(xiě)成'1',預(yù)分頻器的時(shí)鐘就由內(nèi)部時(shí)鐘CK_INT提供。

下圖顯示了控制電路和向上計(jì)數(shù)器在一般模式下,不帶預(yù)分頻器時(shí)的操作:

wKgZPGg2cESAVDBzAABBNgqPM-Q002.png

一般模式下的控制電路,內(nèi)部時(shí)鐘分頻因子為1

外部時(shí)鐘源模式1

當(dāng)TIMx_SMCR寄存器的SMS=111時(shí),此模式被選中。計(jì)數(shù)器可以在選定輸入端的每個(gè)上升沿 或下降沿計(jì)數(shù)。

wKgZO2g2cESAPa31AADQFIfKVMA407.png

TI2外部時(shí)鐘連接例子

例如,要配置向上計(jì)數(shù)器在T12輸入端的上升沿計(jì)數(shù),使用下列步驟:

1.配置TIMx_CCMR1寄存器CC2S='01',配置通道2檢測(cè)TI2輸入的上升沿。

2.配置TIMx_CCMR1寄存器的IC2F[3:0],選擇輸入濾波器帶寬(如果不需要濾波器,保持 IC2F=0000)。

注:捕獲預(yù)分頻器不用作觸發(fā),所以不需要對(duì)它進(jìn)行配置。

3.配置TIMx_CCER寄存器的CC2P='0',選定上升沿極性。

4.配置TIMx_SMCR寄存器的SMS='111',選擇定時(shí)器外部時(shí)鐘模式1。

5.配置TIMx_SMCR寄存器中的TS='110',選定TI2作為觸發(fā)輸入源。

6.設(shè)置TIMx_CR1寄存器的CEN='1',啟動(dòng)計(jì)數(shù)器。

當(dāng)上升沿出現(xiàn)在TI2,計(jì)數(shù)器計(jì)數(shù)一次,且TIF標(biāo)志被設(shè)置。

在TI2的上升沿和計(jì)數(shù)器實(shí)際時(shí)鐘之間的延時(shí),取決于在TI2輸入端的重新同步電路。

wKgZPGg2cESAJvSBAAApmd9KH2Y358.png

外部時(shí)鐘模式1下的控制電路

外部時(shí)鐘源模式2

選定此模式的方法為:令TIMx_SMCR寄存器中的ECE=1 計(jì)數(shù)器能夠在外部觸發(fā)ETR的每一個(gè)上升沿或下降沿計(jì)數(shù)。 下圖是外部觸發(fā)輸入的框圖:

wKgZO2g2cESAWVtZAADEAs5lA4Q207.png

外部觸發(fā)輸入框圖

例如,要配置在ETR下每2個(gè)上升沿計(jì)數(shù)一次的向上計(jì)數(shù)器,使用下列步驟:

1.本例中不需要濾波器,置TIMx_SMCR寄存器中的ETF[3:0]=0000

2.設(shè)置預(yù)分頻器,置TIMx_SMCR寄存器中的ETPS[1:0]=01

3.設(shè)置在ETR的上升沿檢測(cè),置TIMx_SMCR寄存器中的ETP=0

4.開(kāi)啟外部時(shí)鐘模式2,置TIMx_SMCR寄存器中的ECE=1

5.啟動(dòng)計(jì)數(shù)器,置TIMx_CR1寄存器中的CEN=1 計(jì)數(shù)器在每2個(gè)ETR上升沿計(jì)數(shù)一次。

在ETR的上升沿和計(jì)數(shù)器實(shí)際時(shí)鐘之間的延時(shí)取決于在ETRP信號(hào)端的重新同步電路。

wKgZO2g2cESAB8srAAAuZTUwOP4299.png

外部時(shí)鐘模式2下的控制電路

1.3.4捕獲/比較通道

每一個(gè)捕獲/比較通道都是圍繞著一個(gè)捕獲/比較寄存器(包含影子寄存器),包括捕獲的輸入部分

(數(shù)字濾波、多路復(fù)用和預(yù)分頻器),和輸出部分(比較器和輸出控制)。 下面幾張圖是一個(gè)捕獲/比較通道概覽。

輸入部分對(duì)相應(yīng)的TIx輸入信號(hào)采樣,并產(chǎn)生一個(gè)濾波后的信號(hào)TIxF。然后,一個(gè)帶極性選擇的 邊緣檢測(cè)器產(chǎn)生一個(gè)信號(hào)(TIxFPx),它可以作為從模式控制器的輸入觸發(fā)或者作為捕獲控制。該 信號(hào)通過(guò)預(yù)分頻進(jìn)入捕獲寄存器(ICxPS)。

wKgZPGg2cEWAeaCeAABhm4WlaTM445.png

捕獲/比較通道(如:通道1輸入部分)

輸出部分產(chǎn)生一個(gè)中間波形OCxRef(高有效)作為基準(zhǔn),鏈的末端決定最終輸出信號(hào)的極性。

wKgZPGg2cEWARlGIAAEnS5Uglx4086.png

捕獲/比較通道1的主電路

wKgZPGg2cEWAaOKJAABKVuovIu4739.png

捕獲/比較通道的輸出部分(通道1)

捕獲/比較模塊由一個(gè)預(yù)裝載寄存器和一個(gè)影子寄存器組成。讀寫(xiě)過(guò)程僅操作預(yù)裝載寄存器。

在捕獲模式下,捕獲發(fā)生在影子寄存器上,然后再?gòu)?fù)制到預(yù)裝載寄存器中。

在比較模式下,預(yù)裝載寄存器的內(nèi)容被復(fù)制到影子寄存器中,然后影子寄存器的內(nèi)容和計(jì)數(shù)器進(jìn)行比較。

1.3.5輸入捕獲模式

在輸入捕獲模式下,當(dāng)檢測(cè)到ICx信號(hào)上相應(yīng)的邊沿后,計(jì)數(shù)器的當(dāng)前值被鎖存到捕獲/比較寄存 器(TIMx_CCRx)中。當(dāng)捕獲事件發(fā)生時(shí),相應(yīng)的CCxIF標(biāo)志(TIMx_SR寄存器)被置'1',如果使能 了中斷或者DMA操作, 則將產(chǎn)生中斷或者DMA操作。如果捕獲事件發(fā)生時(shí)CCxIF標(biāo)志已經(jīng)為 高,那么重復(fù)捕獲標(biāo)志CCxOF(TIMx_SR寄存器)被置'1'。寫(xiě)CCxIF=0可清除CCxIF,或讀取存 儲(chǔ)在TIMx_CCRx寄存器中的捕獲數(shù)據(jù)也可清除CCxIF。寫(xiě)CCxOF=0可清除CCxOF。

以下例子說(shuō)明如何在TI1輸入的上升沿時(shí)捕獲計(jì)數(shù)器的值到TIMx_CCR1寄存器中,步驟如下:

?選擇有效輸入端:TIMx_CCR1必須連接到TI1輸入,所以寫(xiě)入TIMx_CCR1寄存器中的 CC1S=01,只要CC1S不為'00',通道被配置為輸入,并且TM1_CCR1寄存器變?yōu)橹蛔x。

?根據(jù)輸入信號(hào)的特點(diǎn),配置輸入濾波器為所需的帶寬(即輸入為T(mén)Ix時(shí),輸入濾波器控制位是 TIMx_CCMRx寄存器中的ICxF位)。假設(shè)輸入信號(hào)在最多5個(gè)內(nèi)部時(shí)鐘周期的時(shí)間內(nèi)抖動(dòng), 我們須配置濾波器的帶寬長(zhǎng)于5個(gè)時(shí)鐘周期。因此我們可以(以fDTS頻率)連續(xù)采樣8次,以確 認(rèn)在TI1上一次真實(shí)的邊沿變換,即在TIMx_CCMR1寄存器中寫(xiě)入IC1F=0011。

?選擇TI1通道的有效轉(zhuǎn)換邊沿,在TIMx_CCER寄存器中寫(xiě)入CC1P=0(上升沿)。

?配置輸入預(yù)分頻器。在本例中,我們希望捕獲發(fā)生在每一個(gè)有效的電平轉(zhuǎn)換時(shí)刻,因此預(yù)分頻器被禁止(寫(xiě)TIMx_CCMR1寄存器的IC1PS=00)。

?設(shè)置TIMx_CCER寄存器的CC1E=1,允許捕獲計(jì)數(shù)器的值到捕獲寄存器中。

?如果需要,通過(guò)設(shè)置TIMx_DIER寄存器中的CC1IE位允許相關(guān)中斷請(qǐng)求,通過(guò)設(shè)置 TIMx_DIER寄存器中的CC1DE位允許DMA請(qǐng)求。

當(dāng)發(fā)生一個(gè)輸入捕獲時(shí):

?產(chǎn)生有效的電平轉(zhuǎn)換時(shí),計(jì)數(shù)器的值被傳送到TIMx_CCR1寄存器。

?CC1IF標(biāo)志被設(shè)置(中斷標(biāo)志)。當(dāng)發(fā)生至少2個(gè)連續(xù)的捕獲時(shí),而CC1IF未曾被清除, CC1OF也被置'1'。

?如設(shè)置了CC1IE位,則會(huì)產(chǎn)生一個(gè)中斷。

?如設(shè)置了CC1DE位,則還會(huì)產(chǎn)生一個(gè)DMA請(qǐng)求。

為了處理捕獲溢出,建議在讀出捕獲溢出標(biāo)志之前讀取數(shù)據(jù),這是為了避免丟失在讀出捕獲溢出標(biāo)志之后和讀取數(shù)據(jù)之前可能產(chǎn)生的捕獲溢出信息。

注:設(shè)置TIMx_EGR寄存器中相應(yīng)的CCxG位,可以通過(guò)軟件產(chǎn)生輸入捕獲中斷和/或DMA請(qǐng)求。

1.3.6PWM輸入模式

該模式是輸入捕獲模式的一個(gè)特例,除下列區(qū)別外,操作與輸入捕獲模式相同:

?兩個(gè)ICx信號(hào)被映射至同一個(gè)TIx輸入。

?這2個(gè)ICx信號(hào)為邊沿有效,但是極性相反。

?其中一個(gè)TIxFP信號(hào)被作為觸發(fā)輸入信號(hào),而從模式控制器被配置成復(fù)位模式。

例如,你需要測(cè)量輸入到TI1上的PWM信號(hào)的長(zhǎng)度(TIMx_CCR1寄存器)和占空比(TIMx_CCR2 寄存器),具體步驟如下(取決于CK_INT的頻率和預(yù)分頻器的值)。

?選擇TIMx_CCR1的有效輸入:置TIMx_CCMR1寄存器的CC1S=01(選擇TI1)。

?選擇TI1FP1的有效極性(用來(lái)捕獲數(shù)據(jù)到TIMx_CCR1中和清除計(jì)數(shù)器):置CC1P=0(上升沿 有效)。

?選擇TIMx_CCR2的有效輸入:置TIMx_CCMR1寄存器的CC2S=10(選擇TI1)。

?選擇TI1FP2的有效極性(捕獲數(shù)據(jù)到TIMx_CCR2):置CC2P=1(下降沿有效)。

?選擇有效的觸發(fā)輸入信號(hào):置TIMx_SMCR寄存器中的TS=101(選擇TI1FP1)。

?配置從模式控制器為復(fù)位模式:置TIMx_SMCR中的SMS=100。

?使能捕獲:置TIMx_CCER寄存器中CC1E=1且CC2E=1。

wKgZO2g2cEWAcWXOAABcRZVVPNw477.png

PWM輸入模式時(shí)序

由于只有TI1FP1 和TI2FP2 連到了從模式控制器 ,所以 PWM 輸入模式只能使用TIMx_CH1 /TIMx_CH2信號(hào)。

1.3.7強(qiáng)置輸出模式

在輸出模式(TIMx_CCMRx寄存器中CCxS=00)下,輸出比較信號(hào)(OCxREF和相應(yīng)的OCx)能夠 直接由軟件強(qiáng)置為有效或無(wú)效狀態(tài),而不依賴(lài)于輸出比較寄存器和計(jì)數(shù)器間的比較結(jié)果。

置TIMx_CCMRx寄存器中相應(yīng)的OCxM=101,即可強(qiáng)置輸出比較信號(hào)(OCxREF/OCx)為有效狀 態(tài)。這樣OCxREF被強(qiáng)置為高電平(OCxREF始終為高電平有效),同時(shí)OCx得到CCxP極性位相 反的值。

例如:CCxP=0(OCx高電平有效),則OCx被強(qiáng)置為高電平。

置TIMx_CCMRx寄存器中的OCxM=100,可強(qiáng)置OCxREF信號(hào)為低。

該模式下,在TIMx_CCRx影子寄存器和計(jì)數(shù)器之間的比較仍然在進(jìn)行,相應(yīng)的標(biāo)志也會(huì)被修改。因此仍然會(huì)產(chǎn)生相應(yīng)的中斷和DMA請(qǐng)求。這將會(huì)在下面的輸出比較模式一節(jié)中介紹。

1.3.8輸出比較模式

此項(xiàng)功能是用來(lái)控制一個(gè)輸出波形,或者指示一段給定的的時(shí)間已經(jīng)到時(shí)。當(dāng)計(jì)數(shù)器與捕獲/比較寄存器的內(nèi)容相同時(shí),輸出比較功能做如下操作:

?將輸出比較模式(TIMx_CCMRx寄存器中的OCxM位)和輸出極性(TIMx_CCER寄存器中的 CCxP位)定義的值輸出到對(duì)應(yīng)的引腳上。在比較匹配時(shí),輸出引腳可以保持它的電平(OCxM=000)、被設(shè)置成有效電平(OCxM=001)、被設(shè)置成無(wú)效電平(OCxM=010)或進(jìn)行翻轉(zhuǎn)(OCxM=011)。

?設(shè)置中斷狀態(tài)寄存器中的標(biāo)志位(TIMx_SR寄存器中的CCxIF位)。

?若設(shè)置了相應(yīng)的中斷屏蔽(TIMx_DIER寄存器中的CCxIE位),則產(chǎn)生一個(gè)中斷。

?若設(shè)置了相應(yīng)的使能位(TIMx_DIER寄存器中的CCxDE位,TIMx_CR2寄存器中的CCDS位 選擇DMA請(qǐng)求功能),則產(chǎn)生一個(gè)DMA請(qǐng)求。

TIMx_CCMRx中的OCxPE位選擇TIMx_CCRx寄存器是否需要使用預(yù)裝載寄存器。 在輸出比較模式下,更新事件UEV對(duì)OCxREF和OCx輸出沒(méi)有影響。

同步的精度可以達(dá)到計(jì)數(shù)器的一個(gè)計(jì)數(shù)周期。輸出比較模式(在單脈沖模式下)也能用來(lái)輸出一個(gè) 單脈沖。

輸出比較模式的配置步驟:

1.選擇計(jì)數(shù)器時(shí)鐘(內(nèi)部,外部,預(yù)分頻器)

2.將相應(yīng)的數(shù)據(jù)寫(xiě)入TIMx_ARR和TIMx_CCRx寄存器中

3.如果要產(chǎn)生一個(gè)中斷請(qǐng)求和/或一個(gè)DMA請(qǐng)求,設(shè)置CCxIE位和/或CCxDE位。

4.選擇輸出模式,例如當(dāng)計(jì)數(shù)器CNT與CCRx匹配時(shí)翻轉(zhuǎn)OCx的輸出引腳,CCRx預(yù)裝載未 用,開(kāi)啟OCx輸出且高電平有效,則必須設(shè)置OCxM='011' 、OCxPE='0' 、CCxP='0'和 CCxE='1'。

5.設(shè)置TIMx_CR1寄存器的CEN位啟動(dòng)計(jì)數(shù)器

TIMx_CCRx寄存器能夠在任何時(shí)候通過(guò)軟件進(jìn)行更新以控制輸出波形,條件是未使用預(yù)裝載寄 存器(OCxPE='0',否則TIMx_CCRx影子寄存器只能在發(fā)生下一次更新事件時(shí)被更新)。下圖給出了一個(gè)例子:

輸出比較模式,翻轉(zhuǎn)OC1

1.3.9PWM 模式

脈沖寬度調(diào)制模式可以產(chǎn)生一個(gè)由TIMx_ARR寄存器確定頻率、由TIMx_CCRx寄存器確定占空比的信號(hào)。

在TIMx_CCMRx寄存器中的OCxM位寫(xiě)入'110'(PWM模式1)或'111'(PWM模式2),能夠獨(dú)立地設(shè) 置每個(gè)OCx輸出通道產(chǎn)生一路PWM。必須設(shè)置TIMx_CCMRx寄存器OCxPE位以使能相應(yīng)的預(yù) 裝載寄存器,最后還要設(shè)置TIMx_CR1寄存器的ARPE位,(在向上計(jì)數(shù)或中心對(duì)稱(chēng)模式中)使能 自動(dòng)重裝載的預(yù)裝載寄存器。

僅當(dāng)發(fā)生一個(gè)更新事件的時(shí)候,預(yù)裝載寄存器才能被傳送到影子寄存器,因此在計(jì)數(shù)器開(kāi)始計(jì)數(shù)之前,必須通過(guò)設(shè)置TIMx_EGR寄存器中的UG位來(lái)初始化所有的寄存器。

OCx的極性可以通過(guò)軟件在TIMx_CCER寄存器中的CCxP位設(shè)置,它可以設(shè)置為高電平有效或 低電平有效。TIMx_CCER寄存器中的CCxE位控制OCx輸出使能。詳見(jiàn)TIMx_CCERx寄存器的 描述。

在PWM模式(模式1或模式2)下,TIMx_CNT和TIMx_CCRx始終在進(jìn)行比較,(依據(jù)計(jì)數(shù)器的計(jì)數(shù) 方向) 以確定是否符合TIMx_CCRx ≤ TIMx_CNT 或者TIMx_CNT ≤ TIMx_CCRx 。然而 為了與 OCREF_CLR的功能(在下一個(gè)PWM周期之前, ETR信號(hào)上的一個(gè)外部事件能夠清除OCxREF) 一致,OCxREF信號(hào)只能在下述條件下產(chǎn)生:

l當(dāng)比較的結(jié)果改變

l當(dāng)輸出比較模式(TIMx_CCMRx寄存器中的OCxM位)從“凍結(jié)”(無(wú)比較,OCxM='000')切換到某個(gè)PWM模式(OCxM='110'或'111')。

這樣在運(yùn)行中可以通過(guò)軟件強(qiáng)置PWM輸出。

根據(jù)TIMx_CR1寄存器中CMS位的狀態(tài),定時(shí)器能夠產(chǎn)生邊沿對(duì)齊的PWM信號(hào)或中央對(duì)齊的 PWM信號(hào)。

PWM 邊沿對(duì)齊模式

向上計(jì)數(shù)配置

當(dāng)TIMx_CR1寄存器中的DIR位為低的時(shí)候執(zhí)行向上計(jì)數(shù)。參看0節(jié)。

下面是一個(gè)PWM模式1的例子。當(dāng)TIMx_CNT

如果比較值為0,則OCxREF保持為'0' 。 下圖為T(mén)IMx_ARR=8時(shí)邊沿對(duì)齊的PWM波形實(shí)例。:

wKgZPGg2cEWAQaB_AAA-eR9g4_E952.png

邊沿對(duì)齊的PWM波形(ARR=8)

向下計(jì)數(shù)的配置

當(dāng)TIMx_CR1寄存器的DIR位為高時(shí)執(zhí)行向下計(jì)數(shù)。

在 PWM 模式 1 ,當(dāng) TIMx_CNT>TIMx_CCRx 時(shí)參考信號(hào) OCxREF 為低,否 則為高。 如果 TIMx_CCRx中的比較值大于TIMx_ARR中的自動(dòng)重裝載值,則OCxREF保持為'1'。該模式下不 能產(chǎn)生0%的PWM波形。

PWM 中央對(duì)齊模式

當(dāng)TIMx_CR1寄存器中的CMS位不為'00'時(shí),為中央對(duì)齊模式(所有其他的配置對(duì)OCxREF/OCx 信號(hào)都有相同的作用)。根據(jù)不同的CMS位設(shè)置,比較標(biāo)志可以在計(jì)數(shù)器向上計(jì)數(shù)時(shí)被置'1'、在 計(jì)數(shù)器向下計(jì)數(shù)時(shí)被置'1'、或在計(jì)數(shù)器向上和向下計(jì)數(shù)時(shí)被置'1' 。TIMx_CR1寄存器中的計(jì)數(shù)方節(jié)的中央對(duì)齊模式。

下圖給出了一些中央對(duì)齊的PWM波形的例子:

?TIMx_ARR=8

?PWM模式1

?TIMx_CR1寄存器中的CMS=01,在中央對(duì)齊模式1時(shí),當(dāng)計(jì)數(shù)器向下計(jì)數(shù)時(shí)設(shè)置比較標(biāo) 志。

wKgZO2g2cEWABzFdAACS3j8CPAE911.png

中央對(duì)齊的PWM波形(APR=8)

使用中央對(duì)齊模式的提示:

進(jìn)入中央對(duì)齊模式時(shí),使用當(dāng)前的向上/向下計(jì)數(shù)配置;這就意味著計(jì)數(shù)器向上還是向下計(jì) 數(shù)取決于TIMx_CR1寄存器中DIR位的當(dāng)前值。此外,軟件不能同時(shí)修改DIR和CMS位。

不推薦當(dāng)運(yùn)行在中央對(duì)齊模式時(shí)改寫(xiě)計(jì)數(shù)器,因?yàn)檫@會(huì)產(chǎn)生不可預(yù)知的結(jié)果。特別地:

如果寫(xiě)入計(jì)數(shù)器的值大于自動(dòng)重加載的值(TIMx_CNT>TIMx_ARR),則方向不會(huì)被更新。例如,如果計(jì)數(shù)器正在向上計(jì)數(shù),它就會(huì)繼續(xù)向上計(jì)數(shù)。

如果將0或者TIMx_ARR的值寫(xiě)入計(jì)數(shù)器,方向被更新,但不產(chǎn)生更新事件UEV。

使用中央對(duì)齊模式最保險(xiǎn)的方法,就是在啟動(dòng)計(jì)數(shù)器之前產(chǎn)生一個(gè)軟件更新(設(shè)置 TIMx_EGR 位中的UG位),不要在計(jì)數(shù)進(jìn)行過(guò)程中修改計(jì)數(shù)器的值。

1.3.10單脈沖模式

單脈沖模式(OPM)是前述眾多模式的一個(gè)特例。這種模式允許計(jì)數(shù)器響應(yīng)一個(gè)激勵(lì),并在一個(gè)程序可控的延時(shí)之后,產(chǎn)生一個(gè)脈寬可程序控制的脈沖。

可以通過(guò)從模式控制器啟動(dòng)計(jì)數(shù)器,在輸出比較模式或者 PWM 模式下產(chǎn)生波形。設(shè)置 TIMx_CR1寄存器中的OPM位將選擇單脈沖模式,這樣可以讓計(jì)數(shù)器自動(dòng)地在產(chǎn)生下一個(gè)更新事件UEV時(shí)停止。

僅當(dāng)比較值與計(jì)數(shù)器的初始值不同時(shí),才能產(chǎn)生一個(gè)脈沖。啟動(dòng)之前(當(dāng)定時(shí)器正在等待觸發(fā)), 必須如下配置:

向上計(jì)數(shù)方式:CNT < CCRx ≤ ARR (特別地,0 < CCRx),

向下計(jì)數(shù)方式:CNT > CCRx。

wKgZO2g2cEWAH4ypAAAkQOeimSU687.png

單脈沖模式的例子

例如,你需要在從TI2輸入腳上檢測(cè)到一個(gè)上升沿開(kāi)始,延遲tDELAY之后,在OC1上產(chǎn)生一個(gè)長(zhǎng)

度為tPULSE 的正脈沖。

假定TI2FP2作為觸發(fā)1:

?置TIMx_CCMR1寄存器中的CC2S='01',把TI2FP2映像到TI2。

?置TIMx_CCER寄存器中的CC2P='0',使TI2FP2能夠檢測(cè)上升沿。

?置TIMx_SMCR寄存器中的TS='110' ,TI2FP2作為從模式控制器的觸發(fā)(TRGI)。

?置TIMx_SMCR寄存器中的SMS='110'(觸發(fā)模式),TI2FP2被用來(lái)啟動(dòng)計(jì)數(shù)器。 OPM波形由寫(xiě)入比較寄存器的數(shù)值決定(要考慮時(shí)鐘頻率和計(jì)數(shù)器預(yù)分頻器)

?tDELAY 由寫(xiě)入TIMx_CCR1寄存器中的值定義。

?tPULSE 由自動(dòng)裝載值和比較值之間的差值定義(TIMx_ARR - TIMx_CCR1)。

?假定當(dāng)發(fā)生比較匹配時(shí)要產(chǎn)生從'0'到'1'的波形,當(dāng)計(jì)數(shù)器到達(dá)預(yù)裝載值時(shí)要產(chǎn)生一個(gè)從'1' 到'0'的波形;首先要置TIMx_CCMR1寄存器的OC1M='111',進(jìn)入PWM模式2;根據(jù)需要有 選擇地使能預(yù)裝載寄存器:置TIMx_CCMR1中的OC1PE='1'和TIMx_CR1寄存器中的ARPE;然后在TIMx_CCR1寄存器中填寫(xiě)比較值,在TIMx_ARR寄存器中填寫(xiě)自動(dòng)裝載值,修改UG位來(lái)產(chǎn)生一個(gè)更新事件,然后等待在TI2上的一個(gè)外部觸發(fā)事件。本例中, CC1P='0'。

在這個(gè)例子中,TIMx_CR1寄存器中的DIR和CMS位應(yīng)該置低。

因?yàn)橹恍枰粋€(gè)脈沖,所以必須設(shè)置TIMx_CR1寄存器中的OPM='1',在下一個(gè)更新事件(當(dāng)計(jì)數(shù) 器從自動(dòng)裝載值翻轉(zhuǎn)到0)時(shí)停止計(jì)數(shù)。

特殊情況:OCx快速使能:

在單脈沖模式下,在TIx輸入腳的邊沿檢測(cè)邏輯設(shè)置CEN位以啟動(dòng)計(jì)數(shù)器。然后計(jì)數(shù)器和比較值 間的比較操作產(chǎn)生了輸出的轉(zhuǎn)換。但是這些操作需要一定的時(shí)鐘周期,因此它限制了可得到的最小延時(shí)tDELAY。

如果要以最小延時(shí)輸出波形,可以設(shè)置TIMx_CCMRx寄存器中的OCxFE位;此時(shí)OCxREF(和 OCx)被強(qiáng)制響應(yīng)激勵(lì)而不再依賴(lài)比較的結(jié)果,輸出的波形與比較匹配時(shí)的波形一樣。OCxFE只 在通道配置為PWM1和PWM2模式時(shí)起作用。

1.3.11在外部事件時(shí)清除OCxREF信號(hào)

對(duì)于一個(gè)給定的通道,設(shè)置TIMx_CCMRx寄存器中對(duì)應(yīng)的OCxCE位為'1',能夠用ETRF輸入端 的高電平把OCxREF信號(hào)拉低,OCxREF信號(hào)將保持為低直到發(fā)生下一次的更新事件UEV。

該功能只能用于輸出比較和PWM模式,而不能用于強(qiáng)置模式。

例如,OCxREF信號(hào)可以聯(lián)到一個(gè)比較器的輸出,用于控制電流。這時(shí),ETR必須配置如下:

1.外部觸發(fā)預(yù)分頻器必須處于關(guān)閉:TIMx_SMCR寄存器中的ETPS[1:0]='00'。

2.必須禁止外部時(shí)鐘模式2:TIMx_SMCR寄存器中的ECE='0'。

3.外部觸發(fā)極性(ETP)和外部觸發(fā)濾波器(ETF)可以根據(jù)需要配置。

下圖顯示了當(dāng)ETRF輸入變?yōu)楦邥r(shí),對(duì)應(yīng)不同OCxCE的值,OCxREF信號(hào)的動(dòng)作。在這個(gè)例子 中,定時(shí)器TIMx被置于PWM模式。

wKgZPGg2cEWAE091AAA_45mWjHY003.png

清除TIMx的OCxREF

1.3.12編碼器接口模式

選擇編碼器接口模式的方法是:如果計(jì)數(shù)器只在TI2的邊沿計(jì)數(shù),則置TIMx_SMCR寄存器中的 SMS=001;如果只在TI1邊沿計(jì)數(shù),則置SMS=010;如果計(jì)數(shù)器同時(shí)在TI1和TI2邊沿計(jì)數(shù),則 置SMS=011。

通過(guò)設(shè)置TIMx_CCER寄存器中的CC1P和CC2P位,可以選擇TI1和TI2極性;如果需要,還可以 對(duì)輸入濾波器編程。

兩個(gè)輸入TI1和TI2被用來(lái)作為增量編碼器的接口。參看表75,假定計(jì)數(shù)器已經(jīng)啟動(dòng)(TIMx_CR1 寄存器中的CEN='1'),計(jì)數(shù)器由每次在TI1FP1或TI2FP2上的有效跳變驅(qū)動(dòng)。TI1FP1和TI2FP2 是TI1和TI2在通過(guò)輸入濾波器和極性控制后的信號(hào); 如果沒(méi)有濾波和變相, 則TI1FP1=TI1 , TI2FP2=TI2。根據(jù)兩個(gè)輸入信號(hào)的跳變順序,產(chǎn)生了計(jì)數(shù)脈沖和方向信號(hào)。依據(jù)兩個(gè)輸入信號(hào)的跳變順序,計(jì)數(shù)器向上或向下計(jì)數(shù),同時(shí)硬件對(duì)TIMx_CR1寄存器的DIR位進(jìn)行相應(yīng)的設(shè)置。 不管計(jì)數(shù)器是依靠TI1計(jì)數(shù)、依靠TI2計(jì)數(shù)或者同時(shí)依靠TI1和TI2計(jì)數(shù)。在任一輸入端(TI1或者 TI2)的跳變都會(huì)重新計(jì)算DIR位。

編碼器接口模式基本上相當(dāng)于使用了一個(gè)帶有方向選擇的外部時(shí)鐘。這意味著計(jì)數(shù)器只在0到 TIMx_ARR寄存器的自動(dòng)裝載值之間連續(xù)計(jì)數(shù)(根據(jù)方向,或是0到ARR計(jì)數(shù),或是ARR到0計(jì) 數(shù))。所以在開(kāi)始計(jì)數(shù)之前必須配置TIMx_ARR;同樣,捕獲器、比較器、預(yù)分頻器、觸發(fā)輸出特性等仍工作如常。

在這個(gè)模式下,計(jì)數(shù)器依照增量編碼器的速度和方向被自動(dòng)的修改,因此計(jì)數(shù)器的內(nèi)容始終指示著編碼器的位置。計(jì)數(shù)方向與相連的傳感器旋轉(zhuǎn)的方向?qū)?yīng)。下表列出了所有可能的組合,假設(shè)TI1和TI2不同時(shí)變換。

表75 計(jì)數(shù)方向與編碼器信號(hào)的關(guān)系

有效邊沿 相對(duì)信號(hào)的電平 (TI1FP1對(duì)應(yīng)TI2, TI2FP2對(duì)應(yīng)TI1) TI1FP1信號(hào) TI2FP2信號(hào)
上升 下降 上升 下降
僅在TI1計(jì)數(shù) 向下計(jì)數(shù) 向上計(jì)數(shù) 不計(jì)數(shù) 不計(jì)數(shù)
向上計(jì)數(shù) 向下計(jì)數(shù) 不計(jì)數(shù) 不計(jì)數(shù)
僅在TI2計(jì)數(shù) 不計(jì)數(shù) 不計(jì)數(shù) 向上計(jì)數(shù) 向下計(jì)數(shù)
不計(jì)數(shù) 不計(jì)數(shù) 向下計(jì)數(shù) 向上計(jì)數(shù)
在TI1和TI2上計(jì)數(shù) 向下計(jì)數(shù) 向上計(jì)數(shù) 向上計(jì)數(shù) 向下計(jì)數(shù)
向上計(jì)數(shù) 向下計(jì)數(shù) 向下計(jì)數(shù) 向上計(jì)數(shù)

一個(gè)外部的增量編碼器可以直接與MCU連接而不需要外部接口邏輯。但是, 一般會(huì)使用比較器 將編碼器的差動(dòng)輸出轉(zhuǎn)換到數(shù)字信號(hào),這大大增加了抗噪聲干擾能力。編碼器輸出的第三個(gè)信 號(hào)表示機(jī)械零點(diǎn),可以把它連接到一個(gè)外部中斷輸入并觸發(fā)一個(gè)計(jì)數(shù)器復(fù)位。

下圖是一個(gè)計(jì)數(shù)器操作的實(shí)例,顯示了計(jì)數(shù)信號(hào)的產(chǎn)生和方向控制。它還顯示了當(dāng)選擇了雙邊沿時(shí),輸入抖動(dòng)是如何被抑制的;抖動(dòng)可能會(huì)在傳感器的位置靠近一個(gè)轉(zhuǎn)換點(diǎn)時(shí)產(chǎn)生。在這個(gè)例子中,我們假定配置如下:

?CC1S='01' (TIMx_CCMR1寄存器,IC1FP1映射到TI1)

?CC2S='01' (TIMx_CCMR2寄存器,IC2FP2映射到TI2)

?CC1P='0' (TIMx_CCER寄存器,IC1FP1不反相,IC1FP1=TI1)

?CC2P='0' (TIMx_CCER寄存器,IC2FP2不反相,IC2FP2=TI2)

?SMS='011' (TIMx_SMCR寄存器,所有的輸入均在上升沿和下降沿有效).

?CEN='1' (TIMx_CR1寄存器,計(jì)數(shù)器使能)

wKgZO2g2cEWAGUt5AAAstb7oR2E597.png

編碼器模式下的計(jì)數(shù)器操作實(shí)例

下圖為當(dāng)IC1FP1極性反相時(shí)計(jì)數(shù)器的操作實(shí)例(CC1P='1',其他配置與上例相同)

wKgZPGg2cEWAD6waAAAstb7oR2E690.png

IC1FP1反相的編碼器接口模式實(shí)例

當(dāng)定時(shí)器配置成編碼器接口模式時(shí),提供傳感器當(dāng)前位置的信息。使用第二個(gè)配置在捕獲模式的定時(shí)器,可以測(cè)量?jī)蓚€(gè)編碼器事件的間隔,獲得動(dòng)態(tài)的信息(速度,加速度,減速度)。指示機(jī) 械零點(diǎn)的編碼器輸出可被用做此目的。根據(jù)兩個(gè)事件間的間隔,可以按照固定的時(shí)間讀出計(jì)數(shù)器。如果可能的話(huà),你可以把計(jì)數(shù)器的值鎖存到第三個(gè)輸入捕獲寄存器(捕獲信號(hào)必須是周期的 并且可以由另一個(gè)定時(shí)器產(chǎn)生);也可以通過(guò)一個(gè)由實(shí)時(shí)時(shí)鐘產(chǎn)生的DMA請(qǐng)求來(lái)讀取它的值。

1.3.13定時(shí)器輸入異或功能

TIMx_CR2寄存器中的TI1S位,允許通道1的輸入濾波器連接到一個(gè)異或門(mén)的輸出端,異或門(mén)的 3個(gè)輸入端為T(mén)IMx_CH1、TIMx_CH2和TIMx_CH3。

異或輸出能夠被用于所有定時(shí)器的輸入功能,如觸發(fā)或輸入捕獲。

1.3.14定時(shí)器和外部觸發(fā)的同步

TIMx定時(shí)器能夠在多種模式下和一個(gè)外部的觸發(fā)同步:復(fù)位模式、門(mén)控模式和觸發(fā)模式。

從模式:復(fù)位模式

在發(fā)生一個(gè)觸發(fā)輸入事件時(shí),計(jì)數(shù)器和它的預(yù)分頻器能夠重新被初始化;同時(shí),如果TIMx_CR1 寄存器的URS位為低,還會(huì)產(chǎn)生一個(gè)更新事件UEV;然后所有的預(yù)裝載寄存器(TIMx_ARR , TIMx_CCRx)都會(huì)被更新。

在下面的例子中,TI1輸入端的上升沿導(dǎo)致向上計(jì)數(shù)器被清零:

配置通道1以檢測(cè)TI1的上升沿。配置輸入濾波器的帶寬(在本例中,不需要任何濾波器,因 此保持IC1F=0000)。觸發(fā)操作中不使用捕獲預(yù)分頻器,所以不需要配置它。CC1S位只選 擇輸入捕獲源,即TIMx_CCMR1寄存器中CC1S=01。置TIMx_CCER寄存器中CC1P=0以 確定極性(只檢測(cè)上升沿)。

置TIMx_SMCR寄存器中SMS=100,配置定時(shí)器為復(fù)位模式;置TIMx_SMCR寄存器中 TS=101,選擇TI1作為輸入源。

置TIMx_CR1寄存器中CEN=1,啟動(dòng)計(jì)數(shù)器。

計(jì)數(shù)器開(kāi)始依據(jù)內(nèi)部時(shí)鐘計(jì)數(shù),然后正常運(yùn)轉(zhuǎn)直到TI1出現(xiàn)一個(gè)上升沿;此時(shí),計(jì)數(shù)器被清零然 后從0重新開(kāi)始計(jì)數(shù)。同時(shí),觸發(fā)標(biāo)志(TIMx_SR寄存器中的TIF位)被設(shè)置,根據(jù)TIMx_DIER寄 存器中TIE(中斷使能)位和TDE(DMA使能)位的設(shè)置,產(chǎn)生一個(gè)中斷請(qǐng)求或一個(gè)DMA請(qǐng)求。

下圖顯示當(dāng)自動(dòng)重裝載寄存器TIMx_ARR=0x36時(shí)的動(dòng)作。在TI1上升沿和計(jì)數(shù)器的實(shí)際復(fù)位之 間的延時(shí),取決于TI1輸入端的重同步電路。

wKgZO2g2cEWAQLuVAAA3iTDDhl4429.png

復(fù)位模式下的控制電路

從模式:門(mén)控模式

按照選中的輸入端電平使能計(jì)數(shù)器。

在如下的例子中,計(jì)數(shù)器只在TI1為低時(shí)向上計(jì)數(shù):

?配置通道1以檢測(cè)TI1上的低電平。配置輸入濾波器帶寬(本例中,不需要濾波,所以保持 IC1F=0000)。觸發(fā)操作中不使用捕獲預(yù)分頻器,所以不需要配置。CC1S位用于選擇輸入 捕獲源,置TIMx_CCMR1寄存器中CC1S=01。置TIMx_CCER寄存器中CC1P=1以確定極 性(只檢測(cè)低電平)。

?置TIMx_SMCR寄存器中SMS=101,配置定時(shí)器為門(mén)控模式;置TIMx_SMCR寄存器中 TS=101,選擇TI1作為輸入源。

?置TIMx_CR1寄存器中CEN=1,啟動(dòng)計(jì)數(shù)器。在門(mén)控模式下,如果CEN=0,則計(jì)數(shù)器不能 啟動(dòng),不論觸發(fā)輸入電平如何。

只要TI1為低,計(jì)數(shù)器開(kāi)始依據(jù)內(nèi)部時(shí)鐘計(jì)數(shù),在TI1變高時(shí)停止計(jì)數(shù)。當(dāng)計(jì)數(shù)器開(kāi)始或停止時(shí) 都設(shè)置TIMx_SR中的TIF標(biāo)置。

TI1上升沿和計(jì)數(shù)器實(shí)際停止之間的延時(shí),取決于TI1輸入端的重同步電路。

wKgZPGg2cEWABPJuAAA261jfH7o201.png

門(mén)控模式下的控制電路

從模式:觸發(fā)模式

輸入端上選中的事件使能計(jì)數(shù)器。

在下面的例子中,計(jì)數(shù)器在TI2輸入的上升沿開(kāi)始向上計(jì)數(shù):

?配置通道2檢測(cè)TI2的上升沿。配置輸入濾波器帶寬(本例中,不需要任何濾波器,保持IC2F=0000)。觸發(fā)操作中不使用捕獲預(yù)分頻器,不需要配置。CC2S位只用于選擇輸入捕 獲源,置TIMx_CCMR1寄存器中CC2S=01。置TIMx_CCER寄存器中CC2P=1以確定極性 (只檢測(cè)低電平)。

?置TIMx_SMCR寄存器中SMS=110,配置定時(shí)器為觸發(fā)模式;置TIMx_SMCR寄存器中 TS=110,選擇TI2作為輸入源。

當(dāng)TI2出現(xiàn)一個(gè)上升沿時(shí),計(jì)數(shù)器開(kāi)始在內(nèi)部時(shí)鐘驅(qū)動(dòng)下計(jì)數(shù),同時(shí)設(shè)置TIF標(biāo)志。

TI2上升沿和計(jì)數(shù)器啟動(dòng)計(jì)數(shù)之間的延時(shí),取決于TI2輸入端的重同步電路。

wKgZO2g2cEWAUp8vAAAlsXjW068910.png

觸發(fā)器模式下的控制電路

從模式:外部時(shí)鐘模式2 + 觸發(fā)模式

外部時(shí)鐘模式2可以與另一種從模式(外部時(shí)鐘模式1和編碼器模式除外)一起使用。這時(shí),ETR信 號(hào)被用作外部時(shí)鐘的輸入,在復(fù)位模式、門(mén)控模式或觸發(fā)模式時(shí)可以選擇另一個(gè)輸入作為觸發(fā)輸入。不建議使用TIMx_SMCR寄存器的TS位選擇ETR作為T(mén)RGI。

下面的例子中,TI1上出現(xiàn)一個(gè)上升沿之后,計(jì)數(shù)器即在ETR的每一個(gè)上升沿向上計(jì)數(shù)一次:

?通過(guò)TIMx_SMCR寄存器配置外部觸發(fā)輸入電路:

······ETF=0000:沒(méi)有濾波

······ETPS=00:不用預(yù)分頻器

······ETP=0:檢測(cè)ETR的上升沿,置ECE=1使能外部時(shí)鐘模式2

?按如下配置通道1,檢測(cè)TI的上升沿:

······IC1F=0000:沒(méi)有濾波

·······觸發(fā)操作中不使用捕獲預(yù)分頻器,不需要配置

·······置TIMx_CCMR1寄存器中CC1S=01,選擇輸入捕獲源

······置TIMx_CCER寄存器中CC1P=0以確定極性(只檢測(cè)上升沿)

?置TIMx_SMCR寄存器中SMS=110,配置定時(shí)器為觸發(fā)模式。置TIMx_SMCR寄存器中 TS=101,選擇TI1作為輸入源。

當(dāng)TI1上出現(xiàn)一個(gè)上升沿時(shí),TIF標(biāo)志被設(shè)置,計(jì)數(shù)器開(kāi)始在ETR的上升沿計(jì)數(shù)。

ETR信號(hào)的上升沿和計(jì)數(shù)器實(shí)際復(fù)位間的延時(shí),取決于ETRP輸入端的重同步電路。

外部時(shí)鐘模式2+觸發(fā)模式下的控制電路

1.3.15定時(shí)器同步

所有TIMx定時(shí)器在內(nèi)部相連,用于定時(shí)器同步或鏈接。當(dāng)一個(gè)定時(shí)器處于主模式時(shí),它可以對(duì)另一個(gè)處于從模式的定時(shí)器的計(jì)數(shù)器進(jìn)行復(fù)位、啟動(dòng)、停止或提供時(shí)鐘等操作。

下圖顯示了觸發(fā)選擇和主模式選擇模塊的概況。

使用一個(gè)定時(shí)器作為另一個(gè)定時(shí)器的預(yù)分頻器

wKgZPGg2cEWABKn2AAA_yBtTA2U151.png

主/從定時(shí)器的例子

如:可以配置定時(shí)器1作為定時(shí)器2的預(yù)分頻器。參考上圖,進(jìn)行下述操作:

?配置定時(shí)器1為主模式,它可以在每一個(gè)更新事件UEV時(shí)輸出一個(gè)周期性的觸發(fā)信號(hào)。在TIM1_CR2寄存器的MMS='010'時(shí),每當(dāng)產(chǎn)生一個(gè)更新事件時(shí)在TRGO1上輸出一個(gè)上升沿信號(hào)。

?連接定時(shí)器1的TRGO1輸出至定時(shí)器2,設(shè)置TIM2_SMCR寄存器的TS='000',配置定時(shí)器2為使用ITR1作為內(nèi)部觸發(fā)的從模式。

?然后把從模式控制器置于外部時(shí)鐘模式1(TIM2_SMCR寄存器的SMS=111);這樣定時(shí)器2即可由定時(shí)器1周期性的上升沿(即定時(shí)器1的計(jì)數(shù)器溢出)信號(hào)驅(qū)動(dòng)。

?最后,必須設(shè)置相應(yīng)(TIMx_CR1寄存器)的CEN位分別啟動(dòng)兩個(gè)定時(shí)器。

注:如果OCx已被選中為定時(shí)器1的觸發(fā)輸出(MMS=1xx),它的上升沿用于驅(qū)動(dòng)定時(shí)器2的計(jì)數(shù)器。

使用一個(gè)定時(shí)器使能另一個(gè)定時(shí)器

在這個(gè)例子中,定時(shí)器2的使能由定時(shí)器1的輸出比較控制。只當(dāng)定時(shí)器1的OC1REF為高時(shí),定時(shí)器2才對(duì)分頻后的內(nèi)部時(shí)鐘計(jì)數(shù)。兩個(gè)定時(shí)器的時(shí)鐘頻率都是由預(yù)分頻器對(duì)CK_INT除以3(fCK_CNT=fCK_INT/3)得到。

?配置定時(shí)器1為主模式,送出它的輸出比較參考信號(hào)(OC1REF)為觸發(fā)輸出(TIM1_CR2寄存器的MMS=100)

?配置定時(shí)器1的OC1REF波形(TIM1_CCMR1寄存器)

?配置定時(shí)器2從定時(shí)器1獲得輸入觸發(fā)(TIM2_SMCR寄存器的TS=000)

?配置定時(shí)器2為門(mén)控模式(TIM2_SMCR寄存器的SMS=101)

?置TIM2_CR1寄存器的CEN=1以使能定時(shí)器2

?置TIM1_CR1寄存器的CEN=1以啟動(dòng)定時(shí)器1

注:定時(shí)器2的時(shí)鐘不與定時(shí)器1的時(shí)鐘同步,這個(gè)模式只影響定時(shí)器2計(jì)數(shù)器的使能信號(hào)。

wKgZO2g2cEWAXqp5AABIhdGxUlU653.png

定時(shí)器1的OC1REF控制定時(shí)器2

在這個(gè)例子中,在定時(shí)器2啟動(dòng)之前,它們的計(jì)數(shù)器和預(yù)分頻器未被初始化,因此它們從當(dāng)前的數(shù)值開(kāi)始計(jì)數(shù)。可以在啟動(dòng)定時(shí)器1之前復(fù)位2個(gè)定時(shí)器,使它們從給定的數(shù)值開(kāi)始,即在定時(shí)器計(jì)數(shù)器中寫(xiě)入需要的任意數(shù)值。寫(xiě)TIMx_EGR寄存器的UG位即可復(fù)位定時(shí)器。

在下一個(gè)例子中,需要同步定時(shí)器1和定時(shí)器2。定時(shí)器1是主模式并從0開(kāi)始,定時(shí)器2是從模式并從0xE7開(kāi)始;2個(gè)定時(shí)器的預(yù)分頻器系數(shù)相同。寫(xiě)'0'到TIM1_CR1的CEN位將禁止定時(shí)器1,定時(shí)器2隨即停止。

?配置定時(shí)器1為主模式,送出輸出比較1參考信號(hào)(OC1REF)做為觸發(fā)輸出(TIM1_CR2寄存器的MMS=100)。

?配置定時(shí)器1的OC1REF波形(TIM1_CCMR1寄存器)。

?配置定時(shí)器2從定時(shí)器1獲得輸入觸發(fā)(TIM2_SMCR寄存器的TS=000)

?配置定時(shí)器2為門(mén)控模式(TIM2_SMCR寄存器的SMS=101)

?置TIM1_EGR寄存器的UG='1',復(fù)位定時(shí)器1。

?置TIM2_EGR寄存器的UG='1',復(fù)位定時(shí)器2。

?寫(xiě)'0xE7'至定時(shí)器2的計(jì)數(shù)器(TIM2_CNTL),初始化它為0xE7。

?置TIM2_CR1寄存器的CEN='1'以使能定時(shí)器2。

?置TIM1_CR1寄存器的CEN='1'以啟動(dòng)定時(shí)器1。

?置TIM1_CR1寄存器的CEN='0'以停止定時(shí)器1。

wKgZPGg2cEWATUx9AABK2qExyEQ511.png

通過(guò)使能定時(shí)器1可以控制定時(shí)器2

使用一個(gè)定時(shí)器去啟動(dòng)另一個(gè)定時(shí)器

在這個(gè)例子中,使用定時(shí)器1的更新事件使能定時(shí)器2。一旦定時(shí)器1產(chǎn)生更新事件,定時(shí)器2即從它當(dāng)前的數(shù)值(可以是非0)按照分頻的內(nèi)部時(shí)鐘開(kāi)始計(jì)數(shù)。在收到觸發(fā)信號(hào)時(shí),定時(shí)器2的CEN位被自動(dòng)地置'1',同時(shí)計(jì)數(shù)器開(kāi)始計(jì)數(shù)直到寫(xiě)'0'到TIM2_CR1寄存器的CEN位。兩個(gè)定時(shí)器的時(shí)鐘頻率都是由預(yù)分頻器對(duì)CK_INT除以3(fCK_CNT=fCK_INT/3)。

?配置定時(shí)器1為主模式,送出它的更新事件(UEV)做為觸發(fā)輸出(TIM1_CR2寄存器的MMS=010)。

?配置定時(shí)器1的周期(TIM1_ARR寄存器)。

?配置定時(shí)器2從定時(shí)器1獲得輸入觸發(fā)(TIM2_SMCR寄存器的TS=000)

?配置定時(shí)器2為觸發(fā)模式(TIM2_SMCR寄存器的SMS=110)

?置TIM1_CR1寄存器的CEN=1以啟動(dòng)定時(shí)器1。

wKgZPGg2cEWAA2cfAAA6ySqkQiw191.png

使用定時(shí)器1的更新觸發(fā)定時(shí)器2

在上一個(gè)例子中,可以在啟動(dòng)計(jì)數(shù)之前初始化兩個(gè)計(jì)數(shù)器。下圖顯示在與0相同配置情況下,使用觸發(fā)模式而不是門(mén)控模式(TIM2_SMCR寄存器的SMS=110)的動(dòng)作。

wKgZO2g2cEWAOA2HAABHkhVitUY368.png

利用定時(shí)器1的使能觸發(fā)定時(shí)器2

使用一個(gè)定時(shí)器作為另一個(gè)的預(yù)分頻器

這個(gè)例子使用定時(shí)器1作為定時(shí)器2的預(yù)分頻器。配置如下:

?配置定時(shí)器1為主模式,送出它的更新事件UEV做為觸發(fā)輸出(TIM1_CR2寄存器的MMS='010')。然后每次計(jì)數(shù)器溢出時(shí)輸出一個(gè)周期信號(hào)。

?配置定時(shí)器1的周期(TIM1_ARR寄存器)。

?配置定時(shí)器2從定時(shí)器1獲得輸入觸發(fā)(TIM2_SMCR寄存器的TS=000)

?配置定時(shí)器2使用外部時(shí)鐘模式(TIM2_SMCR寄存器的SMS=111)

?置TIM1_CR2寄存器的CEN=1以啟動(dòng)定時(shí)器2。

?置TIM1_CR1寄存器的CEN=1以啟動(dòng)定時(shí)器1。

使用一個(gè)外部觸發(fā)同步地啟動(dòng)2個(gè)定時(shí)器

這個(gè)例子中當(dāng)定時(shí)器1的TI1輸入上升時(shí)使能定時(shí)器1,使能定時(shí)器1的同時(shí)使能定時(shí)器2,為保證計(jì)數(shù)器的對(duì)齊,定時(shí)器1必須配置為主/從模式(對(duì)應(yīng)TI1為從,對(duì)應(yīng)定時(shí)器2為主):

?配置定時(shí)器1為主模式,送出它的使能做為觸發(fā)輸出(TIM1_CR2寄存器的MMS='001')。

?配置定時(shí)器1為從模式,從TI1獲得輸入觸發(fā)(TIM1_SMCR寄存器的TS='100')。

?配置定時(shí)器1為觸發(fā)模式(TIM1_SMCR寄存器的SMS='110')。

?配置定時(shí)器1為主/從模式,TIM1_SMCR寄存器的MSM='1'。

?配置定時(shí)器2從定時(shí)器1獲得輸入觸發(fā)(TIM2_SMCR寄存器的TS=000)

?配置定時(shí)器2為觸發(fā)模式(TIM2_SMCR寄存器的SMS='110')。

當(dāng)定時(shí)器1的TI1上出現(xiàn)一個(gè)上升沿時(shí),兩個(gè)定時(shí)器同步地按照內(nèi)部時(shí)鐘開(kāi)始計(jì)數(shù),兩個(gè)TIF標(biāo)志也同時(shí)被設(shè)置。

注:在這個(gè)例子中,在啟動(dòng)之前兩個(gè)定時(shí)器都被初始化(設(shè)置相應(yīng)的UG位),兩個(gè)計(jì)數(shù)器都從0開(kāi)始,但可以通過(guò)寫(xiě)入任意一個(gè)計(jì)數(shù)器寄存器(TIMx_CNT)在定時(shí)器間插入一個(gè)偏移。下圖中能看到主/從模式下在定時(shí)器1的CNT_EN和CK_PSC之間有個(gè)延遲。

wKgZO2g2cEWAG0KMAABHkhVitUY541.png

使用定時(shí)器1的TI1輸入觸發(fā)定時(shí)器1和定時(shí)器2

1.3.16調(diào)試模式

當(dāng)微控制器進(jìn)入調(diào)試模式(Cortex-M3核心停止),根據(jù)DBG模塊中DBG_TIMx_STOP的設(shè)置,TIMx計(jì)數(shù)器或者繼續(xù)正常操作,或者停止。詳見(jiàn)后面的章節(jié):支持定時(shí)器、看門(mén)狗、bxCAN和I2C的調(diào)試。

2 程序設(shè)計(jì)

2.1 TIM_Basic例程

此例程的主要作用是進(jìn)行通用定時(shí)器的測(cè)試。通過(guò)配置定時(shí)器 TIM3,使其在計(jì)數(shù)溢出時(shí)產(chǎn)生更新中斷,在中斷服務(wù)函數(shù)中打印中斷服務(wù)函數(shù)名,以此來(lái)驗(yàn)證定時(shí)器的中斷功能是否正常工作。

系統(tǒng)上電或復(fù)位后,程序開(kāi)始執(zhí)行。首先會(huì)通過(guò)串口輸出系統(tǒng)時(shí)鐘頻率信息和測(cè)試提示信息,之后,定時(shí)器 TIM3 開(kāi)始計(jì)數(shù)。當(dāng)計(jì)數(shù)器的值達(dá)到自動(dòng)重載值 9999 時(shí),會(huì)產(chǎn)生更新中斷,進(jìn)入中斷服務(wù)函數(shù) TIM3_IRQHandler。在中斷服務(wù)函數(shù)中,會(huì)清除中斷標(biāo)志位并通過(guò)串口輸出 TIM3_IRQHandler。

此后,每隔一段時(shí)間(由定時(shí)器的預(yù)分頻器和自動(dòng)重載值決定),定時(shí)器就會(huì)產(chǎn)生一次更新中斷,串口會(huì)周期性地輸出 TIM3_IRQHandler,表明定時(shí)器的中斷功能正常工作。

2.2 TIM_CalibrationLsi例程

此例程的主要作用是通過(guò)定時(shí)器 TIM5 的輸入捕獲功能來(lái)測(cè)量?jī)?nèi)部低速振蕩器(LSI)信號(hào)的周期和頻率。LSI 通常用于實(shí)時(shí)時(shí)鐘(RTC)等對(duì)時(shí)鐘精度要求不高的場(chǎng)合,通過(guò)測(cè)量其周期和頻率,可以對(duì) LSI 的性能進(jìn)行評(píng)估。

1.時(shí)鐘配置

void RCC_ClkConfiguration(void)
{
    RCC_DeInit(); // 復(fù)位RCC時(shí)鐘配置到默認(rèn)狀態(tài)

    // 配置外部高速時(shí)鐘(HSE)
    RCC_HSEConfig(RCC_HSE_ON);                // 使能HSE
    while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); // 等待HSE就緒

    // 配置鎖相環(huán)(PLL):HSE×9=72MHz
    RCC_PLLCmd(DISABLE);                       // 先禁用PLL
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); // 設(shè)置PLL輸入源為HSE,倍頻系數(shù)9
    RCC_PLLCmd(ENABLE);                        // 使能PLL
    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); // 等待PLL就緒

    // 設(shè)置系統(tǒng)時(shí)鐘源為PLL輸出
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // 選擇PLL作為系統(tǒng)時(shí)鐘源

    // 配置總線時(shí)鐘分頻
    RCC_HCLKConfig(RCC_SYSCLK_Div1);           // AHB總線時(shí)鐘 = SYSCLK/1 (72MHz)
    RCC_PCLK1Config(RCC_HCLK_Div2);            // APB1總線時(shí)鐘 = HCLK/2 (36MHz)
    RCC_PCLK2Config(RCC_HCLK_Div1);            // APB2總線時(shí)鐘 = HCLK/1 (72MHz)

    // 使能內(nèi)部低速時(shí)鐘(LSI)和高速時(shí)鐘(HSI)
    RCC_LSICmd(ENABLE);                        // 使能LSI(約40kHz,用于看門(mén)狗等)
    while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET); // 等待LSI就緒
    RCC_HSICmd(ENABLE);                        // 使能HSI(16MHz內(nèi)部RC時(shí)鐘)
    while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); // 等待HSI就緒
}

外部高速時(shí)鐘(HSE):使能 HSE 并等待其就緒,為后續(xù)鎖相環(huán)(PLL)提供穩(wěn)定的輸入時(shí)鐘源。

鎖相環(huán)(PLL):以 HSE 為輸入源,設(shè)置倍頻系數(shù)為 9,使能 PLL 并等待其就緒,得到更高頻率的時(shí)鐘信號(hào)。

系統(tǒng)時(shí)鐘源:將系統(tǒng)時(shí)鐘源設(shè)置為 PLL 輸出,提高系統(tǒng)整體運(yùn)行速度。

總線時(shí)鐘分頻:對(duì) AHB、APB1 和 APB2 總線時(shí)鐘進(jìn)行合理分頻,滿(mǎn)足不同外設(shè)的時(shí)鐘需求。

內(nèi)部低速時(shí)鐘(LSI)和高速時(shí)鐘(HSI):使能 LSI 和 HSI 并等待它們就緒,其中 LSI 用于后續(xù)測(cè)量。

2.初始化操作

延時(shí)函數(shù):調(diào)用 delay_init() 初始化延時(shí)函數(shù),為后續(xù)可能的延時(shí)操作做準(zhǔn)備。

串口通信:調(diào)用 UART_Configuration(115200) 配置串口通信,波特率為 115200,用于輸出系統(tǒng)時(shí)鐘信息、測(cè)試提示以及測(cè)量結(jié)果。

獲取時(shí)鐘頻率:使用 RCC_GetClocksFreq(&clocks) 獲取系統(tǒng)時(shí)鐘頻率信息,為定時(shí)器配置提供參數(shù)。

3. 定時(shí)器配置

時(shí)鐘使能:使能 TIM5 和復(fù)用功能(AFIO)的時(shí)鐘,確保 TIM5 能夠正常工作,并允許對(duì)其引腳進(jìn)行重映射。

引腳重映射:將 TIM5 的通道 4 重映射到 LSI 信號(hào),以便對(duì) LSI 信號(hào)進(jìn)行捕獲。

時(shí)基單元初始化:設(shè)置 TIM5 的自動(dòng)重載值為 0xFFFF,預(yù)分頻器值根據(jù) PCLK1 頻率計(jì)算得出,時(shí)鐘分割為 1,計(jì)數(shù)模式為向上計(jì)數(shù),確定定時(shí)器的計(jì)數(shù)范圍和計(jì)數(shù)速度。

輸入捕獲配置:將 TIM5 的通道 4 配置為輸入捕獲模式,采用上升沿捕獲,直接映定時(shí)器溢出和捕獲到信號(hào)邊沿時(shí)能夠及時(shí)響應(yīng)。

定時(shí)器使能:使能 TIM5,開(kāi)始對(duì) LSI 信號(hào)進(jìn)行計(jì)數(shù)和捕獲。

4.主循環(huán)處理

 int main(void)
{
    // ...(前半部分初始化代碼略)

    TIM_Configuration(); // 初始化TIM5    

    while (1)
    {
        if (TIM5_CAPTURE_STA & 0X80) // 檢測(cè)捕獲完成標(biāo)志(最高位為1)
        {
            // 計(jì)算總時(shí)間(考慮定時(shí)器溢出次數(shù))
            temp = (TIM5_CAPTURE_STA & 0X3F) * 65536 + TIM5_CAPTURE_VAL; // 溢出次數(shù)×65536 + 捕獲值
            printf("LSI The period is:%d usrn", temp); // 輸出周期(微秒)
            printf("LSI The frequency is:%f Hzrn", (float)(1000000 / temp)); // 計(jì)算頻率并輸出
            TIM5_CAPTURE_STA = 0; // 清零標(biāo)志,準(zhǔn)備下一次捕獲
        }
    }
}

使用TI4,不分頻且不進(jìn)行濾波,以準(zhǔn)確捕獲 LSI 信號(hào)的上升沿和下降沿。

中斷配置:配置 TIM5 的中斷優(yōu)先級(jí),使能更新中斷和通道 4 捕獲中斷,確保在

在主循環(huán)中,持續(xù)檢查 TIM5_CAPTURE_STA 的最高位。若該位為 1,表示成功捕獲到一個(gè)完整的 LSI 信號(hào)周期。此時(shí),計(jì)算該周期的總時(shí)間(考慮定時(shí)器溢出情況),并通過(guò)串口輸出 LSI 的周期和頻率。最后,將 TIM5_CAPTURE_STA 清零,準(zhǔn)備下一次捕獲。

5. 中斷服務(wù)函數(shù)處理

當(dāng) TIM5 產(chǎn)生更新中斷或通道 4 捕獲中斷時(shí),進(jìn)入中斷服務(wù)函數(shù):

若還未成功捕獲到一個(gè)完整的周期:

對(duì)于更新中斷,若已捕獲到上升沿,則記錄定時(shí)器溢出次數(shù)。

對(duì)于通道 4 捕獲中斷:

若已捕獲到上升沿,此時(shí)捕獲到下降沿,標(biāo)記成功捕獲到一個(gè)完整的高脈沖寬度,并記錄捕獲值。

若還未開(kāi)始捕獲,此時(shí)捕獲到上升沿,清零相關(guān)變量,設(shè)置計(jì)數(shù)器為 0,并標(biāo)記捕獲到上升沿。

最后,清除更新中斷和通道 4 捕獲中斷標(biāo)志位,為下一次中斷做好準(zhǔn)備。

3 下載驗(yàn)證

3.1 TIM_Basic例程

燒錄完成后,硬件啟動(dòng),串口輸出系統(tǒng)時(shí)鐘頻率信息及“TIM Basic Test.”提示,定時(shí)器TIM3配置為向上計(jì)數(shù)模式,計(jì)數(shù)周期達(dá)9999時(shí)觸發(fā)更新中斷,在中斷服務(wù)函數(shù)中檢查并清除中斷標(biāo)志,通過(guò)串口輸出函數(shù)名`TIM3_IRQHandler,之后主函數(shù)進(jìn)入無(wú)限循環(huán)持續(xù)等待并響應(yīng)定時(shí)器中斷。

wKgZPGg2cEaAJP9pAAJNx__ns5M853.png

3.2 TIM_CalibrationLsi例程

代碼燒錄后,系統(tǒng)先對(duì)時(shí)鐘進(jìn)行配置,啟動(dòng)串口并輸出系統(tǒng)時(shí)鐘頻率信息及“TIM5 Calibration LSI Test.”提示,接著配置TIM5定時(shí)器用于測(cè)量低速內(nèi)部時(shí)鐘(LSI),當(dāng)TIM5捕獲到LSI信號(hào)的上升沿和下降沿后,主循環(huán)會(huì)計(jì)算并通過(guò)串口輸出LSI的周期和頻率,期間持續(xù)等待新的捕獲事件。

wKgZO2g2cEaAepLJAAR0l-CW2bQ481.png

WIZnet 是一家無(wú)晶圓廠半導(dǎo)體公司,成立于 1998 年。產(chǎn)品包括互聯(lián)網(wǎng)處理器 iMCU?,它采用 TOE(TCP/IP 卸載引擎)技術(shù),基于獨(dú)特的專(zhuān)利全硬連線 TCP/IP。iMCU? 面向各種應(yīng)用中的嵌入式互聯(lián)網(wǎng)設(shè)備。

WIZnet 在全球擁有 70 多家分銷(xiāo)商,在香港、韓國(guó)、美國(guó)設(shè)有辦事處,提供技術(shù)支持和產(chǎn)品營(yíng)銷(xiāo)。

香港辦事處管理的區(qū)域包括:澳大利亞、印度、土耳其、亞洲(韓國(guó)和日本除外)。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6076

    文章

    45494

    瀏覽量

    670260
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2945

    文章

    47818

    瀏覽量

    414814
  • 通用定時(shí)器
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

    3654
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    第二十一章 TIM——通用定時(shí)器

    本篇文章介紹了W55MH32通用定時(shí)器(TIM2~TIM5等),其由16位自動(dòng)裝載計(jì)數(shù)和可編程預(yù)分頻構(gòu)成,具備輸入捕獲、輸出比較、PW
    的頭像 發(fā)表于 06-20 13:57 ?1605次閱讀
    第二<b class='flag-5'>十一章</b> TIM——<b class='flag-5'>通用</b><b class='flag-5'>定時(shí)器</b>

    WIZnet發(fā)布最新單片以太網(wǎng)控制芯片W7100

    WIZnet發(fā)布最新單片以太網(wǎng)控制芯片W7100 WIZnet HK Ltd 宣布推出嶄新的芯片W
    發(fā)表于 01-27 08:36 ?1517次閱讀

    第十一屆藍(lán)橋杯單片機(jī)模擬題--智能門(mén)鎖

    第十一屆藍(lán)橋杯單片機(jī)模擬題--智能門(mén)鎖
    發(fā)表于 11-30 10:21 ?20次下載
    <b class='flag-5'>第十一</b>屆藍(lán)橋杯<b class='flag-5'>單片機(jī)</b>模擬題--智能門(mén)鎖

    WIZnet高性能以太網(wǎng)單片機(jī)W55MH32重磅發(fā)布!

    WIZnet高性能以太網(wǎng)單片機(jī)W55MH32重磅發(fā)布!本文詳細(xì)解析了W55MH32芯片的高性能網(wǎng)絡(luò)處理能力與硬件資源,以及兩款
    的頭像 發(fā)表于 05-07 16:17 ?1582次閱讀
    <b class='flag-5'>WIZnet</b>高性能<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>W55MH32</b>重磅發(fā)布!

    即刻啟程,踏上W55MH32高性能以太網(wǎng)單片機(jī)學(xué)習(xí)之路!

    即刻啟程,踏上W55MH32高性能以太網(wǎng)單片機(jī)學(xué)習(xí)之路!即刻開(kāi)啟W55MH32學(xué)習(xí)之旅!本教系列程配套官方手冊(cè)與W55MH32L
    的頭像 發(fā)表于 05-07 18:51 ?1226次閱讀
    即刻啟程,踏上<b class='flag-5'>W55MH32</b>高性能<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>單片機(jī)</b>學(xué)習(xí)之路!

    第十二章 SysTick——系統(tǒng)定時(shí)器

    本章介紹了W55MH32的SysTick系統(tǒng)定時(shí)器,它是24位遞減計(jì)數(shù),含4個(gè)寄存,可配置定時(shí)、中斷,用于產(chǎn)生時(shí)基 等。
    的頭像 發(fā)表于 05-22 17:16 ?1075次閱讀
    <b class='flag-5'>第十</b>二章 SysTick——系統(tǒng)<b class='flag-5'>定時(shí)器</b>

    一章 W55MH32 高性能以太網(wǎng)單片機(jī)的學(xué)習(xí)方法概述

    本章介紹W55MH32的學(xué)習(xí)方法,建議先了解硬件資源,按基礎(chǔ)篇、入門(mén)篇循序漸進(jìn)學(xué)習(xí)。參考兩份手冊(cè),提供例程資料,還給出官網(wǎng)、github 等學(xué)習(xí)資料查找渠道。讓我們一起踏上W55MH32高性能
    的頭像 發(fā)表于 05-26 09:07 ?880次閱讀
    第<b class='flag-5'>一章</b> <b class='flag-5'>W55MH32</b> 高性能<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>單片機(jī)</b>的學(xué)習(xí)方法概述

    第二章 開(kāi)發(fā)板與芯片介紹 詳解W55MH32芯片及開(kāi)發(fā)

    本章介紹了W55MH32芯片及開(kāi)發(fā)板。該芯片采用Cortex-M3內(nèi)核,主頻216MHz,集成以太網(wǎng)功能,有L和Q兩種型號(hào)。配套開(kāi)發(fā)板L-EVB功能豐富、Q-EVB為最小系統(tǒng)板,均含仿
    的頭像 發(fā)表于 05-26 09:19 ?1431次閱讀
    第二章 <b class='flag-5'>開(kāi)發(fā)</b>板與芯片介紹  詳解<b class='flag-5'>W55MH32</b>芯片及<b class='flag-5'>開(kāi)發(fā)</b>板

    WIZnet W55MH32以太網(wǎng)單片機(jī)開(kāi)發(fā)教程第十一章 通用定時(shí)器(下篇)

    本章為W55MH32通用定時(shí)器的下篇,介紹了TIM_InputCapture 等 4 個(gè)程序設(shè)計(jì)例程,涉及輸入捕獲、PWM 輸出、中斷測(cè)試、觸摸檢測(cè)等功能和例程下載驗(yàn)證情況,如串口輸出、波形檢測(cè)等。
    的頭像 發(fā)表于 05-28 10:48 ?1200次閱讀
    <b class='flag-5'>WIZnet</b> <b class='flag-5'>W55MH32</b><b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>開(kāi)發(fā)</b>教程<b class='flag-5'>第十一章</b> <b class='flag-5'>通用</b><b class='flag-5'>定時(shí)器</b>(下篇)

    W55MH32高性能以太網(wǎng)單片機(jī)開(kāi)發(fā)課件 第十四章 ADC(上篇)

    本章介紹了W55MH32的12位ADC(上篇),其有18通道,支持單次、連續(xù)等轉(zhuǎn)換模式,具有自校準(zhǔn)、模擬看門(mén)狗等功能。還含ADC_AnalogWatchdog 例程,可監(jiān)測(cè)電壓超閾值并觸發(fā)中斷。
    的頭像 發(fā)表于 05-28 13:52 ?847次閱讀
    <b class='flag-5'>W55MH32</b>高性能<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>開(kāi)發(fā)</b>課件 <b class='flag-5'>第十</b>四章 ADC(<b class='flag-5'>上篇</b>)

    第二章 W55MH32 DHCP示例

    本文介紹 DHCP?協(xié)議,包括其在 IP?網(wǎng)絡(luò)自動(dòng)分配參數(shù)的功能、便捷配置等特點(diǎn)、工作原理、報(bào)文格式和應(yīng)用場(chǎng)景。通過(guò) W55MH32?實(shí)戰(zhàn)例程展示動(dòng)態(tài)獲取網(wǎng)絡(luò)地址信息過(guò)程,含注冊(cè)定時(shí)器中斷、啟用模式和獲取信息等步驟,燒錄后可完成檢測(cè)與信息打印,PC?端能 PING?通設(shè)備
    的頭像 發(fā)表于 07-24 09:02 ?832次閱讀
    第二章 <b class='flag-5'>W55MH32</b> DHCP示例

    第十一章 W55MH32 SMTP示例

    本文講解了如何在 W55MH32?芯片上實(shí)現(xiàn) SMTP?協(xié)議,通過(guò)實(shí)例詳細(xì)展示了在該芯片上使用 SMTP?協(xié)議發(fā)送電子郵件的實(shí)現(xiàn)流程,包括 SMTP?發(fā)送內(nèi)容初始化、使用 DNS?協(xié)議解析 SMTP
    的頭像 發(fā)表于 07-24 09:49 ?1377次閱讀
    <b class='flag-5'>第十一章</b> <b class='flag-5'>W55MH32</b> SMTP示例

    第十五章 W55MH32 SNMP示例

    本文講解了如何在 W55MH32?芯片上實(shí)現(xiàn) SNMP?功能,通過(guò)實(shí)戰(zhàn)例程展示了使用 MIB Browser?管理 W55MH32?的具體過(guò)程,涵蓋在 MIB Browser?中創(chuàng)建分支、添加葉子
    的頭像 發(fā)表于 07-24 10:43 ?1044次閱讀
    <b class='flag-5'>第十</b>五章 <b class='flag-5'>W55MH32</b> SNMP示例

    第二十六章 W55MH32?上位機(jī)搜索和配置示例

    本文講解了如何在 W55MH32?芯片上實(shí)現(xiàn)上位機(jī)搜索和配置功能,通過(guò)實(shí)戰(zhàn)例程展示了使用開(kāi)源上位機(jī)配置工具 SmartConfigTool?搜索局域網(wǎng)中的
    的頭像 發(fā)表于 07-24 16:13 ?897次閱讀
    第二十六章 <b class='flag-5'>W55MH32</b>?上位<b class='flag-5'>機(jī)</b>搜索和配置示例

    一文讀懂:W55MH32 如何攜手微信小程序與 OneNET,實(shí)現(xiàn)以太網(wǎng)燈條調(diào)色自由(軟硬件開(kāi)源)

    本文采用W55MH32開(kāi)發(fā)板搭配WS2812B燈條,借助MQTT協(xié)議連接OneNET云平臺(tái),并配合微信小程序,實(shí)現(xiàn)了以太網(wǎng)燈條的遠(yuǎn)程調(diào)色以及動(dòng)態(tài)模式(如流水燈、彩虹燈)控制。感謝大家閱讀,
    的頭像 發(fā)表于 08-08 11:16 ?1546次閱讀
    一文讀懂:<b class='flag-5'>W55MH32</b> 如何攜手微信小程序與 OneNET,實(shí)現(xiàn)<b class='flag-5'>以太網(wǎng)</b>燈條調(diào)色自由(軟硬件開(kāi)源)