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.

[参考译文] MSP430FR4133:不适用

Guru**** 2589300 points
Other Parts Discussed in Thread: MSP430FR4133

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/648328/msp430fr4133-na

器件型号:MSP430FR4133
主题中讨论的其他器件: MSPWARE

我尝试使用 msp430fr4133使用 PWM 和中断来降低 LED 亮度、但我没有得到任何 PWM 工作正常的结果、LED 闪烁而不是褪色。代码我是 MSPware 驱动程序库、任何人都可以在中提出任何改进建议 我的代码。

#include "driverlib.h"

void initTimer(void);

int main (void){

WDT_A_HOLD (WDT_A_base);

GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);//红色 LED (LED2)
GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN0);
//GPIO_setAsOutputPin (GPIO_PORT_P4、GPIO_PIN0);//绿色 LED (LED2)
//GPIO_setOutputLowOnPin (GPIO_PORT_P4、GPIO_PIN0);

//设置输出引脚

GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P8、GPIO_PIN3、GPIO_PRIMARY_MODULE_Function);
//GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P1、GPIO_PIN7、GPIO_PRIMARY_MODULE_Function);


PMM_unlockLPM5 ();

initTimer();

__bis_SR_register ( GIE );//全局启用中断

while (1){
__no_operation();// while 循环的占位符(不需要)

返回(0);

空 initTimers (空)

//使用 CCROIFG 设置中断以切换红色 LED1
//使用 TA1IFG 切换绿色 LED2设置中断
Timer_A_initUpModeParam initUpParam ={0};
initUpParam.clockSource = TIMER_A_CLOCKSOURCE_ACLK;//使用 ACLK (较慢时钟)
initUpParam.clockSourceDivider = TIMER_A_CLOCKSOURCE_divider;//输入时钟= ACLK / 1 = 32KHz
initUpParam.timerPeriod = 0xFFF/2;//一半的时间
initUpParam.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_ENABLE;//启用 TAR -> 0中断
initUpParam.captureCompareInterruptEnable_CCR0_CCIE = TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE;//启用比较中断
initUpParam.timerClear = timer_a_do _clear;//清除 TAR 和时钟分频器
initUpParam.startTimer = true;//尚未启动计时器

Timer_A_initUpMode( timer_A1_base,&initUpParam );

//CCR2配置
Timer_A_initCompareModeParam initCcr2Param ={0};
initCcr2Param.compareRegister = TIMER_A_CAPTURECMPARE 寄存器_2;
initCcr2Param.compareInterruptEnable = TIMER_A_CAPTURECMPARE INTERRUPT_DISABLE;
initCcr2Param.compareOutputMode = TIMER_A_OUTPUTMODE_TOGGLE_RESET;
initCcr2Param.compareValue = 0x0AB0;

Timer_A_initCompareMode (timer_A1_base、&initCcr2Param);

Timer_A_clearTimerInterrupt (timer_A1_base);
Timer_A_clearCaptureCompareInterrupt (timer_A1_base、timer_A_CAPTURECOMPARE 寄存器_0 + timer_A_CAPTUREACMPARE 寄存器_2);//清除 CCROIFG

Timer_a_startCounter (
Timer_A1_base、
Timer_A_up_mode
);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    为了使用 PWM 来使 LED 变亮和变暗、您需要将占空比从0%扫描到100%、然后以相同的时间步长返回到0%。 请参阅 TI Resource Explorer 中为 MSP430FR4133提供 的名为 msp430fr413x_ta0_16.c 的示例代码 在此示例中、PWM 信号输出到某些 GPIO 引脚。 您只需稍微修改示例代码、以便根据  您使用的 GPIO 来更改 TA0CCR1或 TA0CCR2中的占空比、从而使其不是恒定值、 它从0变为 TA0CCR0中的值、然后返回到0。 您可以将其置于循环中以连续点亮和调暗 LED。

    祝您好运!

    此致、

    Matt Calvo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    如果此问题现已解决、请继续并选择"已解决"、以便我们可以关闭此主题以进行跟踪。

    谢谢、此致、

    Matt Calvo
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我曾尝试过,但我不明白在这方面会有所帮助  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这方面、您能帮我更改代码中的 PWM、使其正常工作吗?我正在使用驱动程序库
    不是#include 库
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    请使用代码插入链接正确添加您的代码、以便我能够以正确的格式查看代码。 您是否曾尝试上传我在上一次答复中引用的代码示例? 从 Resource Explorer 将代码示例上传到 CCS 非常简单、是完成 LED 调光项目的良好起点。

    此致、

    Matt
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我已经编写了一个示例代码、该代码使用 PWM 来使 MSP430FR4133 Launchpad 上的 LED 变亮和变暗。 您唯一需要进行的硬件修改是使用跳线将 P1.6连接到 LED1阳极引脚、这样您就可以看到 PWM 调光器工作正常。

    #include 
    
    #define PWM_PERIOD (20000)
    
    int DIRECTION = 0;//1为向上、0为向下
    
    int main (void)
    {
    WDTCTL = WDTPW | WDTHOLD; //停止 WDT
    
    P1DIR |= BIT6; // P1.6输出
    P1SEL0 |= BIT6; // P1.6选项选择
    
    //禁用 GPIO 上电默认高阻抗模式以激活
    //先前配置的端口设置
    PM5CTL0 &=~LOCKLPM5;
    
    TA0CCR0 = PWM_PERIOD-1; // PWM 周期
    TA0CCTL2 = OUTMOD_7; // CCR2复位/置位
    TA0CCR2 = PWM_PERIOD-1; // CCR2 PWM 占空比
    TA0CTL = tassel_SMCLK | MC__UP | TACLR;// SMCLK、向上计数模式、清除 TAR
    
    while (1){
    if (TA0CCTL0 && CCIFG){//如果中断标志被置位
    if (direction){// if 递增计数
    if (TA0CCR2 =(PWM_PERIOD-1)){
    方向= 0;
    }
    否则{
    TA0CCR2++;
    }
    }
    否则{//如果递减计数
    if (TA0CCR2 =0){
    方向= 1;
    }
    否则{
    TA0CCR2--;
    }
    }
    
    
    }
    
    
    

    请在您的 MSP430FR4133 Launchpad 上尝试此代码、希望这有助于您了解如何使用计时器模块输出 PWM 信号!  

    此致、

    Matt Calvo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    如果我的上述支持和代码示例帮助您解决了问题、请继续并选择上述帖子已解决您的问题、以便我们可以关闭此主题。 谢谢!

    此致、

    Matt Calvo
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我将继续、关闭并记录此主题以进行跟踪。 如果有任何问题、请随时再次评论此帖子或发布新的 E2E 帖子。 谢谢!

    此致、

    Matt Calvo
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthew、

     您上面的示例代码在我的 Launchpad 中运行正常、但我需要使用电位计控制亮度、以便在此代码中进行哪些更改。 我尝试了计时器比较模式和 PWM、但无法完成... 可以帮我解决这个问题吗?

    #include

    #define PWM_PERIOD (20000)

    INT DIRECTION = 0;//1为向上、0为向下

    int main (空)

    WDTCTL = WDTPW | WDTHOLD;//停止 WDT

    P1DIR |= BIT6;// P1.6输出
    P1SEL0 |= BIT6;// P1.6选项选择

    //禁用 GPIO 上电默认高阻抗模式以激活
    //先前配置的端口设置
    PM5CTL0 &=~LOCKLPM5;

    TA0CCR0 = PWM_PERIOME-1;// PWM 周期
    TA0CCTL2 = OUTMOD_7;// CCR2复位/置位
    TA0CCR2 = PWM_PERIOD-1;// CCR2 PWM 占空比
    TA0CTL = tassel_SMCLK | MC__UP | TACLR;// SMCLK、向上计数模式、清除 TAR

    while (1){
    if (TA0CCTL0 && CCIFG){//如果中断标志被置位
    if (direction){// if 递增计数
    if (TA0CCR2 =(PWM_PERIOD-1)){
    方向= 0;

    否则{
    TA0CCR2++;


    否则{//如果递减计数
    if (TA0CCR2 =0){
    方向= 1;

    否则{
    TA0CCR2--;



  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我提供的代码使用一个循环来递增和递减 TA0CCR2中的值、TA0CCR2反过来使连接到 PWM 输出的 LED 变亮和变暗。 如果您真的想使用 MCU 来测量电位计的电压、那么您只需使用 ADC 来测量来自电位计的变化电压(learn.parallax.com/.../adc-and)、 然后相应地更改 TA0CCR2中的值。

    可以更轻松地对连接到 GPIO 输出的 LED 进行纯调光、实际上全部都是在片外完成的。 以下链接可帮助您了解如何实施(electronics.stackexchange.com/.../using-a-variable-resistor-to-dim-an-led)

    此致、

    Matt Calvo
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Matthew 的链接。 我会尝试并返回给您。