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.

[参考译文] MSP-EXP430F5529LP:同时运行2个程序

Guru**** 1955920 points
Other Parts Discussed in Thread: ENERGIA, MSPM0G3507
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1453835/msp-exp430f5529lp-2-programs-running-at-once

器件型号:MSP-EXP430F5529LP
主题中讨论的其他器件:EnergiaMSPM0G3507

工具与软件:

你(们)好 我要尝试同时运行2个不同的程序。 一个基本闪烁、另一个基本 DigitalReadSerial 使用 MSP 上的板载按钮。 这不是我打算用于 MSP 的2个程序、但是我只需要2个简单的小测试代码来快速测试在将我的主代码发送之前如何让2个程序协同工作。 有人可以帮助我同时运行这两个代码吗? 代码如下:

闪烁:

#define LED RED_LED

void setup(){
pinMode (LED、输出);
}
void loop(){
digitalWrite (LED、HIGH);
delay(1000);  
digitalWrite (LED、LOW);  
delay (1000);/
}

DigitalReadSerial:

INT Pushbutton = P2_1;

void setup(){
Serial.begin(9600);
pinMode (pushbutton、input_pullup);
}

void loop(){
int buttonState = digitalRead (button);
serial.println (buttonState);
延迟(1);
}

就像我说的那样、它们都是非常简单的代码、但只是希望它们在使用我的主代码尝试之前、能够同时计算出如何使用2个单独的代码。

如果你能帮助我,那将是惊人的! 谢谢你。

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

    当然、它们不能同时运行。 但是您可以管理它们、以便一个运行时另一个等待。 执行此操作的经典方法是使用 RTOS。 与 Arduino 形状的东西非常不同,需要学习很多。 例如、以下是我的一个基于 FreeRTOS 的程序中的一个简单 LED 闪烁任务:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void prvLEDTask( void *pvParameters)
    {
    TickType_t xNextWakeTime;
    /* Remove compiler warning about unused parameter. */
    ( void ) pvParameters;
    /* Initialise xNextWakeTime - this only needs to be done once. */
    xNextWakeTime = xTaskGetTickCount();
    for( ;; )
    {
    /* Place this task in the blocked state until it is time to run again. */
    vTaskDelayUntil( &xNextWakeTime, (TickType_t)(configTICK_RATE_HZ*0.95));
    LED1_ON;
    vTaskDelayUntil( &xNextWakeTime, (TickType_t)(configTICK_RATE_HZ*0.05));
    LED1_OFF;
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    那么、假设第一个代码使 RED_LED 亮起约2秒、第二个代码仅使 GREEN_LED 亮起5秒(就像指示哪个代码当前处于活动状态)、该代码看起来会是什么样子? 另外、我使用的是 Energia 应用程序、而不是 CCS、因为我更多的是通过 Arduinos 和 C++来开发  、所以格式与 Arduino 相同、那么这如何适应 Arduino C++格式? 我不是 C 或 C Sharp 的法拉尔

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

    Energia 全方位为 Arduino。

    这*不*适用于 Energia。

    FreeRTOS 是多任务操作系统、支持上下文切换。 您只有一个 CPU、因此一次只能运行一个 CPU、但就像在 PC 上一样、您可以在两个任务之间切换、使其看起来像是两个任务同时运行。

    我不知道是否有适用于您的 MCU 的 RTOS、您可能需要更强大的 RTOS、例如 MSPM0G3507。

    除非您有强大的 RTOS 用例、否则我建议您只需在循环中调整内容、即 Arduino 方式。

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

    那么、我要尝试执行的这个任务、它会如何在 C 或 C Sharp 上运行、因为就像我说过的、我也不知道这一点。 2个代码是非常字面上只有这2个 LED ,他们只是指示我们正在使用的代码。 使用板载的红色和绿色 LED、我们只知道哪些代码处于活动状态、因此它不仅仅是2个不同的操作、而是哪个功能()处于活动状态。 那么、将 上面 David Schultz 所说的内容混合在一起、它如何与 LED 配合工作? 因为我尝试了 digitalWrite LED、它显然不起作用

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

    就像 David 在上面展示的 C。你设置了两个任务、让他们等待、直到有时间做一些事情。

    如果您真的更加熟悉 Energia、我建议您只需使用:

    loop()

     //为程序1做些什么

     //为程序2做些什么

    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我更喜欢 Arduinos 和 C++[/报价]

    C++只是 C 加上一些新的东西、因此它的名称。 此外、您展示的代码是普通 C

    多任务处理是可以并且已经通过 Arduino 方式完成的。 只是搜索它。

x 出现错误。请重试或与管理员联系。