diff --git a/cube/User/Inc/loopCtrl.h b/cube/User/Inc/loopCtrl.h index 3ea1653..894bf6e 100644 --- a/cube/User/Inc/loopCtrl.h +++ b/cube/User/Inc/loopCtrl.h @@ -1,8 +1,13 @@ #ifndef _LOOPCTRL_H_ #define _LOOPCTRL_H_ +#include + void loopEnable(); void loopDisable(); +void loopStatusCallback(); + +extern bool loopActive; #endif // _LOOPCTRL_H_ diff --git a/cube/User/Src/loopCtrl.c b/cube/User/Src/loopCtrl.c index 1242f4a..c597680 100644 --- a/cube/User/Src/loopCtrl.c +++ b/cube/User/Src/loopCtrl.c @@ -1,7 +1,12 @@ #include #include +#include + + +bool loopActive = false; void loopEnable() { + loopActive = true; HAL_GPIO_WritePin(Loop_Enable_GPIO_Port, Loop_Enable_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(Loop_Enable_GPIO_Port, Loop_Enable_Pin, GPIO_PIN_RESET); } @@ -9,4 +14,13 @@ void loopEnable() { void loopDisable() { HAL_GPIO_WritePin(Loop_Disable_GPIO_Port, Loop_Disable_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(Loop_Disable_GPIO_Port, Loop_Disable_Pin, GPIO_PIN_RESET); + loopActive = false; } + +void loopStatusCallback() { + GPIO_PinState status = HAL_GPIO_ReadPin(Loop_Status_GPIO_Port, Loop_Status_Pin); + if (status == GPIO_PIN_SET) { + ledRed(true); + loopActive = false; + } +} \ No newline at end of file diff --git a/cube/User/Src/main2.c b/cube/User/Src/main2.c index 9baf0f4..dbc2e1e 100644 --- a/cube/User/Src/main2.c +++ b/cube/User/Src/main2.c @@ -39,6 +39,11 @@ void helloWorld(void *handle) { void helloMeterbus(void *handle) { static char hello[] = "Hello Meterbus\n\r"; + if (! loopActive) { + loopEnable(); + ledRed(false); + } + HAL_UART_Transmit_IT(&mbusUart, (uint8_t*) hello, strlen(hello)); } @@ -48,6 +53,7 @@ void toggleLoop(void *handle) { if (state) { loopDisable(); } else { + ledRed(false); loopEnable(); } state ^= true; @@ -58,8 +64,8 @@ void my_setup_2() { ledGreen(true); schAdd(helloWorld, NULL, 0, 5000); - schAdd(toggleLoop, NULL, 0, 10000); - schAdd(helloMeterbus, NULL, 0, 1000); + // schAdd(toggleLoop, NULL, 0, 10000); + schAdd(helloMeterbus, NULL, 0, 10000); } @@ -70,3 +76,9 @@ void my_loop() { void SYSTICK_Callback() { schUpdate(); } + +void HAL_GPIO_EXTI_Callback(uint16_t pin) { + if (pin == Loop_Status_Pin) { + loopStatusCallback(); + } +} \ No newline at end of file