Other Parts Discussed in Thread: MSP430FR6989
工具/软件:Code Composer Studio
大家好。
我尝试在 MSP430FR6989中配置 PWM 信号。 我是这个 UC 的新编程、因此我不知道我是否正确。 我使用芯片的引脚12来生成 PWM 的输出信号、这对应于 TimerB0.1。 需要注意的是、我尝试按照手册的指南配置 PWM、但我测量该引脚、并且我没有获得 PWM 信号。 我选择了用于生成 PWM_Duty 值的随机值。 如果有人知道我的代码有什么问题、请提供帮助!
//使用的库
#include
#include
#include
//变量
float PWM_Duty = 0;
//计时器到 PWM 信号
void timer_B0_Init ()
{
TB0CCTL3 &=~(CCIE);//中断被禁用以配置 PWM
TB0CCR0 = 100; // PWM 周期
TB0CTL = TBSSEL_SMCLK | MC__UP | TBCLR;// SMCLK、向上计数模式、清除 TBR
TB0CCTL3 = OUTMOD_7; // CCR3复位/置位
TB0CCTL3 |= CCIE;//配置完成,中断启用
}
// PWM
void ControlPWMDuty()的配置
{
float D1= 50;
float D2= 70;
PWM_Duty =(D1+D2)/2;
TB0CCR3 = PWM_DUTY; // CCR3 PWM 占空比
}
//引脚的初始配置
void set_up_gpio()
{
///PWM 引脚作为输出
P6DIR |= BIT5;
//将引脚设置为低电平
P6OUT &=~(BIT4);
}
//设置 ADC、PWM 和电机驱动
器的引脚 void InitGPIO ()
{
//对于计时器 B,它必须为01
P6SEL0 |= BIT5;
P6SEL1 &=~(BIT4);
}
int main (void)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
SET_UP_GPIO();
InitGPIO();
PM5CTL0 &=~LOCKLPM5;//禁用 GPIO 上电默认高阻抗模式以激活先前配置的端口设置
Timer_B0_Init();
_bis_SR_register (GIE);//允许常规中断
while (1)
{
ControlPWMDuty();
__DELAY_CYCLES (4000000);
}
}
#if defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__)
#pragma vector = Timer1_B0_vector
__interrupt void Timer1_B0_ISR (void)
#elif defined (__GNU__)
void __attribute__(interrupt (interrupt (Timer1_b0_ISR)#vector #b0_ISR
(void)#b0_b0_b0)!错误!
#endif
{
TB0CTL|= TBCLR; //清除计时器 B0
}
