欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:Stm32的定時(shí)器

柚子快報(bào)邀請(qǐng)碼778899分享:Stm32的定時(shí)器

http://yzkb.51969.com/

?定時(shí)器分類(lèi):

? ? ? ? ①高級(jí)定時(shí)器(功能最全)(Stm32的TIM1、TIM8)(掛載在A(yíng)PB2總線(xiàn)上)

? ? ? ? ? ? ? ? :通用定時(shí)器+重復(fù)計(jì)數(shù)器、死區(qū)生成、互補(bǔ)輸出、剎車(chē)輸入

? ? ? ? ②通用定時(shí)器(最常用)(Stm32的TIM2、TIM3、TIM4、TIM5)(掛載在A(yíng)PB1總線(xiàn)上)

? ? ? ? ? ? ? ? :基本定時(shí)器+內(nèi)外時(shí)鐘源選擇、輸入捕獲、輸出比較、編碼器接口、主從觸發(fā)模式

? ? ? ? ③基本定時(shí)器(Stm32的TIM6、TIM7)(掛載在A(yíng)PB1總線(xiàn)上)

? ? ? ? ? ? ? ? :只有定時(shí)中斷、DAC功能。也就是最基本的傳感器所用的定時(shí)器就是這種

StmF103C8T6的定時(shí)器資源:TIM1、TIM2、TIM3、TIM4(1高3通)

Stm定時(shí)器的功能:

? ? ? ? ①定時(shí)中斷(+內(nèi)外部時(shí)鐘源選擇)

? ? ? ? ②輸出比較(PWM—>電機(jī))

? ? ? ? ③輸入捕獲(測(cè)輸入的PWM的頻率、占空比)

? ? ? ? ④編碼器接口(?)

? ? ? ? ⑤主從觸發(fā)模式

Stm32定時(shí)器的時(shí)基單元:

? ? ? ? ①16位的CNT計(jì)數(shù)器(CRR,產(chǎn)生一次中斷所需要的計(jì)數(shù)值)

? ? ? ? ②16的PSC預(yù)分頻器(系統(tǒng)時(shí)鐘/預(yù)分頻 = 時(shí)鐘頻率)

? ? ? ? ②16位的自動(dòng)重裝計(jì)數(shù)器(每次循環(huán)的計(jì)數(shù)值)

???????????????????????????????????????????????????????????????????????????(主頻)? ?/? ?(預(yù)分頻)? / (計(jì)數(shù)器)

2^16 = 65536 ,所以最小中斷頻率Small-Hz是72 000 000 / 65535?/ 65535

所以最大中斷時(shí)間是 T = 1 / Hz = 1 /72 000 000 / 65535 / 65535?=?59.650503125 ≈59.65s

級(jí)聯(lián):

????????Stm32的定時(shí)器可以級(jí)聯(lián),也就是A定時(shí)器的輸出作為B定時(shí)器的輸入。

時(shí)鐘信息流向(自己編的名字):

RCC(復(fù)位時(shí)鐘控制器)—(觸發(fā)控制器)—>PSC預(yù)分頻器——>CNT計(jì)數(shù)(當(dāng)CNT==自動(dòng)重裝計(jì)數(shù)器,會(huì)產(chǎn)生中斷信號(hào),自動(dòng)重裝計(jì)數(shù)器會(huì)重置CNT)

CNT計(jì)數(shù)器:

? ? ? ? 向上計(jì)數(shù),等于A(yíng)RR時(shí)產(chǎn)生中斷

? ? ? ? 向下計(jì)數(shù),等于0是產(chǎn)生中斷

? ? ? ? 中央對(duì)齊計(jì)數(shù),等于A(yíng)RR或0時(shí)產(chǎn)生中斷

中斷:

????????先經(jīng)過(guò)中斷控制(是否開(kāi)啟/允許中斷),再去向NVIC(中斷通路、優(yōu)先級(jí))

? ? ? ? ①更新中斷:會(huì)通向NVIC,在NVIC配置了優(yōu)先級(jí)與中斷通路之后,CPU才能響應(yīng)中斷。

? ? ? ? ②更新事件:

????????????????可以觸發(fā)其他電路的工作,映射到RTGO上,TRGO可以直接連接到某個(gè)引腳進(jìn)行控制。硬件自動(dòng)化。

????????????????TRGO也可以連接其他定時(shí)器,定時(shí)器被其他定時(shí)器輸入的引腳是ITRx引腳,不同定時(shí)器的x值不同(下圖),且不是數(shù)值剛好對(duì)應(yīng)(定時(shí)器1對(duì)應(yīng)ITR1)的情況。稱(chēng)為定時(shí)器級(jí)聯(lián)。

定時(shí)器的部分說(shuō)明:

? ? ? ? ①基本定時(shí)器只能選擇內(nèi)部時(shí)鐘

? ? ? ? ②通用和高級(jí)定時(shí)器可以選擇外部時(shí)鐘ERT(),也就是可以讓一個(gè)ETR引腳接收方波信號(hào)來(lái)模擬時(shí)鐘的高低電平,但是這需要配置內(nèi)部硬件的<極性選擇><邊沿檢測(cè)><預(yù)分頻><輸入濾波電路>

? ? ? ? ③輸入的時(shí)鐘

? ? ? ? ? ? ? ? ①走ETRF進(jìn)入觸發(fā)控制器,由此可以配置其作為時(shí)基單元的時(shí)鐘源。在STM32中被稱(chēng)為“外部時(shí)鐘模式2”,一個(gè)實(shí)例就是用TIM來(lái)計(jì)數(shù)外部時(shí)鐘的次數(shù)(按鍵當(dāng)時(shí)鐘信號(hào))

? ? ? ? ? ? ? ? ②走TRGI走觸發(fā)控制器,作為觸發(fā)輸入(占用了這個(gè)通道),與定時(shí)器的從模式有關(guān)。當(dāng)這一路的輸入被作為時(shí)鐘信號(hào)時(shí),稱(chēng)為“外部時(shí)鐘模式1”(定時(shí)器級(jí)聯(lián))。

? ? ? ? ? ? ? ? ③兩者輸入都可以作為外部時(shí)鐘,區(qū)別是有沒(méi)有占用觸發(fā)輸入的通道

外部時(shí)鐘的英文簡(jiǎn)稱(chēng)是HSE(High Speed External Clock),內(nèi)部時(shí)鐘的英文簡(jiǎn)稱(chēng)是HSI(High Speed Internal Clock)。

????????TI1F_ED連接的是輸入捕獲引腳CH1,ED是邊沿的意思,此路意為輸入的上下邊沿均有效 。編碼器接口左側(cè)的TI1FP1和TI2FP2是連載CH1、CH2的濾波器之后的。

????????CH引腳用于輸入捕獲和測(cè)頻率,ITRx用于定時(shí)器的級(jí)聯(lián),編碼器接口用于讀取正交編碼器的波形

????????內(nèi)部時(shí)鐘優(yōu)先72Mhz,外部時(shí)鐘優(yōu)先走ETR通路(外部時(shí)鐘模式2,方便)

????????TRGO是定時(shí)器的主模式輸出

????????捕獲/比較的通道用于輸出PWM驅(qū)動(dòng)電機(jī)(舵機(jī)、直流電機(jī))

高級(jí)計(jì)數(shù)器的部分額外功能

重復(fù)次數(shù)計(jì)數(shù)器:設(shè)定一個(gè)值x,每經(jīng)過(guò)x個(gè)計(jì)數(shù)周期才產(chǎn)生一次中斷。類(lèi)似于再分頻。

DTG:死區(qū)生成電路,防止互補(bǔ)輸出由于硬件限制,驅(qū)動(dòng)三項(xiàng)無(wú)刷電機(jī)驅(qū)動(dòng)橋臂時(shí)造成短暫的直通現(xiàn)象,會(huì)在開(kāi)關(guān)切換的瞬間生成一定時(shí)常的死區(qū),關(guān)閉輸出,防止直通

最右側(cè)的輸出的3個(gè)引腳由一個(gè)(TIMx_CHx)變成了兩個(gè)(TIMx_CHx、TIMx_CHxN),可以輸出互補(bǔ)的(極性相反)的PWM波,用于三相無(wú)刷電機(jī),因?yàn)闊o(wú)刷電機(jī)一般需要3路控制,所以圖中第4路沒(méi)有多一條輸出。

BRK:剎車(chē)輸入。保證電機(jī)運(yùn)行安全,外部產(chǎn)生BRK信號(hào)的時(shí)候或內(nèi)部時(shí)鐘失效,就會(huì)切斷輸出,防止意外發(fā)生

緩沖計(jì)數(shù)器

(影子寄存器、硬件說(shuō)明圖的底框加黑就說(shuō)明該硬件有影子寄存器):

????????在某個(gè)計(jì)數(shù)周期未完成的時(shí)候,如果寫(xiě)入新的預(yù)分頻值,則緩沖計(jì)數(shù)器會(huì)先記錄寫(xiě)入的值,在當(dāng)前的計(jì)數(shù)周期完成之后,再把數(shù)值寫(xiě)入預(yù)分頻值,避免中途寫(xiě)入導(dǎo)致前后計(jì)數(shù)頻率不一致誤差問(wèn)題。兩個(gè)沒(méi)緩沖計(jì)數(shù)器的情況:

? ? ? ? 情況1:原ARR==36,CNT<36,寫(xiě)入55,則導(dǎo)致當(dāng)前計(jì)數(shù)周期加長(zhǎng);

? ? ? ? 情況2:原ARR==40,CNT<40但>35,寫(xiě)入35,寫(xiě)導(dǎo)致當(dāng)前計(jì)數(shù)會(huì)從CNT—>FF—>35,而不是直接因?yàn)镃NT>35而進(jìn)入下一個(gè)計(jì)數(shù)周期

????????預(yù)分頻器的工作原理:通過(guò)一個(gè)計(jì)數(shù)器在計(jì)數(shù)預(yù)定分頻值之后輸出一個(gè)信號(hào)。比如2分頻,那么就是0 1 2 0 1 2 ,并且在2—>0過(guò)程中輸出一次信號(hào)給CNT,從而CNT得到的值就是分頻過(guò)后的

時(shí)鐘樹(shù)的部分功能說(shuō)明:

左側(cè)是時(shí)鐘來(lái)源(什么頻率的時(shí)鐘作為輸入源),右側(cè)是時(shí)鐘分配(誰(shuí)需要用什么頻率的時(shí)鐘)。

硬件執(zhí)行前都需要先初始化配置時(shí)鐘,但是Stm32已經(jīng)完成了這一步操作。

系統(tǒng)時(shí)鐘:72MHz?

有四個(gè)時(shí)鐘震蕩源:

????????8MHz的內(nèi)部高速RC振蕩器

? ? ? ? 4~16MHz的外部高速石英振蕩器(晶振,比內(nèi)部RC穩(wěn)定)

? ? ? ? 32.768KHz的低速晶振(給RTC(實(shí)時(shí)時(shí)鐘)提供時(shí)鐘)

? ? ? ? 40KHz內(nèi)部低速RC振蕩器(給看門(mén)狗提供時(shí)鐘)

兩個(gè)高速晶振用于給系統(tǒng)提供時(shí)鐘(AHP,APB1,APB2)

Stm32的時(shí)鐘配置流程(SystemInit()函數(shù)的配置)

? ? ? ? 先以?xún)?nèi)部高速8Mhz時(shí)鐘(RC)啟動(dòng),然后啟動(dòng)外部時(shí)鐘,將外部8Mhz時(shí)鐘(晶振)進(jìn)行PLL鎖相環(huán)9倍頻得到72Mhz的時(shí)鐘,等到鎖相環(huán)輸出穩(wěn)定后,在將鎖相環(huán)輸出的時(shí)鐘作為系統(tǒng)時(shí)鐘。從而把系統(tǒng)時(shí)鐘改8Mhz——>72MHz。

