共2条
1/1 1 跳转至页

问
请问用定时器TB实现PWM是不是只要设置输出模式以及启动定时器设置并启动定时器就能在对应的输出管脚上输出PWM,而不用中断,我试了但在IAR软件仿真时,输出寄存器一直没反映,不知道是不是我理解错误,请大家帮忙,非常感谢!!!
答 1:
你把程序贴上,大家看看就明白了
答 2:
理解应是没问题,可参考提供的PWM例程
答 3:
引脚功能切换了没?
答 4:
可以参照例子做一下
答 5:
参考例程:
// Description; This program will generate a two PWM outputs on P1.2/1.3 using
// Timer_A in an upmode. The value in CCR0, defines the period and the
// values in CCR1 and CCR2 the duty PWM cycles. Using ~ 800kHz SMCLK as TACLK,
// the timer period is ~ 640us with a 75% duty cycle on P1.2 and 25% on P1.3.
// ACLK = na, SMCLK = MCLK = TACLK = default DCO ~ 800kHz.
//
// MSP430F1121
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// | P1.2|--> CCR1 - 75% PWM
// | P1.3|--> CCR2 - 25% PWM
//
// M.Buccini
// Texas Instruments, Inc
// September 2003
// Built with IAR Embedded Workbench Version: 1.26B
// January 2004
// Updated for IAR Embedded Workbench Version: 2.21B
//******************************************************************************
#include <MSP430x11x1.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x0C; // P1.2 and P1.3 output
P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 otions
CCR0 = 512-1; // PWM Period
CCTL1 = OUTMOD_7; // CCR1 reset/set
CCR1 = 384; // CCR1 PWM duty cycle
CCTL2 = OUTMOD_7; // CCR2 reset/set
CCR2 = 128; // CCR2 PWM duty cycle
TACTL = TASSEL_2 + MC_1; // SMCLK, up mode
_BIS_SR(CPUOFF); // Enter LPM0
} 答 6: //MSP430F149的P4.2输出可调的PWM
#include <MSP430x14x.h>
void set_fre(unsigned int freq)
{
TBCTL = TBSSEL1 + TBCLR; // 选择SMCLK 为时钟定时器清除
TBCCTL0=CCIE;
TBCCR0 = 665;
TBCCTL1=OUTMOD_7+CLLD_1;
TBCCR1 = freq;
P4DIR |= 0x02;
P4SEL |= 0x02;
TBCTL |= MC_1+CNTL_0+TBCLGRP_0; //选择up,16 位模式
} 答 7: 我曾经用软件仿真时一直不能中断,而下载到硬件中却是可以得。
所以我怀疑有的时候iar的软件仿真不一定能反映真实的接过。
也许是我的iar软件有问题。 答 8: 看看斑竹的例程好处多多啊! 答 9: 哦!低版本的软件仿真好象实现不了。
// Description; This program will generate a two PWM outputs on P1.2/1.3 using
// Timer_A in an upmode. The value in CCR0, defines the period and the
// values in CCR1 and CCR2 the duty PWM cycles. Using ~ 800kHz SMCLK as TACLK,
// the timer period is ~ 640us with a 75% duty cycle on P1.2 and 25% on P1.3.
// ACLK = na, SMCLK = MCLK = TACLK = default DCO ~ 800kHz.
//
// MSP430F1121
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// | P1.2|--> CCR1 - 75% PWM
// | P1.3|--> CCR2 - 25% PWM
//
// M.Buccini
// Texas Instruments, Inc
// September 2003
// Built with IAR Embedded Workbench Version: 1.26B
// January 2004
// Updated for IAR Embedded Workbench Version: 2.21B
//******************************************************************************
#include <MSP430x11x1.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x0C; // P1.2 and P1.3 output
P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 otions
CCR0 = 512-1; // PWM Period
CCTL1 = OUTMOD_7; // CCR1 reset/set
CCR1 = 384; // CCR1 PWM duty cycle
CCTL2 = OUTMOD_7; // CCR2 reset/set
CCR2 = 128; // CCR2 PWM duty cycle
TACTL = TASSEL_2 + MC_1; // SMCLK, up mode
_BIS_SR(CPUOFF); // Enter LPM0
} 答 6: //MSP430F149的P4.2输出可调的PWM
#include <MSP430x14x.h>
void set_fre(unsigned int freq)
{
TBCTL = TBSSEL1 + TBCLR; // 选择SMCLK 为时钟定时器清除
TBCCTL0=CCIE;
TBCCR0 = 665;
TBCCTL1=OUTMOD_7+CLLD_1;
TBCCR1 = freq;
P4DIR |= 0x02;
P4SEL |= 0x02;
TBCTL |= MC_1+CNTL_0+TBCLGRP_0; //选择up,16 位模式
} 答 7: 我曾经用软件仿真时一直不能中断,而下载到硬件中却是可以得。
所以我怀疑有的时候iar的软件仿真不一定能反映真实的接过。
也许是我的iar软件有问题。 答 8: 看看斑竹的例程好处多多啊! 答 9: 哦!低版本的软件仿真好象实现不了。
共2条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
【OZONE】使用方法总结被打赏20分 | |
【S32K314】芯片启动流程分析被打赏20分 | |
【LP-MSPM0L1306】适配 RT-Thread Nano被打赏20分 | |
今天的咸鱼也是曾经鱼跃龙门的天纵之才,中流击水,浪遏飞舟,粪土当年万户侯,数风流人物,还看今朝,被打赏5分 | |
分享一种检测按键状态的方法被打赏20分 | |
周末总结一下,STM32C0系列的开发经验被打赏50分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下定时器配置被打赏20分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下PWM配置被打赏20分 | |
【Cortex-M】Systick Timer使用被打赏10分 | |
分享汽车防盗系统的组成与分类(一)被打赏5分 |