之 PWM模式
时间:10-02
整理:3721RD
点击:
CC3200 的 PWM 模式:
CC3200 的 PWM 只能是 16BIT,不能是 32BIT,具有分频功能。计数
方向向下。
图一
从上图可以看出需要三个参数:溢出值,比较值,输出电平。
虽然pwm的计数器是16bit,但是其实是24bit的,请看下图
图二
为什么说是24bit?PWM的计数器是16bit的,分频器是8bit,16
加8 = 24bit,计数器的16bit是高位。通常我们认为分频是是直接对
时钟信号进行分频,然后给计数器,计数器的值就i++(i——),当i
等于比较值,输出的电平就翻转。如果是这样理解的话,就错了。
如果你直接打印出 PWM的计数器,就会发现,只要你设置了分频
器的值不为0,其值有可能远远大于 65535,一般性的我们也认为比
较值一般是放在一个32bit的寄存器里面,但是TI又给了我们很大
一个惊喜,那就是这个值有可能是放在两个寄存器里面的,下图就
是存放比较值的一个寄存器,如果计数器是32bit,那么这个寄存器
就是32bit,如果是16bit,那么这个寄存器就是 16bit。
图三
那么我们已经知道计数器其实是 24bit,但是这个寄存器却是
16bit,那么 24bit 根本就不能跟 16bit 进行相比较,(实验中如果你
单纯地设置这 16bit,你的PWM就不能输出占空比为90%),那么肯
定有其他的寄存器存放了这 8bit,经过找啊找发现了这个寄存器,
看到红框框没有,23:16bit的值就是放在这个寄存器里面。
图四
至此我们发现了 PWM如何去设置Pwm的分频,CC3200的例程给的
是没有设置分频,所以你设置分频,记得一定要修改这个寄存器,
这个寄存器包含了比较值的高 8bit,请记住CC3200的 PWM的计数
器其实24bit的。不是 16bit的。
下面给出修改这个寄存器的库函数
TimerPrescaleMatchSet(ulBase,ulTimer,69);
CC3200 的 PWM 只能是 16BIT,不能是 32BIT,具有分频功能。计数
方向向下。
图一
从上图可以看出需要三个参数:溢出值,比较值,输出电平。
虽然pwm的计数器是16bit,但是其实是24bit的,请看下图
图二
为什么说是24bit?PWM的计数器是16bit的,分频器是8bit,16
加8 = 24bit,计数器的16bit是高位。通常我们认为分频是是直接对
时钟信号进行分频,然后给计数器,计数器的值就i++(i——),当i
等于比较值,输出的电平就翻转。如果是这样理解的话,就错了。
如果你直接打印出 PWM的计数器,就会发现,只要你设置了分频
器的值不为0,其值有可能远远大于 65535,一般性的我们也认为比
较值一般是放在一个32bit的寄存器里面,但是TI又给了我们很大
一个惊喜,那就是这个值有可能是放在两个寄存器里面的,下图就
是存放比较值的一个寄存器,如果计数器是32bit,那么这个寄存器
就是32bit,如果是16bit,那么这个寄存器就是 16bit。
图三
那么我们已经知道计数器其实是 24bit,但是这个寄存器却是
16bit,那么 24bit 根本就不能跟 16bit 进行相比较,(实验中如果你
单纯地设置这 16bit,你的PWM就不能输出占空比为90%),那么肯
定有其他的寄存器存放了这 8bit,经过找啊找发现了这个寄存器,
看到红框框没有,23:16bit的值就是放在这个寄存器里面。
图四
至此我们发现了 PWM如何去设置Pwm的分频,CC3200的例程给的
是没有设置分频,所以你设置分频,记得一定要修改这个寄存器,
这个寄存器包含了比较值的高 8bit,请记住CC3200的 PWM的计数
器其实24bit的。不是 16bit的。
下面给出修改这个寄存器的库函数
TimerPrescaleMatchSet(ulBase,ulTimer,69);