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)
{
}
}
程序运行后用示波器量相应的引脚,却没有想要的方波出现啊?求大神帮忙看看,什么原因。
hong she:
回复 xyz549040622:
怎么讲?我昨晚弄了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,兄台有这方面的经验吗?求指教。
xyz549040622:
回复 hong she:
你的风扇是用什么驱动的了,是不是因为TM4的IO驱动能力不够呢?
hong she:
回复 xyz549040622:
风扇那边有3根线,电源,接地,和一根PWM输入的。这个风扇是上电就能转,后面都是通过调节PWM频率来控制风扇的转速。看原理图上面应该是GPIO口输出的PWM信号经过一个芯片把信号源放大来驱动风扇。你说到IO的驱动能力不够,我查看代码发现在设置GPIO的配置时,有设置2mA,8mA之类的这个,好像一般都是用的2mA,可能跟这个有关?试试看吧。可能我说的有些不清楚,见谅哈!
xyz549040622:
回复 hong she:
这个帖子被淹没了,我的qq邮箱收不到TI发的邮件,不知道哪里设置错了,没有及时跟进。不知道楼主调试的咋样啦?成功了没有
JunZhu Dou:
回复 xyz549040622:
怎么控制PWM0和PWM1反转?实现电机的正反转呢?我看到PWM有个反相功能是不是这个意思?
xyz549040622:
回复 JunZhu Dou:
电机是通过PWM波的占空比,来控制对电机的供电电压的大小,从而控制电机的转动速率。你控制PWM占空比就可以了
xyz549040622:
回复 JunZhu Dou:
仔细查了查资料,更正下我的理解。比如三相的电机,有A,B,C三相,你控制这三相的时序和频率就可以控制电机了。PWM的反相功能正是这个意思。