【MSP430F149学习】20 定时器A之PWM波输出
准备工具:电脑;TS8900--MSP430F149开发板;1602液晶屏;USB线一根;杜邦线两根
开发环境:IAR EW for MSP430 V5.30
定时器A工作在增计数模式
捕获/比较寄存器 T ACCR0 用作 TIMER_A 增计数模式的周期寄存器, 因为 T ACCR0 为 16
为寄存器所以该模式适用于定时器。
周期小于 65536 的连续计数情况。 计数器 T AR 可以增计数到 T ACCR0 的值,当计数值于
T ACCR0 的值相等(或定时器值大于 T ACCR0 的值)时,定时器复位并从 0 开始重新计数。
中断标志位的设置过程。当定时器的值等于 TACCR0 的值时,设置标志位 CCIFG0(捕获比较
中断标志)为 1,而当定时器从 TACCR0 计数到 0 时,设置标志位 TAIFG(定时器溢出标志)为 1。
计数过程中还可以通过改变 TACCR0 的值来重置计数周期。
当新周期大于旧周期时,定时器会直接增计数到新周期。
当新周期小于旧周期时,改变 T ACCR0 时的定时器时钟相位会影响定时器响应新周期的情况。时钟
为高时改变 T ACCR0 的值,则定时器会在下一个时钟周期上升沿返回到 0,如果时钟周期为低时改变
TACCR0 的值,则定时器接受新周期并在返回到 0 之前,继续增加一个时钟周期。
位定时器 A 模块在增计数模式下输出波形
输出模式 0 输出模式:输出信号 OUTx 由每个捕获/比较模块的控制寄存器 T ACCTLx 中的 OUTx
位定义,并在写入该寄存器 后立即更新,最终位 OUTx直通。
输出模式 1 置位模式:输出信号在 T AR 等于 T ACCRx 时置位,并保持置位到定时器复位或选
另一种输出模式为止。
输出模式 2 PWM 翻转/复位模式:输出在 T AR 的值等于 T ACCRx 时翻转,当 TAR 的值等于
TACCR0 时复位
。
输出模式 3 PWM 置位/复位模式:输出在 T AR 的值的等于 T ACCRx 时置位,当 T AR 的值等于
TACCR0 时复位。
输出模式 4 翻转模式:输出电平在 T AR 的值等于 T ACCRx 时翻转,输出周期时定时器周期的 2 倍。
输出模式 5 复位模式:输出在 T AR 的值等于 T ACCRx 时复位,并保持低电平知道选择另一种输出模式。
输出模式 6 PWM 翻转/置位模式:输出电平在 T AR 的值等于 T ACCRx 时翻转,当 T AR 值等于
TACCR0 时置位。
输出模式 7 PWM 复位/置位模式:输出电平在 T AR 的值等于 T ACCRx 时复位,当 T AR 的值等于
TACCR0 时置位。
定时器A PWM 输出简单示例
ACLK=TACLK=LFXT1=32768Hz,MCLK=SMCLK=DCOCLK=32×ACLK=1.048576MHz,利用
TIMER_A 输出周期为 512/32768=15.625ms,占空比分别为 75%和 25%的 PWM 矩形波,用于驱动板
上两个LED,查看亮度情况。
TA1 TA2 输出管脚为:P1.2 P1.3
原理图部分
硬件连接图
程序代码
#include
void main(void)
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF1OUT = 0XFF;
P2DIR = 0XFF2OUT = 0XFF;
P3DIR = 0XFF3OUT = 0XFF;
P4DIR = 0XFF4OUT = 0XFF;
P5DIR = 0XFF5OUT = 0XFF;
P6DIR = 0XFF6OUT = 0XFF;
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
P1DIR |= 0x0C; // 配置P1.2和P1.3输出模式
P1SEL |= 0x0C; // 选通P1.2和P1.3的复用功能TA1/2
CCR0 = 512-1; // PWM 周期
CCTL1 = OUTMOD_7; // 模式七 CCR1 复位/置位
CCR1 = 384; // CCR1 PWM 占空比
CCTL2 = OUTMOD_7; // 模式七 CCR2 复位/置位
CCR2 = 128; // CCR2 PWM 占空比
TACTL = TASSEL_1 + MC_1; // 时钟源ACLK, 增计数模式
_BIS_SR(LPM3_bits); // 进入低功耗模式3
}
下载运行效果
可以看到用占空比25%驱动的LED比占空比75%的LED亮这是由于LED是用灌电流驱动
【MSP430F149学习】汇总贴
|