? ? ? ? 但一旦外部時(shí)鐘出了問(wèn)題,系統(tǒng)就會(huì)選擇內(nèi)部8MHz的時(shí)鐘作為系統(tǒng)時(shí)鐘,72/8=9≈10,這時(shí)候程序運(yùn)行的速度降低。舉例:原先一秒的中斷會(huì)變成9秒的中斷

外部時(shí)鐘的運(yùn)行狀態(tài)由CSS檢測(cè),一旦出錯(cuò)就會(huì)更換系統(tǒng)時(shí)鐘源。(高級(jí)定時(shí)器的剎車(chē)輸入也有CSS)

外設(shè)時(shí)鐘使能就是XXX_cmd(XXX,ENABlE)

輸出比較+PWM:

1.大概介紹

????????CCR里的是自行設(shè)定的一個(gè)值。? ? ? ??

????????比較CNT和CCR(capture/compare registe捕獲/比較寄存器里的值)的值,來(lái)設(shè)置是輸出高/低,或是翻轉(zhuǎn)。捕獲比較寄存器是兩個(gè)功能一起的,看配置要求來(lái)啟動(dòng)其中的一個(gè)功能。

? ? ? ? PWM在慣性系物件上使用。通過(guò)調(diào)節(jié)輸出的高低電平在一段時(shí)間內(nèi)的占比范圍(占空比==高T/周期T),來(lái)控制慣性系物件的狀態(tài)。用于LED呼吸燈、直流電機(jī)調(diào)速。

? ? ? ? 工作原實(shí)現(xiàn):配置CNT和CCR的值,通過(guò)比較兩值大小關(guān)系來(lái)輸出高低電平;

模式1:

? ? ? ? ? ?向上:CNT

? ? ? ? ? ? 向下:CNT>CCR(無(wú)效),CNT≤CCR(有效)

模式2:

????????????向上:CNT

? ? ? ? ? ? 向下:CNT>CCR(有效),CNT≤CCR(無(wú)效)

PWM頻率:計(jì)數(shù)器頻率, 即? ?時(shí)鐘源頻率 / 預(yù)分頻+1 / ARR+1

PWM占空比:CCR/(ARR + 1)

PWM分辨率:1/(ARR + 1) (占空比最小變化單位,如1%,0.1%)

注意:不同定時(shí)器對(duì)應(yīng)的輸出引腳不同

2.函數(shù)配置:

外設(shè)使能——>GPIO初始化——>時(shí)基單元初始化——>輸出比較配置——>cmd

void PWM_Init(void) { ?? ?/*開(kāi)啟時(shí)鐘*/ ?? ?RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);?? ??? ??? ?//開(kāi)啟TIM2的時(shí)鐘 ?? ?RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);?? ??? ??? ?//開(kāi)啟GPIOA的時(shí)鐘 ?? ? ?? ?/*GPIO初始化*/ ?? ?GPIO_InitTypeDef GPIO_InitStructure; ?? ?GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//受外設(shè)控制(定時(shí)器、ADC)的都要用復(fù)用模式 ?? ?GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; ?? ?GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; ?? ?GPIO_Init(GPIOA, &GPIO_InitStructure);?? ? ?? ? ?? ?/*配置時(shí)鐘源*/ ?? ?TIM_InternalClockConfig(TIM2);?? ??? ?//TIM2的時(shí)鐘源選擇為為內(nèi)部時(shí)鐘(可不寫(xiě)) ?? ? ?? ?/*時(shí)基單元初始化*/ ?? ?TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;?? ??? ??? ??? ?//定義結(jié)構(gòu)體變量 ?? ?TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; ? ? //時(shí)鐘分頻,選擇不分頻 ?? ?TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //計(jì)數(shù)器模式,選擇向上計(jì)數(shù) ?? ?TIM_TimeBaseInitStructure.TIM_Period = 100 - 1;?? ??? ??? ??? ??? ?//計(jì)數(shù)周期,即ARR的值 ?? ?TIM_TimeBaseInitStructure.TIM_Prescaler = 720 - 1;?? ??? ??? ??? ?//預(yù)分頻器,即PSC的值 ?? ?TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; ? ? ? ? ? ?//重復(fù)計(jì)數(shù)器,高級(jí)定時(shí)器才會(huì)用到 ?? ?TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure); ? ? ? ? ? ? //將結(jié)構(gòu)體變量交給TIM_TimeBaseInit,配置TIM2的時(shí)基單元 ?? ? ?? ?/*輸出比較初始化*/ ?? ?TIM_OCInitTypeDef TIM_OCInitStructure;?? ??? ??? ??? ??? ??? ??? ?//定義結(jié)構(gòu)體變量 ?? ?TIM_OCStructInit(&TIM_OCInitStructure);?? ??? ??? ??? ??? ??? ??? ?//結(jié)構(gòu)體初始化,防止后續(xù)沒(méi)賦值的成員亂值 ?? ?TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;?? ??? ??? ??? ?//輸出比較模式,選擇PWM模式1 ?? ?TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;?? ??? ?//輸出極性,選擇為高,若選擇極性為低,則輸出高低電平取反 ?? ?TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;?? ?//輸出使能 ?? ?TIM_OCInitStructure.TIM_Pulse = 0;?? ??? ??? ??? ??? ??? ??? ??? ?//初始的CCR值 ?? ?TIM_OC1Init(TIM2, &TIM_OCInitStructure);?? ??? ??? ??? ??? ??? ?//將結(jié)構(gòu)體變量交給TIM_OC1Init,配置TIM2的輸出比較通道1 ?? ? ?? ?/*TIM使能*/ ?? ?TIM_Cmd(TIM2, ENABLE);?? ??? ??? ?//使能TIM2,定時(shí)器開(kāi)始運(yùn)行 }

TIM_SetCompare3(TIM2,Compare);//用于修改第3輸出比較通道的CCR的值,總共有1、2、3個(gè)輸出比較CCR寄存器

輸入捕獲和輸出比較的輸入輸出引腳都是公用的,且一次只能啟動(dòng)一中種功能

輸入捕獲IC(Intput Capture):

1.輸入捕獲的方式有:上升沿觸發(fā)、下降沿觸發(fā)、邊沿觸發(fā)。

????????以及專(zhuān)門(mén)測(cè)量PWM的PWMI模式,可以同時(shí)測(cè)量頻率和占空比。

適合主從模式實(shí)現(xiàn)硬件的自動(dòng)測(cè)量PWM

2.以上升沿觸發(fā)為例解釋兩種測(cè)量方法:

? ? ? ? (1)測(cè)頻法(適合測(cè)量高頻。由于是一段固定時(shí)間內(nèi)的值,所以結(jié)果是均值,出結(jié)果速度慢):給定一個(gè)時(shí)間T(常1s),在時(shí)間T內(nèi)測(cè)量有N次上升沿,然后頻率f = N / T?

? ? ? ? (2)測(cè)周法(適合測(cè)量低頻。只測(cè)量一個(gè)周期,所以出結(jié)果得速度取決于輸入頻率,波動(dòng)較大):在兩個(gè)上升沿內(nèi),用標(biāo)準(zhǔn)頻率計(jì)N次來(lái)計(jì)算一個(gè)周期的時(shí)間T,然后f = 1 / T。

????????????????兩種理解

????????????????①先后兩次測(cè)量CNT的值得X1,X2;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 若X1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 若X1>X2,則T = ARR -?X1 +?X2

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 然后得f = 1 / T(這里的時(shí)間的頻率f取決于系統(tǒng)主頻f'。)

????????????????②在第一次上升沿時(shí)value1 = 0并開(kāi)始計(jì)數(shù),第二次上升沿時(shí)value2 = x,記一個(gè)數(shù)得時(shí)間t = 1 / f',?則期間的總計(jì)時(shí)間是(value2 -value1)*t,記N = value2 - value1

則兩次上升沿的頻率是 f = 1 /? (N * t)?= f'?/ N。

(假設(shè)72Mhz的時(shí)鐘源,那么每次計(jì)數(shù)的時(shí)間是T=1 / 72,000,000?秒,計(jì)數(shù)N次就是 Tn = N / 72000000秒),再由f = 1 / T,T? = Tn,得到頻率f = f’ / N。)

? ? ? ? 3.以上兩種測(cè)量方法都存在正負(fù)1的誤差,即①測(cè)量過(guò)的上升沿次數(shù)不一定是完整的一個(gè)周期,而可能是半個(gè)周期,所以會(huì)需要取舍;②測(cè)量到第2個(gè)上升沿的時(shí)候,可能標(biāo)準(zhǔn)計(jì)數(shù)次數(shù)也不是完整的一個(gè)頻率,而是0.xx,這時(shí)候也需要取舍。所以?xún)煞N測(cè)量方法都有誤差,但是要選擇更合適的方法以減少誤差。

? ? ? ? 4.由此,當(dāng)(1)和(2)的N相同時(shí),也就是誤差相同,此時(shí)的輸入頻率f =?√(f'?/ T)。式子來(lái)源:

將(1) (2)得N提出來(lái),N = f * T = f' / f,則f*f = f' /?T,f =?√(f'?/ T)。

當(dāng)待測(cè)頻率fxf時(shí),測(cè)頻法合適

3.XOR:

輸入引腳處的三輸入異或門(mén)是為三項(xiàng)無(wú)刷電機(jī)服務(wù)的,當(dāng)三個(gè)輸入引腳有任一引腳電平翻轉(zhuǎn)時(shí),異或門(mén)輸出的電平翻轉(zhuǎn),通過(guò)數(shù)據(jù)選擇器TI1。如果數(shù)據(jù)選擇器選擇了上面的模式,那么輸出的就是三個(gè)輸入引腳(TIMx_CH1、CH2、CH3)的異或值,要是選擇了下面的模式,那就是輸出TIMx_CH1得值,三個(gè)引腳各輸出各的。

三項(xiàng)無(wú)刷電機(jī)有3個(gè)霍爾傳感器來(lái)檢測(cè)轉(zhuǎn)子的位置,可以根據(jù)轉(zhuǎn)子的位置進(jìn)行換相,前三個(gè)輸入通道可以接入無(wú)刷電機(jī)的霍爾傳感器,從而讓定時(shí)器 作為無(wú)刷電機(jī)的接口定時(shí)器去驅(qū)動(dòng)換相電路工作

輸入濾波器可以對(duì)輸入的信號(hào)進(jìn)行濾波,減少毛刺信號(hào);

邊沿檢測(cè)器可以配置是上升沿檢測(cè)、下降沿檢測(cè)、邊沿檢測(cè)

有兩套濾波+極性選擇;

第一套輸入得到TIF1FP1然后輸入給通道1

第二套經(jīng)過(guò)另一套濾波+極性選擇,得到TIF1FP2,輸入給通道2

同理,TI1、2、3、4的輸入都可以經(jīng)過(guò)兩套濾波+極性選擇,可以得到兩個(gè)輸出結(jié)果進(jìn)入兩個(gè)通道。(1和2交叉、3和4交叉)

這可以實(shí)現(xiàn)交叉輸入,靈活切換后續(xù)捕獲電路的輸入

也可以把一個(gè)引腳的捕獲輸入給兩個(gè)通道,用于PWMI:第一個(gè)捕獲通道配置上升沿觸發(fā),捕獲周期,第二個(gè)通道配置下降沿觸發(fā),捕獲占空比。兩個(gè)通道對(duì)一個(gè)引腳進(jìn)行捕獲,就可以獲得周期、占空比

4.輸入捕獲單元的內(nèi)部原理圖解釋

TI1是外部輸入信號(hào),F(xiàn)dts是測(cè)周法的參考頻率

而ICF[3:0]指的是TIMx_CCMR1寄存器里的ICF位,可以控制濾波器的參數(shù)。不同x對(duì)應(yīng)的ICF的稱(chēng)號(hào)不同,如TIM1_CCMR1的ICF的名字是IC1F。

如圖說(shuō)明IC1F,采樣頻率就是測(cè)周法的參考頻率,頻率約小,一段時(shí)間內(nèi)采樣的個(gè)數(shù)N就越大,呂濾波效果就越好。

5.數(shù)字濾波器的工作原理:

????????計(jì)數(shù)了N個(gè)電平,如果這N個(gè)電平都是一樣的,就輸出這N個(gè)電平對(duì)應(yīng)的狀態(tài)。比如N個(gè)都是低電平,那就輸出低電平)。

????????如果N個(gè)中有不同的,那就維持原先的電平輸出。比如原先輸出高電平,后續(xù)的N個(gè)采樣中有N-1個(gè)低電平,1個(gè)高電平,那就接著輸出高電平,因?yàn)檫@N個(gè)采樣中有波動(dòng),所以濾波。

? ? ? ? 不要理解成吃了N個(gè)輸入信號(hào)才吐一個(gè)信號(hào)!實(shí)際情況是檢測(cè)N個(gè)信號(hào)來(lái)判斷是不是要改變輸出信號(hào)!如果N個(gè)信號(hào)內(nèi)有波動(dòng),則說(shuō)明是信號(hào)不穩(wěn),就需要維持原狀態(tài)輸出!要是N個(gè)信號(hào)的狀態(tài)是穩(wěn)的,那就需要轉(zhuǎn)換輸出!但是在檢測(cè)的過(guò)程中也是在不斷維持原有信號(hào)狀態(tài)進(jìn)行輸出的!

? ? ? ? 而且采樣頻率一般會(huì)很高,如果真的有外部輸入信號(hào)的頻率和采樣頻率一摸一樣,才可能導(dǎo)致N個(gè)信號(hào)一直不穩(wěn),但這種情況是不被允許的(應(yīng)該極力避免的),否則會(huì)導(dǎo)致濾波器的輸出信號(hào)可能不發(fā)生改變。

? ? ? ??N可以配置,采樣頻率可以配置。

? ? ? ? 會(huì)導(dǎo)致輸入信號(hào)降低頻率的是分頻器。

濾波之后的信號(hào)再通過(guò)邊沿檢測(cè)器來(lái)統(tǒng)計(jì)上升沿、下降沿或邊沿。

其中CC1P用于使能選擇器的輸出極性,然后輸出TI1FP1,之后通過(guò)后續(xù)的捕獲電路。

前文說(shuō)過(guò)每個(gè)輸入濾波器和邊沿檢測(cè)器都有兩套,所以上圖中少了一套產(chǎn)生由通道1但產(chǎn)生信號(hào)TI2FP2并通向通道2的濾波+極性器。

然后通過(guò)CC1S控制的數(shù)據(jù)選擇器(選擇是接收TI1FP1還是TI2FP2還是TRC的輸入)

ICPS用于配置分頻器(1、2、4、8)

CC1E用于控制輸出使失能。開(kāi)啟使能之后,輸入信號(hào)在經(jīng)歷系列電路之后,就可以讓CCR捕獲CNT的值,并且清零CNT。

自動(dòng)清零CNT:TI1FP1與TIF_ED都可以通向從模式控制器,也就是TI1FP1在觸發(fā)邊沿的時(shí)候,還可以觸發(fā)從模式控制,而從模式內(nèi)就有控制CNT清零的電路。也就是CNT清零靠從模式觸發(fā)。

6.主從模式(圖片參考自江協(xié))

主模式:能夠?qū)⒍〞r(shí)器內(nèi)部的信號(hào)映射到TRGO(Trigger? Out觸發(fā)輸出),而TRGO可以用來(lái)觸發(fā)別的外設(shè)

從模式:可以接收自身定時(shí)器或者是其他定時(shí)器輸出映射到TRGO的信號(hào)控制的外設(shè)。

觸發(fā)源:TRGO的信號(hào)來(lái)源,觸發(fā)源選擇就是選擇觸發(fā)從模式的信號(hào)源

想要TI1FP1信號(hào)觸發(fā)從模式電路實(shí)現(xiàn)清零,就需要觸發(fā)源選擇TI1FP1,并且將從模式的操作選怎Reset,就可以實(shí)現(xiàn)全自動(dòng)清零。

7.配置流程(測(cè)周法)及補(bǔ)充:

(1)配置:

1.非PWM輸入捕獲:

? ? ? ? 外設(shè)時(shí)鐘—>GPIO—>時(shí)基單元—>濾波器、邊沿檢測(cè)/極性選擇(上、下、邊沿)—>

? ? ? ? ? ? ? ?① (主從模式)TI1FP1—>觸發(fā)源選擇(選擇TIxFPx)—>從模式功能選擇(Reset)

? ? ? ? ? ? ? ? ②信號(hào)輸入通道(直通TI1FP1、交通TI1FP2)—>分頻器—>CCR(CCR記錄當(dāng)前 CNT的值)

? ? 配置好 后,CCR之后從模式會(huì)自動(dòng)Reset CNT的值。

2.PWM輸入捕獲:

????????外設(shè)時(shí)鐘—>GPIO—>時(shí)基單元—>濾波器、邊沿檢測(cè)/極性選擇(上、下、邊沿)—>

? ? ? ? ? ? ? ?① (主從模式)TI1FP1—>觸發(fā)源選擇(選擇TIxFPx)—>從模式功能選擇(Reset)

? ? ? ? ? ? ? ? ②TI1FP1—>輸入信號(hào)預(yù)分頻器配置—>CCR1(CCR1記錄上升沿CNT的值)

? ? ? ? ? ? ? ? ③TI1FP2—>輸入信號(hào)預(yù)分頻器配置—>CCR2(CCR1記錄下降沿CNT的值)

配置好后,CCR1會(huì)在上升沿記錄CNT的值,并且在第二次及以后記錄后會(huì)清零CNT的值,但是CCR2將在下降沿讀取CNT的值,且不會(huì)清零CNT的值。由于CCR1第一次記錄CNT的之后會(huì)清零CNT的值,所以CCR2記錄的值時(shí)0~CNT的值。

記CCR1第二次及以后記錄的CNT值為x,CCR2記錄的為y,則占空比 = y? / x 。

詳細(xì)內(nèi)容流程:

①外設(shè)時(shí)鐘(TIM、GPIO)——》

②GPIO——》

③時(shí)基單元(ARR、PSC、CNT、計(jì)數(shù)模式、分頻、重復(fù)計(jì)數(shù)器)——》

④IC(IC通道、濾波器的采樣N、邊沿檢測(cè)器極性選擇(上、下、邊沿)、分頻器、信號(hào)源(通、交))——》

⑤從模式(觸發(fā)源、觸發(fā)模式(信號(hào)來(lái)了干什么:Reset))

(2)配置函數(shù)(來(lái)自江協(xié)):

//1.測(cè)頻率

void IC_Init(void) { ?? ?/*開(kāi)啟時(shí)鐘*/ ?? ?RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);?? ??? ??? ?//開(kāi)啟TIM3的時(shí)鐘 ?? ?RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);?? ??? ??? ?//開(kāi)啟GPIOA的時(shí)鐘 ?? ? ?? ?/*GPIO初始化*/ ?? ?GPIO_InitTypeDef GPIO_InitStructure; ?? ?GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; ?? ?GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; ?? ?GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; ?? ?GPIO_Init(GPIOA, &GPIO_InitStructure);?? ??? ??? ??? ??? ??? ??? ?//將PA6引腳初始化為上拉輸入 ?? ? ?? ?/*配置時(shí)鐘源*/ ?? ?TIM_InternalClockConfig(TIM3);?? ??? ?//選擇TIM3為內(nèi)部時(shí)鐘,若不調(diào)用此函數(shù),TIM默認(rèn)也為內(nèi)部時(shí)鐘 ?? ? ?? ?/*時(shí)基單元初始化*/ ?? ?TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;?? ??? ??? ??? ?//定義結(jié)構(gòu)體變量 ?? ?TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; ? ? //時(shí)鐘分頻,選擇不分頻,此參數(shù)用于配置濾波器時(shí)鐘,不影響時(shí)基單元功能 ?? ?TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //計(jì)數(shù)器模式,選擇向上計(jì)數(shù) ?? ?TIM_TimeBaseInitStructure.TIM_Period = 65536 - 1; ? ? ? ? ? ? ? //計(jì)數(shù)周期,即ARR的值 ?? ?TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1; ? ? ? ? ? ? ? //預(yù)分頻器,即PSC的值 ?? ?TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; ? ? ? ? ? ?//重復(fù)計(jì)數(shù)器,高級(jí)定時(shí)器才會(huì)用到 ?? ?TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure); ? ? ? ? ? ? //將結(jié)構(gòu)體變量交給TIM_TimeBaseInit,配置TIM3的時(shí)基單元 ?? ? ?? ?/*輸入捕獲初始化*/ ?? ?TIM_ICInitTypeDef TIM_ICInitStructure;?? ??? ??? ??? ??? ??? ??? ?//定義結(jié)構(gòu)體變量 ?? ?TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;?? ??? ??? ??? ?//選擇配置定時(shí)器通道1 ?? ?TIM_ICInitStructure.TIM_ICFilter = 0xF;?? ??? ??? ??? ??? ??? ??? ?//輸入濾波器參數(shù),可以過(guò)濾信號(hào)抖動(dòng) ?? ?TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;?? ??? ?//極性,選擇為上升沿觸發(fā)捕獲 ?? ?TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;?? ??? ??? ?//捕獲預(yù)分頻,選擇不分頻,每次信號(hào)都觸發(fā)捕獲 ?? ?TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;?? ?//輸入信號(hào)交叉,選擇直通,不交叉 ?? ?TIM_ICInit(TIM3, &TIM_ICInitStructure);?? ??? ??? ??? ??? ??? ??? ?//將結(jié)構(gòu)體變量交給TIM_ICInit,配置TIM3的輸入捕獲通道 ?? ? ?? ?/*選擇觸發(fā)源及從模式*/ ?? ?TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1);?? ??? ??? ??? ??? ?//觸發(fā)源選擇TI1FP1 ?? ?TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);?? ??? ??? ??? ??? ?//從模式選擇復(fù)位 ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?//即TI1產(chǎn)生上升沿時(shí),會(huì)觸發(fā)CNT歸零 ?? ? ?? ?/*TIM使能*/ ?? ?TIM_Cmd(TIM3, ENABLE);?? ??? ??? ?//使能TIM3,定時(shí)器開(kāi)始運(yùn)行 }

//測(cè)周法獲取CNT值:其中1 000 000 = 72Mhz? /? 72??(psc)??

//f' =? fc / N

uint32_t IC_GetFreq(void) { ?? ?return 1000000 / (TIM_GetCapture1(TIM3) + 1);?? ??? ?//測(cè)周法得到頻率fx = fc / N,這里不執(zhí)行+1的操作也可(不+得到的數(shù)值大概率多1) }

//2.測(cè)頻率+占空比,

//方法①在輸入捕獲初始化下面沾上下面的語(yǔ)句。

?? ?TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;?? ??? ??? ??? ?//選擇配置定時(shí)器通道2 ?? ?TIM_ICInitStructure.TIM_ICFilter = 0xF;?? ??? ??? ??? ??? ??? ??? ?//輸入濾波器參數(shù),可以過(guò)濾信號(hào)抖動(dòng) ?? ?TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;?? ??? ?//極性,選擇為上升沿觸發(fā)捕獲 ?? ?TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;?? ??? ??? ?//捕獲預(yù)分頻,選擇不分頻,每次信號(hào)都觸發(fā)捕獲 ?? ?TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_IndirectTI;?? ?//輸入信號(hào)交叉,交叉輸入

方法②將????????TIM_ICInit(TIM3, &TIM_ICInitStructure);??

????????改為????????TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);?? ??? ??? ??? ??? ??? ?

這是Stm公司寫(xiě)好的函數(shù),但是只允許是對(duì)通道1、2進(jìn)行配置;不能對(duì)3、4進(jìn)行這樣的配置。

讀取占空比(0~100)

uint32_t IC_GetDuty(void) { ?? ?return (TIM_GetCapture2(TIM3) + 1) * 100 / (TIM_GetCapture1(TIM3) + 1);?? ?//占空比Duty = CCR2 / CCR1 * 100,這里不執(zhí)行+1的操作也可 }

????????

(3)補(bǔ)充:

? ? ? ? ①運(yùn)行時(shí),第一次記錄的CNT的值是未知的,記錄第一次之后就會(huì)立即Reset CNT,在第二次記錄CNT的值時(shí),該值對(duì)應(yīng)的就是在系統(tǒng)頻率下,輸入信號(hào)的一個(gè)周期的時(shí)間,。因?yàn)榈谝淮斡涗浿笄辶?,第二次及以后記錄的值就是?~>CNT的最新CNT的值。

? ? ? ? ②要是外部輸入信號(hào)的頻率太低,就可能導(dǎo)致CNT的值溢出。所以把ARR的值弄到最大,極可能人為避免這種情況。

????????舉例就是:第一次記錄到高電平之后CNT被Reset了,但是在等待第二次高電平的時(shí)候,在CNT到最高計(jì)數(shù)值的期間內(nèi)都等不到第二次高電平,然后CNT的值已經(jīng)超過(guò)了ARR的最高上限,這時(shí)候定時(shí)器的配置會(huì)讓CNT從零開(kāi)始。

? ? ? ? ③從模式的信號(hào)源不是所有定時(shí)器都有,如參考自江協(xié)的圖片所示,只有TI1FP1和TI2FP2的信號(hào),沒(méi)有TI3FP3和TI4FP4的信號(hào),因此從模式自動(dòng)清零CNT只能選擇輸入捕獲通道1、2,而不能選擇3、4。對(duì)于通道3、4,就只能通過(guò)捕獲中斷在中斷內(nèi)部調(diào)用函數(shù)手動(dòng)清零,但易消耗軟件資源。

? ? ? ? ④

????????直通:輸入信號(hào)從哪里來(lái)就從哪輸入

????????交通:輸入信號(hào)交錯(cuò)輸入,因?yàn)?和2、3和4有交通輸入,也就是1/2的信號(hào)可以輸入給2/1...

? ? ? ? ⑤采樣頻率與系統(tǒng)時(shí)鐘頻率有關(guān)。

? ? ? ? ⑥占空比是下降沿觸發(fā)的原因:

? ? ? ? ⑦測(cè)周法

????????????????最大檢測(cè)頻率 = 72Mhz / ARR。但是當(dāng)檢測(cè)頻率接近72Mhz / ARR時(shí),誤差會(huì)越來(lái)越大

????????????????最小檢測(cè)頻率 =?72Mhz / PSC / ARR。小于這個(gè)頻率的話(huà),CNT的值就會(huì)溢出。

????????????????誤差精度? =?72Mhz / ARR / 最大檢測(cè)頻率

? ? ? ? ? ? ? ? 上述的PSC都是時(shí)基單元分頻器的值,而非IC通道分頻器的值。

? ? ? ? ? ? ? ?對(duì)于過(guò)高的待測(cè)頻率,就應(yīng)該用測(cè)頻法,而不是用測(cè)周法了

用PWM驅(qū)動(dòng)電機(jī),再用編碼器測(cè)量電機(jī)的速度,然后用PID算法進(jìn)行閉環(huán)控制,就可以控制小車(chē)的移動(dòng)。電機(jī)速度一般比較快,一般用無(wú)接觸的霍爾傳感器or光柵測(cè)

編碼器接口(Encoder Interface):

? ? ? ? 1.優(yōu)于用外部中斷來(lái)計(jì)次編碼器轉(zhuǎn)次,防止電機(jī)高速轉(zhuǎn)動(dòng)時(shí),軟件頻繁進(jìn)入中斷消耗軟件資源。

? ? ? ? 2.可以接收增量(正交)編碼器的信號(hào),根據(jù)編碼器的旋轉(zhuǎn)方向產(chǎn)生正交信號(hào)脈沖,自動(dòng)控制控制CNT自增或自減,從加減可以測(cè)得旋轉(zhuǎn)方向,從數(shù)值變化大小可以測(cè)得旋轉(zhuǎn)速度。

? ? ? ? 3.正交編碼器:兩個(gè)相(A、B)的輸入相差剛好90°。

? ? ? ? ? ? ? ? ①這樣在旋轉(zhuǎn)的時(shí)候,根據(jù)旋轉(zhuǎn)方向的不同,就可以知道哪一個(gè)端先輸入有效信號(hào),哪一端后輸入有效信號(hào),從而判斷旋轉(zhuǎn)方向。

? ? ? ? ? ? ? ? ②而在一段時(shí)間內(nèi)產(chǎn)生多少個(gè)脈沖,就可以計(jì)數(shù)多少個(gè)脈沖,然后根據(jù)固定時(shí)間內(nèi)接受的脈沖數(shù)量,進(jìn)行一段處理就可以得到速度。

? ? ? ? 4.每個(gè)高級(jí)、通用定時(shí)器都只有1個(gè)編碼器接口;編碼器的兩個(gè)相的輸入端分別占用IC的通道1、2,(用到了TI1FP1、TI2FP2;通道3、4不能接編碼器,即CH3、CH3)。需要注意的是,作為編碼器接口的定時(shí)器不能啟用其他功能。TI1FP1、TI2FP2見(jiàn)下圖編碼器接口左側(cè)。

? ? ? ? 5.輸入的信號(hào)的流傳:

? ? ? ? ????????CH1、2—>輸入濾波器和邊沿檢測(cè)器——>觸發(fā)控制器的編碼器接口——>PSC——>CNT。

