MSP432E401Y-PWM的生成和占空比的调整

2019-11-06来源: eefocus关键字:MSP432E401Y  PWM  占空比

 * MSP432E4 Empty Project

 *

 * Description: An empty project that uses DriverLib

 *

 *                MSP432E401Y

 *             ------------------

 *         /||                  |

 *          | |                  |

 *          --|RST               |

 *            |                  |

 *            |             PF2  |--->25%PWM

 *            |             PF3  |--->75%PWM

 *            |                  |

 *            |                  |

 * Author: 

*******************************************************************************/

/* DriverLib Includes */

#include


/* Standard Includes */

#include

#include


/* Global variable for system clock */

uint32_t getSystemClock;


/* PWM ISR */

void PWM0_0_IRQHandler(void)

{

    uint32_t getIntStatus;


    getIntStatus = MAP_PWMGenIntStatus(PWM0_BASE, PWM_GEN_1, true);


    MAP_PWMGenIntClear(PWM0_BASE, PWM_GEN_1, getIntStatus);


}



int main(void)

{


   /* Configure the system clock for 16 MHz internal oscillator */

    getSystemClock = MAP_SysCtlClockFreqSet((SYSCTL_OSC_INT |

                                             SYSCTL_USE_OSC), 16000000);


    /* The PWM peripheral must be enabled for use. */

    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);

    while(!(MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_PWM0)));


    /* Set the PWM clock to the system clock. */

    MAP_PWMClockSet(PWM0_BASE,PWM_SYSCLK_DIV_1);


    /* Enable the clock to the GPIO Port F for PWM pins */

    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

    while(!MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOF));


    MAP_GPIOPinConfigure(GPIO_PF2_M0PWM2);

    MAP_GPIOPinConfigure(GPIO_PF3_M0PWM3);

    MAP_GPIOPinTypePWM(GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3));


    /* Configure the PWM0 to count up/down without synchronization. */

    MAP_PWMGenConfigure(PWM0_BASE, PWM_GEN_1, PWM_GEN_MODE_UP_DOWN |

                        PWM_GEN_MODE_NO_SYNC);


    /* Set the PWM period to 250Hz.  To calculate the appropriate parameter

     * use the following equation: N = (1 / f) * SysClk.  Where N is the

     * function parameter, f is the desired frequency, and SysClk is the

     * system clock frequency.

     * In this case you get: (1 / 250Hz) * 16MHz = 64000 cycles.  Note that

     * the maximum period you can set is 2^16 - 1. */

    MAP_PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, 64000);


    /* Set PWM0 PF0 to a duty cycle of 25%.  You set the duty cycle as a

     * function of the period.  Since the period was set above, you can use the

     * PWMGenPeriodGet() function.  For this example the PWM will be high for

     * 25% of the time or 16000 clock cycles (64000 / 4). */

    MAP_PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2,

                     MAP_PWMGenPeriodGet(PWM0_BASE, PWM_GEN_1) / 4);


    /* Set PWM0 PF1 to a duty cycle of 75%.  You set the duty cycle as a

     * function of the period.  Since the period was set above, you can use the

     * PWMGenPeriodGet() function.  For this example the PWM will be high for

     * 7% of the time or 16000 clock cycles 3*(64000 / 4). */

    MAP_PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3,

                     MAP_PWMGenPeriodGet(PWM0_BASE, PWM_GEN_1) / 4);


    MAP_IntMasterEnable();


    /* This timer is in up-down mode.  Interrupts will occur when the

     * counter for this PWM counts to the load value (64000), when the

     * counter counts up to 64000/4 (PWM A Up), counts down to 64000/4

     * (PWM A Down), and counts to 0. */

    MAP_PWMGenIntTrigEnable(PWM0_BASE, PWM_GEN_1,

                            PWM_INT_CNT_ZERO | PWM_INT_CNT_LOAD |

                            PWM_INT_CNT_AU | PWM_INT_CNT_AD);

    MAP_IntEnable(INT_PWM0_1);


    MAP_PWMIntEnable(PWM0_BASE, PWM_INT_GEN_1);


    /* Enable the PWM0 Bit 0 (PF0) and Bit 1 (PF1) output signals. */

    MAP_PWMOutputState(PWM0_BASE, PWM_OUT_2_BIT | PWM_OUT_3_BIT, true);


    /* Enables the counter for a PWM generator block. */

    MAP_PWMGenEnable(PWM0_BASE, PWM_GEN_1);


    /* Loop forever while the PWM signals are generated. */

    while(1)

    {


    }

}

关键字:MSP432E401Y  PWM  占空比 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479135.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP432时钟系统CS
下一篇:怎么用keil5实现MSP432E401Y点灯

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

怎么用keil5实现MSP432E401Y点灯
**第一步**先去官网下载芯片包在keil这个序列中选择TI公司相对应的芯片包下载后在pack installer->import->I agree ->finish出现绿色图标,就代表成功。第二步下载模板模板链接打开工程,选择正确的芯片出现下载失败或者没法编译时选择正确的编译器版本插好线接下来Debug的配置是选择正确的芯片flash然后点击编译下载就好了第三步下面两个网站可以下载资料开发板资料芯片资料从开发板原理图可以知道LED灯的引脚接下来是简单流水灯
发表于 2019-11-06
怎么用keil5实现MSP432E401Y点灯
MSP432E401Y单片机智能小车测速功能
 * MSP432E401Y * Description:本函数实现定时和测速功能   * 引脚:PD0->编码器输入信号 *         * Author: Robin.J***************************************************************************//* DriverLib Includes */#include <ti/devices/msp432e4/driverlib/driverlib.h>/* Standard
发表于 2019-11-06
avr单片机PWM控制直流电机转速和正反转
用uln2003控制,下面是仿真原理图:源程序:/*****************************************************This program was produced by theCodeWizardAVR V2.03.4 StandardAutomatic Program Generator?Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.comProject : Version : Date    : 7/26/2009Author  :&n
发表于 2019-11-13
avr单片机PWM控制直流电机转速和正反转
STC12C5A60S2利用PCA时钟溢出做的PWM信号
1.程序里面想详细的算法 思路, 2.在晶振和CPU满足计算的情况下,理论是你要多少你就通过编码器调节多少3.本程序任意频率调试是通过编码器来切换的,4.关于精度问题 在100hz内非常准,在最大255HZ的时候相差20hz左右,  问题可能出现在 定时器计数这个位置, 我全部取整数了 所以误差比较大如果计数的出来本来机是整数的,那频率相对准确的, 在100hz的时候就是标准的100hz 单片机源程序如下:/*------------------------------------------------------------------*//* --- 功能  pwm
发表于 2019-11-12
STC12C5A60S2利用PCA时钟溢出做的PWM信号
一个定时器生成多路PWM波形的原理和方法
在很多工程应用中,需要使用到PWM波(脉宽调制),例如电机调速、温度控制调整功率等。本文讲述怎么利用单片机的一个定时器生成多路PWM波形。一般的,PWM的周期t1是一个固定值,如1ms,10ms,100ms等,在一个周期中包含了高电平t2和低电平t3,它们的关系是t2+t3=t1。改变一个周期中高电平的时间,就能达到速度或者功率调整的目的。PWM适用于高速开关器件的控制,不适合于继电器等低速开关元件的控制,因为继电器等低速元件达不到如此快的开关速度。PWM控制的关键是控制改变PWM的高电平时间t2,这个时间在其他子程序中由控制算法中进行修改,如PID控制算法。 图 1在微处理器,如单片机中,实现一个定时器生成多路PWM
发表于 2019-11-12
一个定时器生成多路PWM波形的原理和方法
PWM控制MOSFET搭建的H桥电路驱动直流电机仿真与单片机源码
PIC单片机 proteus H桥驱动直流电机PWM控制MOSFET搭建的H桥电路驱动直流电机运行仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) 1.正转-> 2.停止-> 3.反转-> 4.停止调整到高速时会观察到电机好象在逆向及慢速转动的效果,这是正常的.实际正反转速显示在电机下方(高电平有效状态)全桥正向时P1A有效,P1D调制全桥反向时P1C有效,P1B调制单片机源程序如下://-----------------------------------------------------------------//  名称: 用PIC16F690设计的PWM控制器控制H桥
发表于 2019-11-11
PWM控制MOSFET搭建的H桥电路驱动直流电机仿真与单片机源码
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved