From 9fed8157b1514ccd762c83ac128ff741170c9f10 Mon Sep 17 00:00:00 2001 From: Dan Goldsmith Date: Tue, 5 Mar 2024 09:12:27 +0000 Subject: [PATCH] Threading added --- Future/Session4_ThreadSignals/src/main.cpp | 44 ---------- .../BasicThreads}/.gitignore | 0 Session4/BasicThreads/.mbedignore | 83 +++++++++++++++++++ .../BasicThreads}/.vscode/extensions.json | 0 .../BasicThreads}/include/README | 0 .../BasicThreads}/lib/README | 0 .../BasicThreads}/platformio.ini | 7 +- .../BasicThreads}/src/main.cpp | 0 .../BasicThreads}/test/README | 0 .../ThreadSignals}/.gitignore | 0 Session4/ThreadSignals/.mbedignore | 83 +++++++++++++++++++ .../ThreadSignals}/.vscode/extensions.json | 0 .../ThreadSignals}/include/README | 0 .../ThreadSignals}/lib/README | 0 .../ThreadSignals}/platformio.ini | 13 ++- Session4/ThreadSignals/src/main.cpp | 57 +++++++++++++ .../ThreadSignals}/test/README | 0 17 files changed, 239 insertions(+), 48 deletions(-) delete mode 100644 Future/Session4_ThreadSignals/src/main.cpp rename {Future/Session4_BasicThreads => Session4/BasicThreads}/.gitignore (100%) create mode 100644 Session4/BasicThreads/.mbedignore rename {Future/Session4_BasicThreads => Session4/BasicThreads}/.vscode/extensions.json (100%) rename {Future/Session4_BasicThreads => Session4/BasicThreads}/include/README (100%) rename {Future/Session4_BasicThreads => Session4/BasicThreads}/lib/README (100%) rename {Future/Session4_BasicThreads => Session4/BasicThreads}/platformio.ini (76%) rename {Future/Session4_BasicThreads => Session4/BasicThreads}/src/main.cpp (100%) rename {Future/Session4_BasicThreads => Session4/BasicThreads}/test/README (100%) rename {Future/Session4_ThreadSignals => Session4/ThreadSignals}/.gitignore (100%) create mode 100644 Session4/ThreadSignals/.mbedignore rename {Future/Session4_ThreadSignals => Session4/ThreadSignals}/.vscode/extensions.json (100%) rename {Future/Session4_ThreadSignals => Session4/ThreadSignals}/include/README (100%) rename {Future/Session4_ThreadSignals => Session4/ThreadSignals}/lib/README (100%) rename {Future/Session4_ThreadSignals => Session4/ThreadSignals}/platformio.ini (63%) create mode 100644 Session4/ThreadSignals/src/main.cpp rename {Future/Session4_ThreadSignals => Session4/ThreadSignals}/test/README (100%) diff --git a/Future/Session4_ThreadSignals/src/main.cpp b/Future/Session4_ThreadSignals/src/main.cpp deleted file mode 100644 index 88b41e3..0000000 --- a/Future/Session4_ThreadSignals/src/main.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include - - -DigitalOut led1(LED1); -DigitalOut led2(LED2); -DigitalOut led3(LED3); - -//Create an empty thread object ready to attach a function -Thread thread; -Thread thread2; - -//Function to deal with blinking the second LED -void led2_thread() { - //Loop forever - while (true) { - led2 = !led2; - thread_sleep_for(1000); - thread2.signal_set(0x42); - } -} - -void led3_thread() { - //Loop forever - while (1){ - thread2.signal_wait(0x42); - for (int x=0; x<5; x++) { - led3 = !led3; - thread_sleep_for(100); - } - } -} - - - -//Main Program -int main() { - //Attach the function to the Thread then Start it - thread.start(led2_thread); - thread2.start(led3_thread); - while (true) { - led1 = !led1; - thread_sleep_for(500); - } -} diff --git a/Future/Session4_BasicThreads/.gitignore b/Session4/BasicThreads/.gitignore similarity index 100% rename from Future/Session4_BasicThreads/.gitignore rename to Session4/BasicThreads/.gitignore diff --git a/Session4/BasicThreads/.mbedignore b/Session4/BasicThreads/.mbedignore new file mode 100644 index 0000000..fe58d10 --- /dev/null +++ b/Session4/BasicThreads/.mbedignore @@ -0,0 +1,83 @@ +/* Bootloader */ +mbed-os/features/FEATURE_BOOTLOADER/* + +/* BLE */ +mbed-os/connectivity/drivers/ble/* +mbed-os/connectivity/FEATURE_BLE/* + +/* Cellular */ +mbed-os/connectivity/cellular/* +mbed-os/connectivity/drivers/cellular/* +mbed-os/connectivity/netsocket/source/Cellular*.* + +/* Device Key */ +mbed-os/drivers/device_key/* + +/* Experimental */ +mbed-os/platform/FEATURE_EXPERIMENTAL_API/* + +/* FPGA */ +mbed-os/features/frameworks/COMPONENT_FPGA_CI_TEST_SHIELD/* + +/* Greentea client */ +mbed-os/features/frameworks/greentea-client/* + +/* LORAWAN */ +mbed-os/connectivity/drivers/lora/* +mbed-os/connectivity/lorawan/* + +/* LWIP */ +mbed-os/connectivity/drivers/emac/* +mbed-os/connectivity/lwipstack/* + +/* Mbed-client-cli */ +mbed-os/features/frameworks/mbed-client-cli/* + +/* MBED TLS */ +mbed-os/connectivity/drivers/mbedtls/* +mbed-os/connectivity/mbedtls/* + +/* Nanostack */ +mbed-os/connectivity/drivers/emac/* +mbed-os/connectivity/libraries/mbed-coap/* +mbed-os/connectivity/libraries/nanostack-libservice/* +mbed-os/connectivity/libraries/ppp/* +mbed-os/connectivity/nanostack/* + +/* Netsocket */ +mbed-os/connectivity/drivers/emac/* +mbed-os/connectivity/netsocket/* +mbed-os/connectivity/libraries/mbed-coap/* +mbed-os/connectivity/libraries/ppp/* + +/* NFC */ +mbed-os/connectivity/drivers/nfc/* +mbed-os/connectivity/nfc/* + +/* RF */ +/*mbed-os/connectivity/drivers/802.15.4_RF/* */ + +/* Storage */ +mbed-os/storage/filesystem/* +mbed-os/storage/kvstore/* +mbed-os/storage/platform/* + +/* Tests */ +mbed-os/platform/tests/* +mbed-os/TEST_APPS/* +mbed-os/TESTS/* +mbed-os/UNITTESTS/* + +/* Unity */ +mbed-os/features/frameworks/unity/* + +/* Utest */ +mbed-os/features/frameworks/utest/* + +/* USB */ +mbed-os/drivers/usb/source/* +mbed-os/hal/usb/source/* +mbed-os/hal/usb/TARGET_Templates/* + +/* WiFi */ +mbed-os/connectivity/drivers/wifi/* \ No newline at end of file diff --git a/Future/Session4_BasicThreads/.vscode/extensions.json b/Session4/BasicThreads/.vscode/extensions.json similarity index 100% rename from Future/Session4_BasicThreads/.vscode/extensions.json rename to Session4/BasicThreads/.vscode/extensions.json diff --git a/Future/Session4_BasicThreads/include/README b/Session4/BasicThreads/include/README similarity index 100% rename from Future/Session4_BasicThreads/include/README rename to Session4/BasicThreads/include/README diff --git a/Future/Session4_BasicThreads/lib/README b/Session4/BasicThreads/lib/README similarity index 100% rename from Future/Session4_BasicThreads/lib/README rename to Session4/BasicThreads/lib/README diff --git a/Future/Session4_BasicThreads/platformio.ini b/Session4/BasicThreads/platformio.ini similarity index 76% rename from Future/Session4_BasicThreads/platformio.ini rename to Session4/BasicThreads/platformio.ini index 7213255..b54c79a 100644 --- a/Future/Session4_BasicThreads/platformio.ini +++ b/Session4/BasicThreads/platformio.ini @@ -12,4 +12,9 @@ platform = ststm32 board = nucleo_f401re framework = mbed -build_flags = -D PIO_FRAMEWORK_MBED_RTOS_PRESENT +;build_flags = -D PIO_FRAMEWORK_MBED_RTOS_PRESENT + +;[env:nucleo_f746zg] +;platform = ststm32 +;board = nucleo_f746zg +;framework = mbed \ No newline at end of file diff --git a/Future/Session4_BasicThreads/src/main.cpp b/Session4/BasicThreads/src/main.cpp similarity index 100% rename from Future/Session4_BasicThreads/src/main.cpp rename to Session4/BasicThreads/src/main.cpp diff --git a/Future/Session4_BasicThreads/test/README b/Session4/BasicThreads/test/README similarity index 100% rename from Future/Session4_BasicThreads/test/README rename to Session4/BasicThreads/test/README diff --git a/Future/Session4_ThreadSignals/.gitignore b/Session4/ThreadSignals/.gitignore similarity index 100% rename from Future/Session4_ThreadSignals/.gitignore rename to Session4/ThreadSignals/.gitignore diff --git a/Session4/ThreadSignals/.mbedignore b/Session4/ThreadSignals/.mbedignore new file mode 100644 index 0000000..fe58d10 --- /dev/null +++ b/Session4/ThreadSignals/.mbedignore @@ -0,0 +1,83 @@ +/* Bootloader */ +mbed-os/features/FEATURE_BOOTLOADER/* + +/* BLE */ +mbed-os/connectivity/drivers/ble/* +mbed-os/connectivity/FEATURE_BLE/* + +/* Cellular */ +mbed-os/connectivity/cellular/* +mbed-os/connectivity/drivers/cellular/* +mbed-os/connectivity/netsocket/source/Cellular*.* + +/* Device Key */ +mbed-os/drivers/device_key/* + +/* Experimental */ +mbed-os/platform/FEATURE_EXPERIMENTAL_API/* + +/* FPGA */ +mbed-os/features/frameworks/COMPONENT_FPGA_CI_TEST_SHIELD/* + +/* Greentea client */ +mbed-os/features/frameworks/greentea-client/* + +/* LORAWAN */ +mbed-os/connectivity/drivers/lora/* +mbed-os/connectivity/lorawan/* + +/* LWIP */ +mbed-os/connectivity/drivers/emac/* +mbed-os/connectivity/lwipstack/* + +/* Mbed-client-cli */ +mbed-os/features/frameworks/mbed-client-cli/* + +/* MBED TLS */ +mbed-os/connectivity/drivers/mbedtls/* +mbed-os/connectivity/mbedtls/* + +/* Nanostack */ +mbed-os/connectivity/drivers/emac/* +mbed-os/connectivity/libraries/mbed-coap/* +mbed-os/connectivity/libraries/nanostack-libservice/* +mbed-os/connectivity/libraries/ppp/* +mbed-os/connectivity/nanostack/* + +/* Netsocket */ +mbed-os/connectivity/drivers/emac/* +mbed-os/connectivity/netsocket/* +mbed-os/connectivity/libraries/mbed-coap/* +mbed-os/connectivity/libraries/ppp/* + +/* NFC */ +mbed-os/connectivity/drivers/nfc/* +mbed-os/connectivity/nfc/* + +/* RF */ +/*mbed-os/connectivity/drivers/802.15.4_RF/* */ + +/* Storage */ +mbed-os/storage/filesystem/* +mbed-os/storage/kvstore/* +mbed-os/storage/platform/* + +/* Tests */ +mbed-os/platform/tests/* +mbed-os/TEST_APPS/* +mbed-os/TESTS/* +mbed-os/UNITTESTS/* + +/* Unity */ +mbed-os/features/frameworks/unity/* + +/* Utest */ +mbed-os/features/frameworks/utest/* + +/* USB */ +mbed-os/drivers/usb/source/* +mbed-os/hal/usb/source/* +mbed-os/hal/usb/TARGET_Templates/* + +/* WiFi */ +mbed-os/connectivity/drivers/wifi/* \ No newline at end of file diff --git a/Future/Session4_ThreadSignals/.vscode/extensions.json b/Session4/ThreadSignals/.vscode/extensions.json similarity index 100% rename from Future/Session4_ThreadSignals/.vscode/extensions.json rename to Session4/ThreadSignals/.vscode/extensions.json diff --git a/Future/Session4_ThreadSignals/include/README b/Session4/ThreadSignals/include/README similarity index 100% rename from Future/Session4_ThreadSignals/include/README rename to Session4/ThreadSignals/include/README diff --git a/Future/Session4_ThreadSignals/lib/README b/Session4/ThreadSignals/lib/README similarity index 100% rename from Future/Session4_ThreadSignals/lib/README rename to Session4/ThreadSignals/lib/README diff --git a/Future/Session4_ThreadSignals/platformio.ini b/Session4/ThreadSignals/platformio.ini similarity index 63% rename from Future/Session4_ThreadSignals/platformio.ini rename to Session4/ThreadSignals/platformio.ini index 53a9732..163f44b 100644 --- a/Future/Session4_ThreadSignals/platformio.ini +++ b/Session4/ThreadSignals/platformio.ini @@ -8,8 +8,15 @@ ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html -[env:nucleo_f746zg] + +[env:nucleo_f401re] platform = ststm32 -board = nucleo_f746zg +board = nucleo_f401re framework = mbed -build_flags = -D PIO_FRAMEWORK_MBED_RTOS_PRESENT \ No newline at end of file +;build_flags = -D PIO_FRAMEWORK_MBED_RTOS_PRESENT + +;[env:nucleo_f746zg] +;platform = ststm32 +;board = nucleo_f746zg +;framework = mbed +;build_flags = -D PIO_FRAMEWORK_MBED_RTOS_PRESENT diff --git a/Session4/ThreadSignals/src/main.cpp b/Session4/ThreadSignals/src/main.cpp new file mode 100644 index 0000000..6abc72b --- /dev/null +++ b/Session4/ThreadSignals/src/main.cpp @@ -0,0 +1,57 @@ +#include + + +DigitalOut led1(LED1); +DigitalOut led2(LED2); +DigitalOut led3(LED3); + +// Interrupt Handler +InterruptIn theButton(BUTTON1); + +//Create an empty thread object ready to attach a function +Thread thread; +Thread thread2; + +//Function to deal with blinking the second LED +void led2_thread() { + //Loop forever + while (true) { + led2 = !led2; + thread_sleep_for(5000); + + // Set a Signal to blink LED3 + thread2.flags_set(0x42); + } +} + +void led3_thread() { + //Loop forever. + while (1){ + //With for the Signal before continuing + ThisThread::flags_wait_any(0x42); + for (int x=0; x<5; x++) { + led3 = !led3; + thread_sleep_for(100); + } + } +} + +void buttonHandler(){ + // Button handler interrupt, also sets flags. + thread2.flags_set(0x42); +} + +//Main Program +int main() { + + //Bind the interupt to a function + theButton.rise(&buttonHandler); + + //Attach the function to the Thread then Start it + thread.start(led2_thread); + thread2.start(led3_thread); + while (true) { + led1 = !led1; + thread_sleep_for(500); + } +} diff --git a/Future/Session4_ThreadSignals/test/README b/Session4/ThreadSignals/test/README similarity index 100% rename from Future/Session4_ThreadSignals/test/README rename to Session4/ThreadSignals/test/README