MSP432(Keil5)——6.PWM驱动

本次实验在5个IO扣上产生了PWM波,频率计算方法已经放在了代码注释里面,请大家耐心食用。

pwm.c

#include "pwm.h"



/* Timer_A PWM Configuration Parameter */
/* fre(Hz) = clock / div / period */
/* 48000000/20/48000= 50Hz*/

/* 通道一 */
Timer_A_PWMConfig pwmConfig_c1 =
{
          
   
        TIMER_A_CLOCKSOURCE_SMCLK,
        TIMER_A_CLOCKSOURCE_DIVIDER_20,
		/* period */
        48000,
        TIMER_A_CAPTURECOMPARE_REGISTER_1,
        TIMER_A_OUTPUTMODE_RESET_SET,
        0
};


/* 通道二 */
Timer_A_PWMConfig pwmConfig_c2 =
{
          
   
        TIMER_A_CLOCKSOURCE_SMCLK,
        TIMER_A_CLOCKSOURCE_DIVIDER_10,
		/* period */
        48000,
        TIMER_A_CAPTURECOMPARE_REGISTER_2,
        TIMER_A_OUTPUTMODE_RESET_SET,
        10000
};


/* 通道三 */
Timer_A_PWMConfig pwmConfig_c3 =
{
          
   
        TIMER_A_CLOCKSOURCE_SMCLK,
        TIMER_A_CLOCKSOURCE_DIVIDER_5,
		/* period */
        2400,
        TIMER_A_CAPTURECOMPARE_REGISTER_3,
        TIMER_A_OUTPUTMODE_RESET_SET,
        500
};


/* 通道四 */
Timer_A_PWMConfig pwmConfig_c4 =
{
          
   
        TIMER_A_CLOCKSOURCE_SMCLK,
        TIMER_A_CLOCKSOURCE_DIVIDER_20,
		/* period */
        2400,
        TIMER_A_CAPTURECOMPARE_REGISTER_4,
        TIMER_A_OUTPUTMODE_RESET_SET,
        500
};



void PWM_A0_Init(void)
{
          
   
	/* P2.4 */
	MAP_GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P2, GPIO_PIN4 ,
            GPIO_PRIMARY_MODULE_FUNCTION);
	MAP_Timer_A_generatePWM(TIMER_A0_BASE, &pwmConfig_c1);
	
	/* P2.5 */
	MAP_GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P2, GPIO_PIN5 ,
            GPIO_PRIMARY_MODULE_FUNCTION);
	MAP_Timer_A_generatePWM(TIMER_A0_BASE, &pwmConfig_c2);
	
	/* P2.6 */
	MAP_GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P2, GPIO_PIN6 ,
            GPIO_PRIMARY_MODULE_FUNCTION);
	MAP_Timer_A_generatePWM(TIMER_A0_BASE, &pwmConfig_c3);
	
	
	/* P2.7 */
	MAP_GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P2, GPIO_PIN7 ,
            GPIO_PRIMARY_MODULE_FUNCTION);
	MAP_Timer_A_generatePWM(TIMER_A0_BASE, &pwmConfig_c4);
}

void PWM_A2_Init(void)
{
          
   
	/* P5.6 */
	MAP_GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P5, GPIO_PIN6,
            GPIO_PRIMARY_MODULE_FUNCTION);
	MAP_Timer_A_generatePWM(TIMER_A2_BASE, &pwmConfig_c1);
}

pwm.h

#ifndef __PWM_H
#define __PWM_H

/* DriverLib Includes */
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>

void PWM_A0_Init(void);
void PWM_A2_Init(void);

#endif
经验分享 程序员 微信小程序 职场和发展