MSPM0L系列的通用定时器(TIMG)是一个16位的自动重装定时器,支持向下和上下计数两种模式,同时带有两个比较捕获单元,可以做到输出比较,输入捕获,PWM输出,单脉冲输出等功能。
定时器还支持正交编码器结果(QEI),多定时器间的交叉触发和同步,以及触发其他外设,例如ADC,DAC等,下图是各个TIMG的配置。
TIMG可以选择BUSCLK,MFCLK,LFCLK作为时钟源,可以最大8分频时钟,再经过一个8位的预分频器,最终称为定时器的计数时钟。
实操例程1
下面通过SYSCONFIG来配置一个1s的定时器,用来翻转IO,在SYSCONFIG的定时器外设选项卡中,定时器不同的功能已经分开配置了,根据需要选择不同的选项卡,我们是纯定时,所以就在最下面的一个。
在配置界面中,时钟选择32MHz的总线时钟,分频系数为8,预分频为64,最终定时器时钟也就是62.5KHz,填入我们需要的定时周期1000ms,系统会自己算出寄存器的装载值。
因为这个配置中,系统使用的是向下计数模式,所以中断部分选择计数到0事件
GPIO的配置方法已经在前面的教程里说过了,这里就不在重复。
在程序初始化后,使能定时器中断,开启定时器就可以了,在中断函数中翻转IO口,就可以完成1s钟翻转IO的程序了
配套例程名为TIM_toggleIO,需要复制到SDK目录下运行。
实操例程2
下面配置一个PWM输出的例子。
PWM输出是使用的是定时器的比较功能,MSPMPL系列每个定时器可以输出2个通道的同周期不同占空比的PWM。
有两种PWM模式,一个是边缘对齐PWM,其实就是定时器使用的向下计数模式,输出通道在定时器计数开始的时候会输出高电平,当计数值与输出通道的比较值相同的时候,输出通道会输出低电平一直到定时器的计数值计数到0,就完成了一个周期的脉冲输出。
另外一个数中心对齐PWM,也就是定时器的上下计数模式,输出通道会在定时器开始的时候输出低电平,在定时器向上计数和向下计数两次到达输出通道的比较值相等的时候各翻转一次电平。
输出通道初始电平在定时器未开始计数的时候可以在OCTL_xx寄存器中修改,比较输出通道的电平也可以在此寄存器中修改成翻转输出。
这里设置两个100Hz,50%占空比的PWM,其中一个通道为翻转输出。
在SYSCONFIG的TIMER-PWM选项卡中,设置好对应的时钟和分频,以及PWM周期计数值,系统会自动计算出PWM频率。
在PWM设置里面,选择PWM模式,这里选的是边缘对齐,选择双通道输出,每个填入通道的期望占空比,系统会自己计算出计数值以及实际占空比,通道初始状态也可以在这里设置,这里默认不动,我们把0通设置为翻转输出。
最后在PinMux配置好具体的输出管脚。
在程序里开启定时器就可以输出PWM了。
示波器抓一下,可以看到对应管脚已经产生了配置所需的PWM。
配套例程名为TIM_PWM,需要复制到SDK目录下运行。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !