Mercurial > public > ostc4
view Small_CPU/Src/gpio.c @ 1078:082825daccb5 Icon_Integration tip
Added control views for HUD:
The HUD implementation may now be activated by the compile switch ENABLE_HUD_SUPPORT. The HUD will become visible onces detected in the CvOpt overview menu. The first implementation is for testing only => The LEDs may be operated by a number field. Positiv values activate the red, negativ the green LEDs. Depending on the value blink sequences will be scheduled.
At the moment no dive specific data is mapped to the LED operation (like e.g. warnings).
| author | Ideenmodellierer |
|---|---|
| date | Mon, 02 Mar 2026 17:30:38 +0100 |
| parents | 9fabad6436a2 |
| children |
line wrap: on
line source
/** ****************************************************************************** * @file gpio.c * @author heinrichs weikamp gmbh * @version V0.0.1 * @date 08-Dec-2024 * @brief Definitions for GPIO operations (GPIO_V2) * @verbatim ============================================================================== ##### How to use ##### ============================================================================== @endverbatim ****************************************************************************** * @attention * * <h2><center>© COPYRIGHT(c) 2024 heinrichs weikamp</center></h2> * ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "stm32f4xx_hal.h" #include "gpio.h" #include "data_exchange.h" #include "scheduler.h" #include "uart_Internal.h" #include "GNSS.h" /* Exported variables --------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ static uint8_t GPIO_Version = 0; /* Private types -------------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Exported functions --------------------------------------------------------*/ void GPIO_LEDs_VIBRATION_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; __GPIOA_CLK_ENABLE(); GPIO_InitStructure.Pin = LED_CONTROL_PIN_RED; GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStructure.Pull = GPIO_PULLUP; GPIO_InitStructure.Speed = GPIO_SPEED_LOW; HAL_GPIO_Init( GPIOA, &GPIO_InitStructure); HAL_GPIO_WritePin( GPIOA, LED_CONTROL_PIN_RED, GPIO_PIN_SET); GPIO_InitStructure.Pin = LED_CONTROL_PIN_GREEN; GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStructure.Pull = GPIO_PULLUP; GPIO_InitStructure.Speed = GPIO_SPEED_LOW; HAL_GPIO_Init( GPIOA, &GPIO_InitStructure); HAL_GPIO_WritePin( GPIOA, LED_CONTROL_PIN_GREEN, GPIO_PIN_SET); GPIO_InitStructure.Pin = VIBRATION_CONTROL_PIN; GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStructure.Pull = GPIO_PULLDOWN; GPIO_InitStructure.Speed = GPIO_SPEED_LOW; HAL_GPIO_Init( GPIOA, &GPIO_InitStructure); HAL_GPIO_WritePin( GPIOA, VIBRATION_CONTROL_PIN, GPIO_PIN_RESET); } void GPIO_GNSS_Init() { GPIO_InitTypeDef GPIO_InitStructure; __GPIOB_CLK_ENABLE(); GPIO_InitStructure.Pin = GPS_POWER_CONTROL_PIN; GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStructure.Pull = GPIO_PULLUP; GPIO_InitStructure.Speed = GPIO_SPEED_LOW; HAL_GPIO_Init( GPIOB, &GPIO_InitStructure); HAL_GPIO_WritePin( GPIOB, GPS_POWER_CONTROL_PIN, GPIO_PIN_SET); GPIO_InitStructure.Pin = GPS_BCKP_CONTROL_PIN; GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStructure.Pull = GPIO_PULLDOWN; GPIO_InitStructure.Speed = GPIO_SPEED_LOW; HAL_GPIO_Init( GPIOB, &GPIO_InitStructure); HAL_GPIO_WritePin( GPIOB, GPS_BCKP_CONTROL_PIN, GPIO_PIN_SET); } void GPIO_Power_MainCPU_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; __GPIOC_CLK_ENABLE(); GPIO_InitStructure.Pin = MAINCPU_CONTROL_PIN; GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStructure.Pull = GPIO_PULLUP; GPIO_InitStructure.Speed = GPIO_SPEED_LOW; HAL_GPIO_Init( GPIOC, &GPIO_InitStructure); HAL_GPIO_WritePin( GPIOC, MAINCPU_CONTROL_PIN, GPIO_PIN_RESET); } void GPIO_HandleBuzzer() { static uint32_t buzzerOnTick = 0; static uint8_t buzzerWasOn = 0; if(((global.dataSendToSlave.data.externalInterface_Cmd & EXT_INTERFACE_BUZZER_ON) != 0)) { if(!buzzerWasOn) { buzzerOnTick = HAL_GetTick(); GPIO_VIBRATION_ON(); /* GPIO_LED_RED_ON(); */ if(time_elapsed_ms(buzzerOnTick,HAL_GetTick()) > EXT_INTERFACE_BUZZER_ON_TIME_MS) { GPIO_VIBRATION_OFF(); /* GPIO_LED_RED_OFF(); */ } } buzzerWasOn = 1; } else { if(buzzerWasOn) { buzzerOnTick = 0; GPIO_VIBRATION_OFF(); /* GPIO_LED_RED_OFF(); */ } buzzerWasOn = 0; } } void GPIO_Power_MainCPU_ON(void) { HAL_GPIO_WritePin( GPIOC, MAINCPU_CONTROL_PIN, GPIO_PIN_RESET); } void GPIO_Power_MainCPU_OFF(void) { HAL_GPIO_WritePin( GPIOC, MAINCPU_CONTROL_PIN, GPIO_PIN_SET); } void GPIO_LED_GREEN_ON(void) { HAL_GPIO_WritePin( GPIOA, LED_CONTROL_PIN_GREEN, GPIO_PIN_RESET); } void GPIO_LED_GREEN_OFF(void) { HAL_GPIO_WritePin( GPIOA, LED_CONTROL_PIN_GREEN, GPIO_PIN_SET); } void GPIO_LED_RED_ON(void) { HAL_GPIO_WritePin( GPIOA, LED_CONTROL_PIN_RED, GPIO_PIN_RESET); } void GPIO_LED_RED_OFF(void) { HAL_GPIO_WritePin( GPIOA, LED_CONTROL_PIN_RED, GPIO_PIN_SET); } void GPIO_VIBRATION_ON(void) { HAL_GPIO_WritePin( GPIOA, VIBRATION_CONTROL_PIN, GPIO_PIN_SET); } void GPIO_VIBRATION_OFF(void) { HAL_GPIO_WritePin( GPIOA, VIBRATION_CONTROL_PIN, GPIO_PIN_RESET); } void GPIO_GPS_ON(void) { HAL_GPIO_WritePin( GPIOB, GPS_POWER_CONTROL_PIN, GPIO_PIN_RESET); } void GPIO_GPS_OFF(void) { HAL_GPIO_WritePin( GPIOB, GPS_POWER_CONTROL_PIN, GPIO_PIN_SET); } void GPIO_GPS_BCKP_ON(void) { HAL_GPIO_WritePin( GPIOB, GPS_BCKP_CONTROL_PIN, GPIO_PIN_SET); } void GPIO_GPS_BCKP_OFF(void) { HAL_GPIO_WritePin( GPIOB, GPS_BCKP_CONTROL_PIN, GPIO_PIN_RESET); } uint8_t GPIO_GetVersion() { return GPIO_Version; } void GPIO_Activate_V2(void) { if(GPIO_Version == 0) { GPIO_Version = 1; } } void GPIO_Init_V2(void) { if(GPIO_Version == 1) { GPIO_LEDs_VIBRATION_Init(); #ifdef ENABLE_GNSS_INTERN GNSS_IO_init(); GPIO_GPS_ON(); GPIO_GPS_BCKP_ON(); MX_USART6_UART_Init(); GNSS_Init(&GNSS_Handle, &huart6); #endif } } /* Private functions ---------------------------------------------------------*/ /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/