? ? ? ? 其中邊沿檢測(cè)器中的極性選擇的可以選擇輸入信號(hào)是高電平還是低電平有效,這會(huì)導(dǎo)致計(jì)數(shù)方向改變。(因?yàn)闃O性選擇是接收到對(duì)應(yīng)極性才輸出高電平,否則輸出低電平。如果選在高極性,那就是接收高電平輸出高電平,接收低電平就輸出低電平;如果選擇低極性有效,那就是接收低電平輸出高電平,接收高電平輸出低電平。個(gè)人理解)

????????其中ARR一般配置為最大值65535,用于計(jì)數(shù)滿(mǎn)后清零。在這個(gè)流程下,72Mhz的內(nèi)部時(shí)鐘、時(shí)基單元配置的CNT計(jì)數(shù)方向(向上、向下、中央對(duì)齊)不會(huì)被該電路使用。CNT的計(jì)數(shù)快慢,計(jì)數(shù)加減由編碼器控制

? ? ? ? ????????補(bǔ)充說(shuō)明:在編碼器接口的工作模式下,通道1、2的OC也是可以正常工作的。(前提是使能了輸出控制)

? ? ? ? 6.工作模式:三種。第三種的精度最高

? ? ? ? 這個(gè)表的看法是:先選定自己的工作模式,再想所需要兩個(gè)輸入的信號(hào)高低,然后看右上方的TI1、TI2的上升、下降,然后再找對(duì)應(yīng)工作模式下選定上升/下降列對(duì)應(yīng)的計(jì)數(shù)方式,此時(shí)相對(duì)信號(hào)的電平就控制計(jì)數(shù)是+還是-。

? ? ? ? 比如我選在TI1和2上計(jì)數(shù),想要知道TI1高、TI2低電平的計(jì)數(shù)是什么:

????????

函數(shù)配置流程:

? ? ? ? 外設(shè)時(shí)鐘——>GPIO——>時(shí)基單元——>IC——編碼器。

? ? ? ? 其中時(shí)基單元的CNT計(jì)數(shù)方式、時(shí)鐘源選擇即使配置了也不會(huì)生效,因?yàn)镃NT的的計(jì)數(shù)由編碼器作為時(shí)鐘源控制,而CNT的技術(shù)方向由編碼器的旋轉(zhuǎn)方向決定是+還是-。IC的邊沿檢測(cè)器的極性選擇將控制旋轉(zhuǎn)編碼器的計(jì)數(shù)方向(因?yàn)闃O性選擇將導(dǎo)致輸入信號(hào)的高低電平是否翻轉(zhuǎn))。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

TIM_InternalClockConfig(TIM3);

//GPIO

GPIO_InitTypeDef GPIOAInitStructure;

GPIOAInitStructure.GPIO_Mode = GPIO_Mode_IPU;

GPIOAInitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;

GPIOAInitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIOAInitStructure);

//時(shí)基單元

TIM_TimeBaseInitTypeDef InitStructure;

InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;//時(shí)鐘源分頻——編碼器模式下用不到

InitStructure.TIM_CounterMode = TIM_CounterMode_Up;//計(jì)數(shù)模式 向上計(jì)數(shù)——編碼器模式下用不到

InitStructure.TIM_Period = 65536 - 1;//ARR 自動(dòng)重裝值

InitStructure.TIM_Prescaler = 1 - 1;//PSC 預(yù)分頻

InitStructure.TIM_RepetitionCounter = 0;//重復(fù)計(jì)數(shù)器-高級(jí)定時(shí)器:多少個(gè)計(jì)數(shù)周期算計(jì)數(shù)一次

TIM_TimeBaseInit(TIM2,&InitStructure);//結(jié)構(gòu)體是初始化誰(shuí)的就是誰(shuí)Init

//IC

TIM_ICInitTypeDef ICInitStructure;

TIM_ICStructInit(&ICInitStructure);//不完全配置參數(shù)就需要這一步,用結(jié)構(gòu)體初始化

ICInitStructure.TIM_Channel = TIM_Channel_1 ;//IC的輸入通道

ICInitStructure.TIM_ICFilter = 0xF;//輸入信號(hào)濾波器的值

ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;//輸入信號(hào)有效邊沿選擇——編碼模式下則對(duì)應(yīng)是否翻轉(zhuǎn)極性——后面可以統(tǒng)一配置,這里可以不配

// ICInitStructure.TIM_ICPrescaler = ;//后半段的輸入信號(hào)分頻——編碼器用不到

// ICInitStructure.TIM_ICSelection = ;//后半段的信號(hào)通道選擇——編碼器用不到

TIM_ICInit(TIM3,&ICInitStructure);

ICInitStructure.TIM_Channel = TIM_Channel_2 ;//IC的輸入通道

ICInitStructure.TIM_ICFilter = 0xF;//輸入信號(hào)濾波器的值

ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;//輸入信號(hào)有效邊沿選擇——編碼模式下則對(duì)應(yīng)是否翻轉(zhuǎn)極性——后面可以統(tǒng)一配置,這里可以不配

// ICInitStructure.TIM_ICPrescaler = ;//后半段的輸入信號(hào)分頻——編碼器用不到

// ICInitStructure.TIM_ICSelection = ;//后半段的信號(hào)通道選擇——編碼器用不到

TIM_ICInit(TIM3,&ICInitStructure);

//配置編碼器接口

TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);//定時(shí)器通道、編碼模式(單計(jì)數(shù)、雙計(jì)數(shù))、IC1的輸入極性、IC2的輸入極性

TIM_Cmd(TIM3,ENABLE);//TIM使能

獲取編碼器旋轉(zhuǎn)值的函數(shù)

TIM_GetCounter(TIM3);

清零編碼值的函數(shù)

TIM_SetCounter(TIM3,0);

柚子快報(bào)邀請(qǐng)碼778899分享:Stm32的定時(shí)器

http://yzkb.51969.com/

推薦鏈接

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀(guān)點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19615499.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪(fǎng)問(wèn)

文章目錄