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.
工具与软件:
你(们)好 我要尝试同时运行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 闪烁任务:
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; } }
那么、假设第一个代码使 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 方式。