fmt-rtos
This commit is contained in:
parent
b011033330
commit
6c44c742e8
114 changed files with 17837 additions and 4209 deletions
|
@ -23,6 +23,7 @@
|
|||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
/* USER CODE END Includes */
|
||||
|
||||
|
@ -33,7 +34,19 @@
|
|||
|
||||
/* Private define ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PD */
|
||||
#define DOOR_SENSOR_BANK GPIOA
|
||||
#define DOOR_SENSOR_PIN GPIO_PIN_7
|
||||
#define DOOR_LOCK_BANK GPIOA
|
||||
#define DOOR_LOCK_PIN GPIO_PIN_9
|
||||
#define ALARM_BANK GPIOC
|
||||
#define ALARM_PIN GPIO_PIN_0
|
||||
|
||||
#define DOOR_STATE_OPEN 0
|
||||
#define DOOR_STATE_CLOSED 1
|
||||
#define DOOR_LOCK_LOCKED 1
|
||||
#define DOOR_LOCK_UNLOCKED 0
|
||||
|
||||
#define DOOR_ERROR_ALARM_DELAY 10000 //ms
|
||||
/* USER CODE END PD */
|
||||
|
||||
/* Private macro -------------------------------------------------------------*/
|
||||
|
@ -55,6 +68,14 @@ const osThreadAttr_t doorHandler_attributes = { .name = "doorHandler",
|
|||
/* USER CODE BEGIN PV */
|
||||
uint8_t uart_buffer[10];
|
||||
uint8_t uart_index = 0;
|
||||
uint32_t door_lock_command_time = 0;
|
||||
|
||||
bool door_state = false;
|
||||
bool door_lock_state = false;
|
||||
bool door_lock_state_command = false;
|
||||
bool door_lock_waiting = false;
|
||||
|
||||
bool alarm_active = false;
|
||||
/* USER CODE END PV */
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
|
@ -147,27 +168,6 @@ int main(void) {
|
|||
/* Infinite loop */
|
||||
/* USER CODE BEGIN WHILE */
|
||||
while (1) {
|
||||
|
||||
if (HAL_UART_Receive(&huart2, uart_buffer + uart_index, 1, 250)
|
||||
== HAL_OK) {
|
||||
uart_index++;
|
||||
if (uart_buffer[uart_index - 1] == 0xFF) {
|
||||
if (uart_index > 1) {
|
||||
if (uart_buffer[0] == 0x00) {
|
||||
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, uart_buffer[1]);
|
||||
} else if (uart_buffer[0] == 0x01) {
|
||||
uint8_t payload[3] = { 0x01, HAL_GPIO_ReadPin(GPIOA,
|
||||
GPIO_PIN_7), 0xFF };
|
||||
HAL_UART_Transmit(&huart2, payload, 3, 1500);
|
||||
} else if (uart_buffer[0] == 0x02) {
|
||||
//HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_9);
|
||||
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, uart_buffer[1]);
|
||||
}
|
||||
}
|
||||
uart_index = 0;
|
||||
memset(uart_buffer, 0, 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
|
@ -317,21 +317,25 @@ void StartMainTask(void *argument) {
|
|||
uart_index++;
|
||||
if (uart_buffer[uart_index - 1] == 0xFF) {
|
||||
if (uart_index > 1) {
|
||||
//Command Internal LED
|
||||
if (uart_buffer[0] == 0x00) {
|
||||
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, uart_buffer[1]);
|
||||
} else if (uart_buffer[0] == 0x01) {
|
||||
uint8_t payload[3] = { 0x01, HAL_GPIO_ReadPin(GPIOA,
|
||||
GPIO_PIN_7), 0xFF };
|
||||
}
|
||||
// Get Current Door State
|
||||
else if (uart_buffer[0] == 0x01) {
|
||||
uint8_t payload[3] = { 0x01, door_state, 0xFF };
|
||||
HAL_UART_Transmit(&huart2, payload, 3, 1500);
|
||||
} else if (uart_buffer[0] == 0x02) {
|
||||
//HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_9);
|
||||
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, uart_buffer[1]);
|
||||
}
|
||||
//
|
||||
else if (uart_buffer[0] == 0x02) {
|
||||
door_lock_state_command = uart_buffer[1];
|
||||
}
|
||||
}
|
||||
uart_index = 0;
|
||||
memset(uart_buffer, 0, 10);
|
||||
}
|
||||
}
|
||||
vTaskDelay(1);
|
||||
}
|
||||
/* USER CODE END 5 */
|
||||
}
|
||||
|
@ -347,7 +351,38 @@ void startDoorHandleTask(void *argument) {
|
|||
/* USER CODE BEGIN startDoorHandleTask */
|
||||
/* Infinite loop */
|
||||
for (;;) {
|
||||
osDelay(1);
|
||||
door_state = HAL_GPIO_ReadPin(DOOR_SENSOR_BANK, DOOR_SENSOR_PIN);
|
||||
if (door_lock_state != door_lock_state_command) {
|
||||
if (door_lock_state_command == DOOR_LOCK_LOCKED) {
|
||||
if (door_state == DOOR_STATE_CLOSED) {
|
||||
HAL_GPIO_WritePin(DOOR_LOCK_PIN, DOOR_LOCK_BANK, 1);
|
||||
door_lock_state = DOOR_LOCK_LOCKED;
|
||||
} else {
|
||||
if (!door_lock_waiting) {
|
||||
door_lock_command_time = HAL_GetTick();
|
||||
door_lock_waiting = true;
|
||||
} else {
|
||||
if (door_state == DOOR_STATE_OPEN) {
|
||||
if (HAL_GetTick()
|
||||
- door_lock_command_time>DOOR_ERROR_ALARM_DELAY) {
|
||||
alarm_active = true;
|
||||
HAL_GPIO_WritePin(ALARM_BANK, ALARM_PIN, 1);
|
||||
}
|
||||
} else {
|
||||
HAL_GPIO_WritePin(DOOR_LOCK_PIN, DOOR_LOCK_BANK, 1);
|
||||
door_lock_state = DOOR_LOCK_LOCKED;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (door_lock_state_command == DOOR_LOCK_UNLOCKED) {
|
||||
HAL_GPIO_WritePin(DOOR_LOCK_PIN, DOOR_LOCK_BANK, 0);
|
||||
door_lock_state = DOOR_LOCK_UNLOCKED;
|
||||
|
||||
}
|
||||
}
|
||||
//HAL_GPIO_WritePin(DOOR_LOCK_PIN, DOOR_LOCK_BANK, uart_buffer[1]);
|
||||
vTaskDelay(100);
|
||||
|
||||
}
|
||||
/* USER CODE END startDoorHandleTask */
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue