PART A 定时基本定时功能

一TIM简介

b981ab1a7d024524a23380ba3767f9a7.png

二,定时器类型  只存在TIM1,2,3,4这四个寄存器         

a24e33ef515f417c8f4e860f7843b629.png

三基本定时器(支持向上计数模式)

        1,时基单位

        2,预分频器PSC

               写0:不分频(1分频):输出频率=输入频率=72MHz

               写1:2分频:输出频率=输入频率/2=36MHz

                 写2:3分频:输出频率=输入频率/3=18MHz

                      ················

                  预分频器的值和实际分频系数相差1,即实际分频系数=预分频器的值+1

               改分频器是16位最大值可写65535,即65536分频

 

        3,计数器:对预分频后计数时钟进行计数

        4,自动重装寄存器:存写入的计数目标

             运行过程中,计数值不断自增,自动重装值是固定的目标

             计数值等于自动重装值时,计数时间到了,就会产生一个中断信号,并且清零计数器

              计数器自动开始下一次的计数计时

        5,更新中断:向上箭头,表示产生中断信号,这种计数值等于自动重装值产生的中断

             更新事件:向下箭头,更新事件不会触发中断,但可以触发内部其他电路的工作

        6,定时器中断流程:基准时钟->预分频器->计数器->

              计数器计数自增,同时不断与自动重传寄存器比较->

              值相等时,即计时时间到->产生一个更新中断和更新事件->

               CPU响应更新中断

          7,主从触发模式:能让内部的硬件在不受程序的控制下实现自动运行     

               主模式作用: 需要把更新事件通过主模式映射到TRGO,然后TRGO就会直接去触发DAC     

4c629b519f894e8d97bb27a97e7b7dec.png

四,通用定时器【支持向上计数模式,

                             向下计数模式(从重装值开始,向下自减,减到0后回到重装值同时申请中断)

                             中央对齐模式(从0 开始,先向上自增,记到重装值,申请中断,

                                                       再向下自减到0,再申请中断 )】

        1,时基单位

        2,内外时钟源选择:可以选择内部72MHz和外部时钟(TIMx_ETR引脚上外部时钟)

        3,外部时钟模式2

        4,当TRGI当做外部时钟来使用的时候,这一路就叫做“外部时钟模式1”

        5,实现定时器级联:初始化TIM3,使用主模式把更新事件映射到TRGO上

        再初始化TIM2,选择ITR2,对应TIM3的TRGO

e692c0143b5741579eb640fb7b9deb4d.png

五,定时中断基本结构

e54ffde691514ad38bf3f593b51575fa.png

六,预分频器时序

        1,CK_PSC  预分频器的输入时钟

        2,CNT_EN 计数器使能,高电平计数器正常运行,低电平计数器停止

        3,CK_CNT 计数器时钟,即是预分频器的时钟输出,也是计数器的时钟输入

        4,计数器寄存器数值跟随上升沿自增,可得ARR自动重装值就是FC,

              当计数值计到和重装值相等。并旦下一个时钟来临时,计数值才清零

              同时下面产生一个更新事件

        5,预分频寄存器的缓冲,下三行(这里没捋懂)

c2f119d78c714ad4b38cb5ddd244f13a.png

七,计数器时序

        1,CK_INT 内部时钟72MHz

        2,时钟使能,高点频启动,

        3,计数器时钟,因为分频系数为2,所以这个频率是上面(CNT)的/2

        4,计数器在每个上升沿自增,到0036时,发生溢出,计到36后再来一个上升沿,计数器清零

                计数器溢出,产生一个更新事件脉冲。并会置一个更新中断标志位UIF,UIF置1,

                就会 申请中断,中断响应后要手动清零

        5,计数器有预装时序,有缓冲寄存器

                计数器无预装时序,无缓冲寄存器

4ee7d32932b54271ac83eca362d6e209.png八,定时器定时中断

        1,因为定时器不涉及外部硬件,所以放system里

        2,根据定时中断基本结构,初始化配置定时器

                2.1  RCC开启时钟

                2.2   选择时基单元时钟源(对于定时中断,我们选择内部时钟)

                2.3  配置时基单元(预分频器,自动重装器,计数模式)

                2.4  配置输出中断控制,允许更新中断到NVIC

                2.5  配置NVIC,在NVIC中打开定时器中断的通道,并分配一个优先级

                2.6 运行控制

                2.7配置完要使能定时器,才可使用

                2.8 最后写一个中断函数

        3,介绍库函数

                TIM_DeInit   恢复缺省配置(默认模式)

                TIM_TimeBaseInit  时基单元初始化,

                            配置时基单元【参数1:TIMx选择某个定时器,

                        参数2:TIM_TimeBaseInitStruct    结构体(包含配置时基单元的参数)】

                TIM_TimeBaseStructInit   可以把结构体变量赋一个默认值

                TIM_Cmd   使能计数器(对应定时中断基本结构中的运行控制

                                (参数1:TIMx选择定时器,参数2:NewState使能还是失能)

                TIM_ITConfig  使能中断输出信号(对应定时中断基本结构中的中断输出控制)

                                      (参数1:TIMx选择定时器,参数2:TIM_IT 选择配置哪个中断输出,参数3:NewState使能还是失能)

                时钟源选择

                TIM_InternalClockConfig 选择内部时钟

                TIM_ITRxExternalClockConfig 选择ITRx其他定时器的时钟

                TIM_TIxExternalClockConfig  选择TIx 捕获的时钟

                TIM_ETRClockMode1Config   选择ETR通过外部时钟模式1输入的时钟

                TIM_ETRClockMode2Config   选择ETR通过外部时钟模式2输入的时钟

                TIM_ETRConfig  单独用来配置ETR引脚的预分频器、极性、滤波器这些参数的

                NVIC 用上节NVIC_Init

                TIM_PrescalerConfig  单独写预分频值

                TIM_ARRPreloadConfig 自动重装器预装功能配置 

                TIM_SetCounter 给计数器写一个值

                TIM_SetAutoreload  给自动重装器写入一个值

                TIM_GetCounter  获取当前计数器的值

                TIM_GetPrescaler  获取当前预分频器的值

        4,Period,周期,就是ARR自动重装器的值

             Prescaler,就是PSC预分频器的值 

             RepetitionCounter,是重复计数器的值

        5,TIM_RepetitionCounter 高级定时器才用,这里给0

        6,跨文件使用变量,

                1,在使用变量的文件上用extern声明变量,把extern声明变量当作main.c变量的引用

                      该过程并没有定义新的变量       ,操作的还是main.c中的Num           

                2,复制中断函数,放到主函数后面,就不需要extern声明,Timer.c中的中断就不需要了

        7,Num一开始是1,说明在初始化后立刻进入了一次中断函数

                原因:预分频器是有一个缓冲寄存器的,写的值只有在更新事件时,才会真正起作用

                       为了让值立刻起作用,在最后手动生成一个更新事件,这样预分频器的值就有效

                副作用:更新事件和更新中断同时发生  ,更新中断会置更新中断标志位

                                一但初始化完了,更新中断就会立刻进入           

                解决方案:开启中断前面加    

                                TIM_ClearFlag(TIM2,TIM_FLAG_Update);//手动清除更新中断标志位

cbeb322e201445a18b8992f3b7922e80.png

九,定时器外部时钟

        1,配置通过etr的外部时钟模式2  TIM_ETRClockMode2Config参数选择

              1.1 TIM_ExtTRGPSC_OFF,不需要分频

               1.2TIM_ExtTRGPolarity_Inverted是反向,就是低电平或下降沿有效

               1.3TIM_ExtTRGPolarity_NonInverted是不反向,就是高电平或上升沿有效

               1.4 外部触发滤波器:以一个采样频率f采用n个点,如果n个点都一样才会有效输出

                        填一个滤波值(该处填0x0F)就不会乱跳

*十,输出比较功能(主要用来输出PWM波形(驱动电机的必要条件))

        1,OC(Output Compare)输出比较,IC(Input Compare)输入比较

                CC(Capture Compare)表示输入捕获和输出比较单元

                        e05561a7a32e4820b01a752668f549da.png

十一,PWM简介

        1,,使用PWM波形,用来等效地实现一个模拟信号的输出

        2,对于呼吸灯:调控点亮和熄灭的时间比例,就能让LED呈现出不同的亮度级别

           对于电机调速:我们以很快的频率给电机通电断电通电断电,使电机的速度维持中等速度

        3,PWM的应用场景必须是一个惯性系统,

               即LED在熄灭的时候,由于余晖和人眼视觉暂留现象,

                LED不会立马熄灭,而是有一定的惯性,过一小段时间才会熄灭。

                电机也是,电机断电时,电机的转动不会立马停止,而是有一定的惯性,过一小段时间才会熄灭。

        4,高低电平跳变的数字信号,可以等效为中间虚线表示的模拟量

                当上面电平时间长一点,下面电平时间短一点的时候,等效模拟量就偏向于上面

                当下面电平时间长一点,上面电平时间短一点的时候,等效模拟量就偏向于下面

        5,PWM参数

              5.1  频率=1/Ts(Ts代表一个高低电平变换周期的时间),

                        PWM频率越快,等效模拟的信号就越平稳,同时性能开销就越大

                        一般来说PWM频率在几k到几十k就够快了

              5.2 占空比=Ton/Ts(Ton是高电平的时间,Ts代表一个高低电平变换周期的时间。

                                                那Ton/Ts就是高电平时间相对于整个周期时间的比例)

                        占空比越大,那等效的模拟电压就越趋近于高电平

                        占空比越小,那等效的模拟电压就越趋近于低电平

                5.3 分辨率(占空比变化的精细程度)=占空比变化步距

        6,使用PWM 波形,可以在数字系统等效输出模拟量,实现LED控制亮度,电机控速等功能

dcb13ce0d6fd4b918078d5ff10ee2599.png

十二,输出比较通道(通用)

        1,左边就是CNT计数器和CCR1第一路的捕获/比较寄存器

                CNT>CCR1或者CNT=CCR1,就会给输出模式控制器传一个信号

                 输出模式控制器就会改变它输出OC1REF(reference参考信号)的高低电平

        2,ETRF ,不用

        3,REF可以前往主模式控制器,可以映射到主模式的TRGO输出上

        4,REF主要通往下一路的极性选择,

                        给寄存器写0,信号往上走,就是电平不翻转,进来什么样出去什么样

                         给寄存器写1,信号往下走,就是电平翻转,信号通过一个非门取反

        5,输出使能电路

        6,OC1引脚就是CH1通道的引脚

5ad54a829a4941a99b62563aff2db8ca.png

十三,输出比较模式(输出模式控制器里面的执行逻辑)

           1,匹配时置有效电平,CNT=CCR时,REF置有效(高)电平
                匹配时置无效电平,CNT=CCR时,REF置无效(低)电平

                以上两种都是一次性,不适合输出连续变化的波形

        2, PWM模式1,PWM模式2,用于输出频率和占空比都可调的PWM波形

             15a1cc007673442a96bf9b49667e3282.png

十四, PWM基本结构(主要讲解使用PWM1)

        1,蓝色CNT,黄色ARR,红色CCR,绿色输出

        2,蓝色自增到99,清零后再自增

        3,由0开始CNT<CCR,置高电平。后面CNT>=CCR变为低电平。

        4,占空比受CCR调控,如果CCR高一些,输出占空比就变大

                                                如果CCR低一些,输出占空比就变小

41a5306f8701460f837c592307c9b1b5.png

十五,参数计算

        1,该处分辨率是占空比最小的 变化步距,值越小越好

                CCR的范围定义成分辨率,值越大越好

                总而言之:占空比变化越细腻越好

0217c2f4929345ce991468c01ce2ba00.png

十六,相关硬件外设

        1,舵机简介执行逻辑:PWM信号输入控制板  ,给控制板一个指定的目标角度

                                电位器检测输出轴的当前角度:如果大于目标角度,电机机会反转

                                                                                   如果小于目标角度,电机机会正转

                                                                                    最终是输出轴固定在指定角度
36312d5dc0e146049d80caf89de4e2f2.png

        1,如果单独供电:供电负极要和STM32共地,正极接5V引脚上,信号线,直接接引脚上就行(如PA0)

 

dec811303d2d4acf925c272863844ffa.png

 

8d50388dc81c41dc9f956e178a63248a.png

        1,VM电机电源的正极,和舵机要求电源一样,要接一个输出大电流的电源

                VM是驱动电压输入端,范围是4.5-10V,一般与电机额定电压保持一致

                如果是5V 的电机,这里就接5V

        2,VCC逻辑电平输入端,范围是2.7V-5.5V,要和控制器电源保持一致

                如果使用STM32,是3.3V的器件,就接3.3V,

                不需要大功率,可以和控制器共用一个电源

        3,第三个引脚GND,接系统的负极

        4,AO1,AO2,BO1,BO2就是两路电机的输出

                AO1,AO2是A路的两个输出,控制端是上面的三个(PWMA,AIN2,AIN1),

                这三个引脚(直接接GPIO口)控制下面的一个电机,

                其中PWMA要接PWM信号输出端,其他两个引脚任意接两个普通的GPIO口。        

                这三个引脚给一个低功率的控制信号,驱动电路就会从VM汲取电流,来输出到电机,

                这样就能完成低功率的控制信号控制大功率设备的目的了。

        5,STBY引脚,是待机控制脚。如果接GND芯片就不工作,处于待机状态

                                                                如果接逻辑电源VCC,芯片就正常工作

 

7207ba4cb5da4e36a66697dc29f6a413.png1,判断正转反转

df85ba11870249a2aecd81597dd71c89.png

十七,PWM驱动LED呼吸灯

        1,根据PWM基本结构 开钟,配时基单元,配输出比较单元,配GPIO,运行控制

        2,介绍库函数

                结构体初始化输出比较单元(配四个)TIM_OC1Init,TIM_OC2Init,TIM_OC3Init,TIM_OC4Init

                TIM_OCStructInit 这个是用来给输出比较结构体赋一个默认值的

                TIM_CtrlPWMOutputs仅高级定时器使用
                                                在使用高级定时器输出PWM时
                                                需要调用这个函数
                                                使能主输出
                                                否则PWM将不能正常输出

                 TIM_SetCompare1 用来单独更改CCR寄存器值的函数

        3,引脚重映射

              把PA0,改到PA15,用部分重映射或者引脚重映射

               重映射定时器或者其他外设的复用引脚

                        1,先打开AFIO时钟

                        2,再用AFIO重映射外设复用的引脚

                PA15,PB3,PB4当作GPIO使用要解除调试  

                        1,先打开AFIO时钟

                        2,再用AFIO复用将JTAG解除

                重映射的引脚正好是调试端口

                        1,先打开AFIO时钟

                        2,再用AFIO重映射外设复用的引脚

                         3,再用AFIO复用将JTAG解除d08223fcd88941eea5cb2432784e8e7d.png十八,PWM驱动舵机

        1,对于同一个定时器的不同通道输出的PWM的特点

             1.1 因为不同通道是共用一个计数器的 ,它们的频率是一样的

             1.2占空比由各自的CCR决定,占空比可以各自设定

             1.3由于计数器更新,所有PWM同时跳变,所以它们的相位是同步的

              1.4如果驱动多个舵机或直流电机,使用同一个定时器不同通道的PWM,就可以了

        2,参数计算

                2.1    PWM_SetCompare2(1500);90度

                                                          (2500)180

                                                            (500)0

6d1c06685cc348d88ac7a0d40d782a6b.png

十九,PWM驱动直流电机

        1,加大PWM频率,超出人耳范围,就听不到蜂鸣器响

         人耳听到20-20kHz,目前是1kHz

        可以加大频率,可通过减小预分频器完成,这样不会影响占空比,

                给预分频器PSC去掉一个0,变成72-1,就是10kHz了

                                                                     36-1,就是20kHz

        2,反转用,int void Motor_SetSpeed(int8_t Speed)

        3,Compare传正数,Speed前加-

二十,输入捕获简介

        1,功能描述:就是输入引脚电平跳变的瞬间,把CNT的值锁存到CCR中

        2,作用:测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数

        3,结合PWMI模式和主从触发模式,测量频率占空比就是硬件全自动执行

                软件不需要干预和中断,需要测量时,直接读取CCR寄存器

ab03503cc9b8428ebc0f2bfc74446809.png二十一,频率测量

        1,越往左,频率越高。越往右,频率越低  

        2,信号都是只有高低电平的数字信号

        3,测试频率的方法

                3.1 测频法(适合高频信号):测频法测量结果,更新的慢一些,数值相对稳定

                3.2 测周法(适合低频信号):测周法更新的快,数据跳变也非常快

         4,中界频率:测频法与测周法误差(N相同)相等的频率点,

         5,N越大,正负1误差对我们的影响越小

        6,每次捕获之后,要CNT清0,再补获取的CNT才是两个上升沿的时间间隔

                (可以用主从触发模式自动完成)

716d638ba5a242209b47f6d7992b3e94.png二十二,输入捕获通道

        1,滤波器的输入是TI1,即CH1的引脚

        2,输出的TI1F是滤波后的信号

        3,FDTS是滤波器的采样时钟来源

        4,CCMR1寄存器里的ICF位可以控制滤波器的参数

        5,滤波器工作原理:

                        5.1 以采样频率对输入信号进行采样,
                                当连续N个值都为高电平,输出才为高电平

                                 当连续N个值都为低电平,输出才为低电平

        ​                 5.2 ,如果信号出现高频抖动,导致连续采样N个值不全都一样
                                        那输出就不会变化这样就可以达到滤波的效果    

                        5.3   采样频率越低,采样个数N越大,滤波效果就越好。  

        6,      滤波后的信号,通过边缘检测器,捕获上升沿或下降沿 

        7,用CCER寄存器里的CC1P位,可以选择极性       

        8, 最终,得到T11FP1触发信号,通过数据选择器,进入通道1后续的捕获电路

        9,共四种连接方式

        10,CC1S位可以对数据选择器进行选择

        11,ICPS位,可以配置这里的分频器

        12,CC1E位,控制输出使能或失能

        13,TI1FP1和TIF_ED可以通向从模式控制器

                                     

6d1519d51f7e4299ad4e60ec167c6e03.png二十三,主从触发模式

        1,主模式:可以将定时器内部的信号,映射到TRGO引脚,触发别的外设

        2,从模式:接收其他外设或者自身外设的一些信号,

                             用于控制自身定时器的运行,也就是被别的信号控制

        3,触发源选择:选择从模式的触发信号源的(可以认为是从模式的一部分)

                                       选择指定的一个信号,得到TRGI,TRGI去触发从模式

        4,让TI1FP1信号自动触发CNT清零,实现硬件全自动测量选择下面的路

b64a8f5d301141498d3fd97b487ed6ad.png 二十四,输入捕获基本结构

        1,时基单元配置好,启动定时器,CNT会在预分频后的时钟驱动下,不断自增

        2,经过预分频之后这个位置的时钟频率,就是驱动CNT的标准频率fc

                (标准频率=72M/预分频系数)

        3,ARR一般设置为最大65535,那CNT最大也是65535

6b7f736904d442ceb39c2f768e18006b.png二十五,PWMI基本结构

        1,两个通道同时捕获一个引脚,可以同时测量周期和占空比

1ae1d678b3484d8ab1c88655b0df05f7.png二十六,输入捕获模式测频率
        1,ARR给100-1,这样PSC决定频率,CCR决定占空比

        2,PWM_SETPrescaler(720-1);     //频率=72M/(PSC+1)/(ARR+1)
             PWM_SetCompare1(50);      //Duty = CCR/(ARR+1)

        3,初始化IC对照基本结构来

                3.1  RCC开钟,开GPIO和TIM

                3.2 GPIO初始化,把GPIO配置成输入模式(一般选择上拉输入或者浮空输入模式)

                3.3 配置时基单元,让CNT计数器在内部时钟的驱动下自增运行

                3.4 配置输入捕获单元,

                3.5 选择从模式触发源(TI1FP1),调用库函数就行

                3.6 选择触发后执行Reset操作,调用库函数就行

                3.7 最后调用TIM_Cmd函数,开启定时器

        4,库函数介绍

                4.1     IC_Init  初始化输入捕获单元(单一配置一个通道),四个通道共用一个函数,

                            TIM_OC4Init,每个通道单独占一个函数

                4.2  TIM_PWMIConfig   初始化输入捕获单元(快速配置两个通道),

                4.3  TIM_ICStructlnit,可以给输入捕获结构体赋一个初始值

                4.4  TIM_SelectlnputTrigger,选择输入触发源TRGI(对应从模式的触发源选择)

                4.5  TIM_SelectOutputTrigger,选择输出触发源TRGO(对应主模式输出的触发源)

                4.6  TIM_SelectSlaveMode,选择从模式(对应从模式选择部分)

                4.7  TIM SetlC1, 2. 3. 4Prescaler,分别单独配置通道1、2、3、4的分频器

                4.8 TIM_GetCapture1,2,3,4,和SetCompare1,2,3,4对应,

                          都是读写CCR寄存器

                          输出比较模式下,CCR是只写的,要用SetCompare写入      

                          输入捕获模式下,CCR是只读的,要用GetCapture读出

        5,attention:滤波器和分频器都是计次的

              5.1    滤波器计次,不会改变信号的原有频率,一般滤波器的采样频率会远高于信号频率
                        所以它只会滤除高频噪声,使信号更平滑

              5.1  分频器就是对信号本身进行计次了,会改变频率

        6,TIM_ICPSC_DIV1每次触发都有效,不分频

二十七,PWIM模式测频率占空比

        1,开两个通道,图1 效果等于图2

                只需要传入一个通道参数,在函数里,会自动把剩下的一个通道初始化成相反配置

                        该模式只支持通道1,2

601961679a9649a5b15a75324af0337a.png387dec572be54b709329a53a47cd49a2.png二十八,编码器接口简介

        1,CH3,CH4不能接编码器

f59e4781ab254070b1534efe36ea25c0.png二十九,正交编码器

        1,一般有两个信号输出引脚,一个是A相,一个是B相

        2,转得越快,方波的频率越高,方波的频率代表速度

        3,正转时,A相提前B相90度。反转时,A相滞后B相90度。这两个定义是相对的

        4,用正交信号相比较单独定义一个方向引脚的好处:

                4.1 正交信号精度更高,因为A、B相都可以计次,相当于计次频率提高了一倍

                4.2 正交信号可以抗噪声,因为正交信号的两个信号是交替跳变的,

                        所以可以设计一个抗噪声电路,

                        如果一个信号变,另一个不变,就是产生噪声,此时计次值是不会变化的

         5,当出现某一个边沿时,判断另一相的高低电平,在正转表就是正转,在反转表就是反转

                                                     b8363d23fec54214939e779a196f6e68.png

三十,编码器接口基本结构

        1输入捕获的前两个通道,通过GPIO口接入编码器的A、B相

        2 然后通过滤波器和边沿检测极性选择,产生TIFP1和TIFP2,通向编码器接口,

        3 编码器接口通过预分频器控制CNT计数器的时钟

        4 同时,编码器接口还根据编码器的旋转方向,控制CNT的计数方向

        5  编码器正转时,CNT自增,编码器反转时,CNT自减

473387f397804e84be84d21bab1a6b30.png

三十一,工作模式

        1,TI1FP1和TI2FP2接的是编码器的A、B相

        2, 在A相和B相的上升沿或下降沿触发计数

        3,向上计数还是向下计数,取决于另一相的电平状态(即此处的相对信号的电平)

        4,有效边沿,三种模式:仅在A相边沿计数,仅在B相边沿计数,AB相边沿都计数

ebb4a3465a2f4b80ad7aa66266f79c2f.png

tips:正向的都向上计数,反向的都向下计数

01487da96e514da2bf9270550c3289cf.png

三十二,实例图

        1,下图两个引脚都不反向

3f3ff6aa23084afc90d445cec7445f54.png

        2,极性的变化对计数的影响,下图为TI1反相,TI2不反相

                

955af0950e944f038204199503a8bedd.png

三十三,编码器测速

         1,初始化Encoder,根据编码器接口基本结构配置

                1.1 RCC开钟,开GPIO和TIM

                1.2 配置GPIO,把PA6,PA7配成输入模式

                1.3 配置时基单元:预分频器选择不分频,自动重装一般给最大65535只需要CNT执行计数就行

                1.4 配置输出捕获单元(这里只有滤波器和极性两个参数有用)

                1.5 配置编码器接口模式:调用库函数就可以

                1.6 调用TIM_Cmd,启动定时器

        2,电路完成后,CNT就会随着编码器自增自减。

                        如果想量出编码器位置,直接读出CNT的值

                        如果想测量编码器的速度和方向,需要每隔一段固定的闸门时间,取出一次CNT,再把CNT清零,这就是测频法测量速度了

        3,库函数介绍

                TIM_EncoderInterfaceConfig  定时器编码器接口配置

  (参数1:定时器,参数2:编码器模式,参数3:通道1的电平极性,参数4:通道2的电平极性)

        4,不需要定时器内部时钟配置,  因为编码器接口会托管时钟       

                编码器接口就是一个带方向控制的外部时钟,所以内部时钟没有用 

        5,不需要计数器模式,因为计数方向会被编码器接口托管   

        6,自动重装值,给65536-1,即满量程计数,这样的计数范围是最大的,方便换算为负数              7,预分频器,改成1-1,预分频器给0,就是不分频。编码器的时钟,直接驱动计数器                    8,TIM_EncoderInterfaceConfig要在TIM_ICInit后面,否则会被覆盖

        9,反转改负数,强制转换类型

82512ad2a88841b0934c197c60f18eba.png

1315a0dac66b476d9dc05faf29191572.png

        10,修改极性,即正反转与增减对应情况

                        10.1硬件:A,B两根线换一下

                        10.2 软件:任意修改一个极性,修改两个就还是不变

1cc419e2ac3243df994db74de22b8a89.png

        11,实现编码器测速:在固定的闸门读一次CNT,然后把CNT清零

                        需要定义一个临时变量

6981fbb882a844a0beb876e7e6f81f63.pngbbac0e9d3d134ef9922f93ba2171a570.png

        12,该处用Delay_ms(1000);实现闸门时间,最好不要在主循环加入过长的  Delay

 

 

作者:nosaes

物联沃分享整理
物联沃-IOTWORD物联网 » STM32__TIM

发表回复