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.

TM4C123GXL PWM配置



#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/rom.h"
#include "driverlib/gpio.h"
#include "driverlib/pwm.h"
#include "driverlib/fpu.h"
#include "driverlib/pin_map.h"

int main (void)
{

        //设置系统时钟为80MHz
        SysCtlClockSet(SYSCTL_SYSDIV_2_5 |SYSCTL_USE_PLL|SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
        SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);//使能PWM0模块
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);//使能PWM0输出所在GPIO
        SysCtlPWMClockSet(SYSCTL_PWMDIV_1);     // PWM时钟配置:不分频
        GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4);
        GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_5);
        GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6);
        GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7);

        GPIOPinConfigure(GPIO_PB6_M0PWM0);    //#define GPIO_PB6_M0PWM0         0x00011804
        GPIOPinConfigure(GPIO_PB7_M0PWM1);    //#define GPIO_PB7_M0PWM1         0x00011C04
        GPIOPinConfigure(GPIO_PB4_M0PWM2);    //#define GPIO_PB4_M0PWM2         0x00011804
        GPIOPinConfigure(GPIO_PB5_M0PWM3);    //#define GPIO_PB5_M0PWM3         0x00011C04
        //配置PWM发生器0:加减计数,不同步
        PWMGenConfigure(PWM0_BASE,PWM_GEN_0,PWM_GEN_MODE_UP_DOWN| PWM_GEN_MODE_NO_SYNC);
        //设置PWM发生器0的频率,时钟频率/PWM分频数/n,80M/1/800=100KHZ
        PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, 800);
        //设置PWM01输出的脉冲宽度
        PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 400);//50%占空比
        PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, 300);//
        PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, 400);//
        PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, 400);//
        //使能PWM0输出
        PWMOutputState(PWM0_BASE, (PWM_OUT_0_BIT |PWM_OUT_1_BIT|PWM_OUT_2_BIT|PWM_OUT_3_BIT), true);
        //使能PWM发生器
        PWMGenEnable(PWM0_BASE, PWM_GEN_0);
        while(1);
}

PB6_PWM0,PB7_PWM1正常 PB4_PWM2,PB5_PWM3   没有输出 哪里配置有问题

  •  

    #include <stdint.h>
    #include <stdbool.h>
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/rom.h"
    #include "driverlib/gpio.h"
    #include "driverlib/pwm.h"
    #include "driverlib/fpu.h"
    #include "driverlib/pin_map.h"

    int main (void)
    {

            //设置系统时钟为80MHz
            SysCtlClockSet(SYSCTL_SYSDIV_2_5 |SYSCTL_USE_PLL|SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
            SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);//使能PWM0模块
            SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);//使能PWM0输出所在GPIO
            SysCtlPWMClockSet(SYSCTL_PWMDIV_1);     // PWM时钟配置:不分频
            GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4);
            GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_5);
            GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6);
            GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7);

            GPIOPinConfigure(GPIO_PB6_M0PWM0);    //#define GPIO_PB6_M0PWM0         0x00011804
            GPIOPinConfigure(GPIO_PB7_M0PWM1);    //#define GPIO_PB7_M0PWM1         0x00011C04
            GPIOPinConfigure(GPIO_PB4_M0PWM2);    //#define GPIO_PB4_M0PWM2         0x00011804
            GPIOPinConfigure(GPIO_PB5_M0PWM3);    //#define GPIO_PB5_M0PWM3         0x00011C04

            //配置PWM发生器0:加减计数,不同步
            PWMGenConfigure(PWM0_BASE,PWM_GEN_0,PWM_GEN_MODE_UP_DOWN| PWM_GEN_MODE_NO_SYNC);
            //设置PWM发生器0的频率,时钟频率/PWM分频数/n,80M/1/800=100KHZ
            PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, 800);
            //配置PWM发生器0:加减计数,不同步
            PWMGenConfigure(PWM0_BASE,PWM_GEN_1,PWM_GEN_MODE_UP_DOWN| PWM_GEN_MODE_NO_SYNC);
            //设置PWM发生器0的频率,时钟频率/PWM分频数/n,80M/1/800=100KHZ
            PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, 800);
            //设置PWM01输出的脉冲宽度
            PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 400);//50%占空比
            PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, 300);//
            PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, 400);//
            PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, 400);//
            //使能PWM0输出
            PWMOutputState(PWM0_BASE, (PWM_OUT_0_BIT |PWM_OUT_1_BIT|PWM_OUT_2_BIT|PWM_OUT_3_BIT), true);
            //使能PWM发生器
            PWMGenEnable(PWM0_BASE, PWM_GEN_0);
            PWMGenEnable(PWM0_BASE, PWM_GEN_1);
            while(1);
    }

     

  • 请问你的程序输出的PWM波电压712mv能驱动电机么???

  • 问题解决了吗