MSP432E401Y-时钟输出PWM

        关于时钟的PWM配置以及相关寄存器翻译在上篇文章中已经写过了,不做更多的描述。有问题移步MSP432E401Y-用定时器中断控制LED闪烁_丢萌的博客-CSDN博客

        MSP432E401Y自带的PWM口的输出会在下一篇详细翻译以及介绍。

        关于定时器输出PWM的定义方式其实和中断差不多,具体的寄存器操作大同小异。这次参考了官方库修改系统频率(120兆HZ)然后用于生成2KHZ的PWM波,占空比为66%

        具体代码如下


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

/* Standard Includes */
#include <stdint.h>
#include <stdbool.h>
uint32_t systemClock;
void PWM_init(){
    TIMER2->CTL &=~TIMER_CTL_TAEN;//关闭定时器TA,以便进行相关配置

    TIMER2->CFG |= TIMER_CFG_16_BIT ;//写入0x4,选择16位定时器
    TIMER2->TAMR &=~TIMER_TAMR_TACMR;//清除CMR
    //按顺序配置为启用PWM模式,周期模式
    TIMER2->TAMR |= TIMER_TAMR_TAAMS+TIMER_TAMR_TAMR_PERIOD;
    TIMER2->CTL &=~ TIMER_CTL_TAPWML;//默认输出状态,置1为反向输出
    //输出为2KHZ方波,占空比为66%,因为系统时钟为120兆HZ。具体频率可以参考下面的写法修改。
    TIMER2->TAILR =systemClock/2000;
    TIMER2->TAMATCHR=systemClock/6000;

    TIMER2->CTL |= TIMER_CTL_TAEN;//打开定时器TA
    //目前还不会下面三个定义,直接套用官方库函数,其次是底层定义里面没有PCTL中PCMn的相关定义
    MAP_GPIOPinConfigure(GPIO_PM0_T2CCP0);
    MAP_GPIOPinTypeTimer(GPIO_PORTM_BASE, GPIO_PIN_0 );
    MAP_TimerEnable(TIMER2_BASE, TIMER_A);

}

void gpio_init(){

    //led_init
    GPION->DIR|=BIT1+BIT0;//D1,D2 light on
    GPION->DEN|=BIT1+BIT0;
}

int main(void)
{
    //修改系统时钟为120兆HZ
    systemClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN |
                                          SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480),
                                          120000000);
    //和打开GPIO时钟一样,这里打开TIMER2时钟
    SYSCTL->RCGCTIMER|=SYSCTL_RCGCTIMER_R2;
    while((SYSCTL->RCGCTIMER & SYSCTL_RCGCTIMER_R2) == 0){};

    SYSCTL->RCGCGPIO |= SYSCTL_RCGCGPIO_R12+SYSCTL_RCGCGPIO_R11;               // activate clock for Port M,N
    while((SYSCTL->RCGCGPIO & (SYSCTL_PRGPIO_R12+SYSCTL_RCGCGPIO_R11)) == 0){}; // wait for preparation of Port M,N

    PWM_init();
    gpio_init();


    while(1){
        GPION->DATA |=BIT0;//亮一个灯证明系统正常运行
    }
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值