3201|1

182

帖子

2

TA的资源

一粒金砂(中级)

楼主
 

关于TM4c123X的PWM输出 [复制链接]

TM4c123gh6pm只能输出两路pwm吗,如果配置才能输出四路pwm啊

最新回复

#include #include #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" #define GPIO_PB6_M0PWM0         0x00011804 #define GPIO_PB7_M0PWM1         0x00011C04 #define GPIO_PB4_M0PWM2         0x00011004 #define GPIO_PB5_M0PWM3         0x00011404 void PWM_init(void) {         //PWM时钟配置:64分频         SysCtlPWMClockSet(SYSCTL_PWMDIV_64);         //使能PWM0模块         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);         //使能PWM0模块         SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);     //GPIO引脚配置         GPIOPinConfigure(GPIO_PB7_M0PWM1);         GPIOPinConfigure(GPIO_PB6_M0PWM0);         GPIOPinConfigure(GPIO_PB5_M0PWM3);         GPIOPinConfigure(GPIO_PB4_M0PWM2);         //配置引脚为PWM功能         GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7);         GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6);         GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_5);         GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4);         //配置PWM发生器0和发生器1:加减计数不分频         PWMGenConfigure(PWM0_BASE, PWM_GEN_0,PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);         PWMGenConfigure(PWM0_BASE, PWM_GEN_1,PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);         //设置PWM发生器1的频率,时钟频率/pwm分频数/n,80M/64/3125=400hz         PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, 3125);         PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, 3125);         //设置PWM0/PWM1输出的脉冲宽度         PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 1200);         PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, 1200);         PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, 1200);         PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, 1200);     //使能PWM发生器         PWMGenEnable(PWM0_BASE, PWM_GEN_0);         PWMGenEnable(PWM0_BASE, PWM_GEN_1);         //使能PWM0和PWM1的输出         PWMOutputState(PWM0_BASE, (PWM_OUT_0_BIT), true);         PWMOutputState(PWM0_BASE, (PWM_OUT_1_BIT), true);         PWMOutputState(PWM0_BASE, (PWM_OUT_2_BIT), true);         PWMOutputState(PWM0_BASE, (PWM_OUT_3_BIT), true); } void GPIOPin_init(void) {         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);                //使能启动GPIOF         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);                //使能启动GPIOD         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);                //使能启动GPIOA         GPIOPinTypeGPIOInput(GPIO_PORTD_BASE,GPIO_PIN_6|GPIO_PIN_2);  //设置GPIOD_PIN2、6 为输入         GPIOPinTypeGPIOInput(GPIO_PORTA_BASE,0x3C);                                    //设置GPIOA_PIN2-7 为输入         GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4);         GPIODirModeSet(GPIO_PORTD_BASE,GPIO_PIN_6|GPIO_PIN_2,GPIO_DIR_MODE_IN);         GPIODirModeSet(GPIO_PORTA_BASE,0x3C,GPIO_DIR_MODE_IN);         GPIOPadConfigSet(GPIO_PORTD_BASE,GPIO_PIN_6|GPIO_PIN_2,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);//上拉         GPIOPadConfigSet(GPIO_PORTA_BASE,0x3C,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); } void StartElCo(void) {         uint32_t h0=1250,h1=1250,h2=1250,h3=1250,i;         SysCtlDelay(48000000);//2s         for(i=0;i  详情 回复 发表于 2014-9-5 01:22
 
点赞 关注

回复
举报

24

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
#include
#include
#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"

#define GPIO_PB6_M0PWM0         0x00011804
#define GPIO_PB7_M0PWM1         0x00011C04
#define GPIO_PB4_M0PWM2         0x00011004
#define GPIO_PB5_M0PWM3         0x00011404

void PWM_init(void)
{
        //PWM时钟配置:64分频
        SysCtlPWMClockSet(SYSCTL_PWMDIV_64);
        //使能PWM0模块
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
        //使能PWM0模块
        SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);

    //GPIO引脚配置
        GPIOPinConfigure(GPIO_PB7_M0PWM1);
        GPIOPinConfigure(GPIO_PB6_M0PWM0);
        GPIOPinConfigure(GPIO_PB5_M0PWM3);
        GPIOPinConfigure(GPIO_PB4_M0PWM2);

        //配置引脚为PWM功能
        GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7);
        GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6);
        GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_5);
        GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4);

        //配置PWM发生器0和发生器1:加减计数不分频
        PWMGenConfigure(PWM0_BASE, PWM_GEN_0,PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
        PWMGenConfigure(PWM0_BASE, PWM_GEN_1,PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);

        //设置PWM发生器1的频率,时钟频率/pwm分频数/n,80M/64/3125=400hz
        PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, 3125);
        PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, 3125);

        //设置PWM0/PWM1输出的脉冲宽度
        PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 1200);
        PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, 1200);
        PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, 1200);
        PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, 1200);

    //使能PWM发生器
        PWMGenEnable(PWM0_BASE, PWM_GEN_0);
        PWMGenEnable(PWM0_BASE, PWM_GEN_1);

        //使能PWM0和PWM1的输出
        PWMOutputState(PWM0_BASE, (PWM_OUT_0_BIT), true);
        PWMOutputState(PWM0_BASE, (PWM_OUT_1_BIT), true);
        PWMOutputState(PWM0_BASE, (PWM_OUT_2_BIT), true);
        PWMOutputState(PWM0_BASE, (PWM_OUT_3_BIT), true);

}

void GPIOPin_init(void)
{
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);                //使能启动GPIOF
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);                //使能启动GPIOD
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);                //使能启动GPIOA

        GPIOPinTypeGPIOInput(GPIO_PORTD_BASE,GPIO_PIN_6|GPIO_PIN_2);  //设置GPIOD_PIN2、6 为输入
        GPIOPinTypeGPIOInput(GPIO_PORTA_BASE,0x3C);                                    //设置GPIOA_PIN2-7 为输入
        GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4);

        GPIODirModeSet(GPIO_PORTD_BASE,GPIO_PIN_6|GPIO_PIN_2,GPIO_DIR_MODE_IN);
        GPIODirModeSet(GPIO_PORTA_BASE,0x3C,GPIO_DIR_MODE_IN);

        GPIOPadConfigSet(GPIO_PORTD_BASE,GPIO_PIN_6|GPIO_PIN_2,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);//上拉
        GPIOPadConfigSet(GPIO_PORTA_BASE,0x3C,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);

}
void StartElCo(void)
{
        uint32_t h0=1250,h1=1250,h2=1250,h3=1250,i;
        SysCtlDelay(48000000);//2s
        for(i=0;i<4;i++)
        {
                SysCtlDelay(2400000); //100ms
                if(h0<1643)
                {
                        h0+=110;
                        h1+=110;
                        h2+=110;
                        h3+=110;
                }
                if(h0>=1643)
                {
                        h0=1643;
                        h1=1643;
                        h2=1643;
                        h3=1643;
                }
                PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, h0);
                PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, h1);
                PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, h2);
                PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, h3);
        }
        //        SysCtlDelay(24000000); //1s
}
int main(void)
{
        //系统和时钟设置
        SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
        PWM_init();   //PWM中断
        StartElCo();  //启动电调
        while(1);
}
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表