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.

急求! TM4C123G6HPM PWM 脉宽输出中PC5引脚的问题。参照库中的接口,程序如下:

int main()

{

SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ);

SysCtlPWMClockSet(SYSCTL_PWMDIV_1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);


GPIOPinConfigure(GPIO_PC5_M0PWM7);

GPIOPinTypePWM(GPIO_PORTC_BASE, GPIO_PIN_5);


PWMGenConfigure(PWM0_BASE, PWM_GEN_3, PWM_GEN_MODE_DOWN |
PWM_GEN_MODE_NO_SYNC);

PWMGenPeriodSet(PWM0_BASE, PWM_GEN_3, 100);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, 25);

PWMOutputState(PWM0_BASE, PWM_OUT_7_BIT, true);
PWMGenEnable(PWM0_BASE, PWM_GEN_3);

while(1)
{
}

}

程序运行后用示波器量相应的引脚,却没有想要的方波出现啊?求大神帮忙看看,什么原因。

  • 个人认为是你的PWM的初始化顺序出了问题,建议参考官方的PWM的初始化顺序。

  • 怎么讲?我昨晚弄了2个小时发现那个PC5端口要解锁才行,有输出,官方sample里面用的PB0不需要这一步,所以我加了如下:

    HWREG(GPIO_PORTC_BASE+GPIO_O_LOCK) = 0x4C4F434B;
    HWREG(GPIO_PORTC_BASE+GPIO_O_CR) |= 0XFF;
    HWREG(GPIO_PORTC_BASE+GPIO_O_LOCK) =0;

    但是新问题来了,现在我PWM有输出,但是去控制风扇却不行。蛋疼啊!!!

    我用的风扇是AFB0712LB,兄台有这方面的经验吗?求指教。

  • 你的风扇是用什么驱动的了,是不是因为TM4的IO驱动能力不够呢?

  • 风扇那边有3根线,电源,接地,和一根PWM输入的。这个风扇是上电就能转,后面都是通过调节PWM频率来控制风扇的转速。看原理图上面应该是GPIO口输出的PWM信号经过一个芯片把信号源放大来驱动风扇。你说到IO的驱动能力不够,我查看代码发现在设置GPIO的配置时,有设置2mA,8mA之类的这个,好像一般都是用的2mA,可能跟这个有关?试试看吧。可能我说的有些不清楚,见谅哈!

  • 这个帖子被淹没了,我的qq邮箱收不到TI发的邮件,不知道哪里设置错了,没有及时跟进。不知道楼主调试的咋样啦?成功了没有

  • 怎么控制PWM0和PWM1反转?实现电机的正反转呢?我看到PWM有个反相功能是不是这个意思?

  • 电机是通过PWM波的占空比,来控制对电机的供电电压的大小,从而控制电机的转动速率。你控制PWM占空比就可以了

  • 仔细查了查资料,更正下我的理解。比如三相的电机,有A,B,C三相,你控制这三相的时序和频率就可以控制电机了。PWM的反相功能正是这个意思。