怎么用ccs软件产生一个占空比可调的程序?
1.void Generator_pwm(int Frequency, unsigned char Duty_precent )
Generator_pwm(1000, 80)
2 int PWM_Measure(void)
//测量返回值是以微妙为单位的正数
main()
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
怎么用ccs软件产生一个占空比可调的程序?
1.void Generator_pwm(int Frequency, unsigned char Duty_precent )
Generator_pwm(1000, 80)
2 int PWM_Measure(void)
//测量返回值是以微妙为单位的正数
main()
楼主,
你是要实现两个函数吗?PWM产生请参考下面的代码(P2.6产生PWM波),再把它编成函数;PWM测量是测量周期吗?
#include <msp430.h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P2DIR |= 0x40;
P2SEL |= 0x40;
P2SEL &= ~0x80;
P2SEL2&=~0xC0;
TA0CCR0 = 512-1; // PWM Period
TA0CCTL1 = OUTMOD_7; // CCR1 reset/set
TA0CCR1 = 384; // CCR1 PWM duty cycle
TA0CTL = TASSEL_2 + MC_1; // SMCLK, up mode
// _BIS_SR(CPUOFF); // Enter LPM0
While(1)
{
}
}
你好,
你要明确PWM的频率是多少,光光只是产生一路PWM可调没有太多价值。
首先你要确定MCU系统时钟。
然后根据调整TA0CCR0 控制PWM频率。
利用CCR1控制占空比周期。
通过选择硬件PWM模式,再做输出。
这样做才有逻辑。
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 = CALBC1_1MHZ; // Set range
DCOCTL = CALDCO_1MHZ; //设置DCO模式
P2DIR |= 0x40;
P2SEL |= 0x40;
P2SEL &= ~0x80;
P2SEL2&=~0xC0;
TA0CCR0 = 512-1; // PWM Period
TA0CCTL1 = OUTMOD_7; // CCR1 reset/set
TA0CCR1 = 384; // CCR1 PWM duty cycle
TA0CTL = TASSEL_2 + MC_1; // SMCLK, up mode
// _BIS_SR(CPUOFF); // Enter LPM0
While(1);
}
你好,
这是专门用来设置内部DCO时钟,G2xx系列MCU你也知道,是不支持外部高频晶振的,一般用内部的DCO时钟,DCO时钟出厂前,我们有把校准数据存放于information memory。CALBC1_1MHZ和CALDCO_1MHZ是直接读取校准的1M时钟数据给BCSCTL1和DCOCTL寄存器。
这样DCO时钟就是1M HZ 了!