loop status callback working

This commit is contained in:
Wolfgang Hottgenroth 2020-10-27 22:28:03 +01:00
parent 2e4b0de78f
commit 73239f4436
No known key found for this signature in database
GPG Key ID: 656C88C7C1734267
3 changed files with 33 additions and 2 deletions

View File

@ -1,8 +1,13 @@
#ifndef _LOOPCTRL_H_ #ifndef _LOOPCTRL_H_
#define _LOOPCTRL_H_ #define _LOOPCTRL_H_
#include <stdbool.h>
void loopEnable(); void loopEnable();
void loopDisable(); void loopDisable();
void loopStatusCallback();
extern bool loopActive;
#endif // _LOOPCTRL_H_ #endif // _LOOPCTRL_H_

View File

@ -1,7 +1,12 @@
#include <main.h> #include <main.h>
#include <loopCtrl.h> #include <loopCtrl.h>
#include <led.h>
bool loopActive = false;
void loopEnable() { 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_SET);
HAL_GPIO_WritePin(Loop_Enable_GPIO_Port, Loop_Enable_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(Loop_Enable_GPIO_Port, Loop_Enable_Pin, GPIO_PIN_RESET);
} }
@ -9,4 +14,13 @@ void loopEnable() {
void loopDisable() { 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_SET);
HAL_GPIO_WritePin(Loop_Disable_GPIO_Port, Loop_Disable_Pin, GPIO_PIN_RESET); 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;
}
}

View File

@ -39,6 +39,11 @@ void helloWorld(void *handle) {
void helloMeterbus(void *handle) { void helloMeterbus(void *handle) {
static char hello[] = "Hello Meterbus\n\r"; static char hello[] = "Hello Meterbus\n\r";
if (! loopActive) {
loopEnable();
ledRed(false);
}
HAL_UART_Transmit_IT(&mbusUart, (uint8_t*) hello, strlen(hello)); HAL_UART_Transmit_IT(&mbusUart, (uint8_t*) hello, strlen(hello));
} }
@ -48,6 +53,7 @@ void toggleLoop(void *handle) {
if (state) { if (state) {
loopDisable(); loopDisable();
} else { } else {
ledRed(false);
loopEnable(); loopEnable();
} }
state ^= true; state ^= true;
@ -58,8 +64,8 @@ void my_setup_2() {
ledGreen(true); ledGreen(true);
schAdd(helloWorld, NULL, 0, 5000); schAdd(helloWorld, NULL, 0, 5000);
schAdd(toggleLoop, NULL, 0, 10000); // schAdd(toggleLoop, NULL, 0, 10000);
schAdd(helloMeterbus, NULL, 0, 1000); schAdd(helloMeterbus, NULL, 0, 10000);
} }
@ -70,3 +76,9 @@ void my_loop() {
void SYSTICK_Callback() { void SYSTICK_Callback() {
schUpdate(); schUpdate();
} }
void HAL_GPIO_EXTI_Callback(uint16_t pin) {
if (pin == Loop_Status_Pin) {
loopStatusCallback();
}
}