1、TIM輸出比較
1.1 輸出比較簡(jiǎn)介
CCR(Capture Compare Register):輸出捕獲寄存器
1.2 PWM簡(jiǎn)介
使用PWM波形,可以在數(shù)字系統(tǒng)等效輸出模擬量。
1.3 輸出比較通道
上圖輸出比較通道(通用)相當(dāng)于下圖的紅框那部分電路:
輸出模式控制器見下表:
1.4 PWM基本結(jié)構(gòu)
藍(lán)色線:CNT值
黃色線:ARR值
紅色線:CCR值
PWM頻率等于計(jì)數(shù)器CNT更新頻率
1.5 初始化代碼
(1)開啟外部時(shí)鐘
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
(2)選擇時(shí)基單元的時(shí)鐘
TIM_InternalClockConfig(TIM2);
(3)配置時(shí)基單元
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_Period = 100 - 1; //ARR
TIM_TimeBaseInitStructure.TIM_Prescaler = 720 - 1; //PSC
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
(4)配置輸出比較單元
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCStructInit(&TIM_OCInitStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 50; //CCR
TIM_OC1Init(TIM2, &TIM_OCInitStructure);
先給結(jié)構(gòu)體變量賦初始值,以防下次使用高級(jí)定時(shí)器時(shí),其他結(jié)構(gòu)體變量未賦值帶來的問題。
(5)配置GPIO
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
(6)配置運(yùn)行控制
TIM_Cmd(TIM2, ENABLE);
2、 TIM輸入捕獲
2.1 輸入捕獲簡(jiǎn)介
2.2 頻率測(cè)量
測(cè)頻法適合測(cè)量高頻信號(hào),更新慢(正常1s)
測(cè)周法適合測(cè)量低頻信號(hào),更新快(待測(cè)信號(hào)幾百幾千Hz)
2.3 輸入捕獲通道
TI1:就是CH1引腳
TI1F:濾波后的信號(hào)
fDTS:濾波器的采樣時(shí)鐘來源
CC1P:極性選擇
CC1S:對(duì)數(shù)據(jù)選擇器進(jìn)行選擇
ICPS:進(jìn)行分頻選擇
從模式控制器:里面有完成CNT清零的電路
2.4 主從觸發(fā)模式
主模式:可以將定時(shí)器內(nèi)部的信號(hào),映射到TRGO腳,用于觸發(fā)別的外設(shè)。
從模式:接收其他外設(shè)或者自身外設(shè)的一些信號(hào),用于控制自身定時(shí)器的運(yùn)行,即被別的信號(hào)控制。
觸發(fā)源選擇:選擇從模式的觸發(fā)信號(hào)源。
舉例:上述讓TI1FP1信號(hào)自動(dòng)觸發(fā)CNT清0,那觸發(fā)源選擇TI1FP1,從模式執(zhí)行Reset的操作。
2.5 輸入捕獲基本結(jié)構(gòu)
左上角:上升沿時(shí),CCR1=CNT,CNT轉(zhuǎn)運(yùn)到CCR里,這是輸入捕獲自動(dòng)執(zhí)行的。
CNT = 0,CNT清零,這是從模式自動(dòng)執(zhí)行的。
測(cè)周法:CNT在標(biāo)準(zhǔn)時(shí)鐘的驅(qū)動(dòng)下,不斷自增,由于之前清0過,CNT從上升沿開始,一直++,直到下個(gè)上升沿來臨。CCR1始終保持最新一個(gè)周期的計(jì)數(shù)值,即N。?
注意:
需要先轉(zhuǎn)運(yùn)CNT的值到CCR里去,再觸發(fā)從模式給CNT清零?;蛘叻亲枞耐瑫r(shí)轉(zhuǎn)移:CNT的值轉(zhuǎn)移到CCR,同時(shí)0轉(zhuǎn)移到CNT里去。CNT最大一般為65535,頻率過低可能導(dǎo)致溢出。
2.6 PWMI基本結(jié)構(gòu)
可以同時(shí)測(cè)量周期和占空比。
左上角:在下降沿觸發(fā)CCR2捕獲CNT的值,但不觸發(fā)CNT清零。
2.7 初始化代碼
(1)開啟外部時(shí)鐘
(2)配置GPIO
(3)選擇時(shí)基單元時(shí)鐘
(4)配置時(shí)基單元
(5)初始化輸入捕獲單元
TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICFilter = TIM_ICFilter_0xF;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPrescaler_DIV1;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInit(TIM3, &TIM_ICInitStructure); //輸入捕獲模式使用
TIM_PWMIConfig(TIM3, ICInitStructure); //PWMI模式使用
(6)配置TRGI的觸發(fā)源為TI1FP1
TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1);
(7)配置從模式為reset
TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);
(8)配置運(yùn)行控制
3、TIM編碼器接口
3.1 編碼器接口簡(jiǎn)介
工作流程:編碼器有兩個(gè)輸出:A相和B相。接入到STM32定時(shí)器的編碼器接口,編碼器接口自動(dòng)控制定時(shí)器時(shí)基單元中的CNT計(jì)數(shù)器,進(jìn)行自增或自減。即:編碼器右轉(zhuǎn),CNT++,右轉(zhuǎn)產(chǎn)生一個(gè)脈沖,CNT就+1。
編碼器測(cè)速實(shí)際上就是測(cè)頻法測(cè)正交脈沖的頻率。
3.2 正交編碼器
使用正交信號(hào),相比單獨(dú)定義一個(gè)方向引腳,有什么好處?
答:(1)正交信號(hào)精度更高,因?yàn)锳,B相都可以計(jì)次,相當(dāng)于計(jì)次頻率提高了一倍。
? ? ? ? (2)正交信號(hào)可以抗噪聲,因?yàn)檎恍盘?hào)兩個(gè)信號(hào)是交替跳變的。
編碼器的設(shè)計(jì)邏輯:首先把A相和B相的所有邊沿作為計(jì)數(shù)器的計(jì)數(shù)時(shí)鐘,出現(xiàn)邊沿信號(hào)時(shí),就計(jì)數(shù)自增或自減,計(jì)數(shù)的方向由另一相的狀態(tài)來確定。正反轉(zhuǎn)由上表確定。
3.3 編碼器接口基本結(jié)構(gòu)
工作流程:輸入捕獲的前兩個(gè)通道,通過GPIO口接入編碼器的A、B相,通過濾波器,邊沿檢測(cè),極性選擇,產(chǎn)生TI1FP1和TI2FP2,通向編碼器接口。編碼器接口通過預(yù)分頻器控制CNT計(jì)數(shù)器的時(shí)鐘,同時(shí),編碼器接口還根據(jù)編碼器的旋轉(zhuǎn)方向,控制CNT的計(jì)數(shù)方向,編碼器正轉(zhuǎn)時(shí),CNT自增;編碼器反轉(zhuǎn)時(shí),CNT自減。一般會(huì)設(shè)置ARR為65535,最大量程。
3.4 工作模式
TI1FP1信號(hào)和TI2FP2信號(hào)接的是編碼器的A、B相。
3.5 初始化代碼
(1)開啟RCC外部時(shí)鐘,開啟GPIO 和定時(shí)器時(shí)鐘
(2)配置GPIO,將GPIO配置成輸入模式
(3)配置時(shí)基單元
(4)配置輸入捕獲單元
(5)配置編碼器接口模式文章來源:http://www.zghlxwxcb.cn/news/detail-832754.html
TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIN_ICPolarity_Rising, TIN_ICPolarity_Rising);
(6)啟動(dòng)定時(shí)器文章來源地址http://www.zghlxwxcb.cn/news/detail-832754.html
到了這里,關(guān)于STM32筆記----6、TIM定時(shí)器其他功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!