Mercurial > public > ostc4
diff Small_CPU/Src/baseCPU2.c @ 880:f012fcd7f465 Evo_2_23
support for led and vibration
author | heinrichsweikamp |
---|---|
date | Thu, 29 Aug 2024 15:01:30 +0200 |
parents | 2cab242c9a4a |
children | 17f02ac9da67 |
line wrap: on
line diff
--- a/Small_CPU/Src/baseCPU2.c Thu Aug 29 12:03:10 2024 +0200 +++ b/Small_CPU/Src/baseCPU2.c Thu Aug 29 15:01:30 2024 +0200 @@ -212,27 +212,9 @@ #define BUTTON_OSTC_HAL_RCC_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() #define BUTTON_OSTC_IRQn EXTI0_IRQn -#define BUTTON_TEST_GPIO_PIN GPIO_PIN_3 -#define BUTTON_TEST_GPIO_PORT GPIOA -#define BUTTON_TEST_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE() -#define BUTTON_TEST_IRQn EXTI3_IRQn - -#define WIRELSS_RISING_GPIO_PIN GPIO_PIN_1 -#define WIRELSS_RISING_GPIO_PORT GPIOA -#define WIRELSS_RISING_HAL_RCC_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() -#define WIRELSS_RISING_IRQn EXTI1_IRQn - -#define WIRELSS_FALLING_GPIO_PIN GPIO_PIN_2 -#define WIRELSS_FALLING_GPIO_PORT GPIOA -#define WIRELSS_FALLING_HAL_RCC_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() -#define WIRELSS_FALLING_IRQn EXTI2_IRQn - -#define WIRELSS_POWER_GPIO_PIN GPIO_PIN_12 -#define WIRELSS_POWER_GPIO_PORT GPIOB -#define WIRELSS_POWER_HAL_RCC_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() - - -#define LED_CONTROL_PIN GPIO_PIN_3 /* PortC */ +#define VIBRATION_CONTROL_PIN GPIO_PIN_3 /* PortA */ +#define LED_CONTROL_PIN_RED GPIO_PIN_2 /* PortA */ +#define LED_CONTROL_PIN_GREEN GPIO_PIN_1 /* PortA */ #define MAINCPU_CONTROL_PIN GPIO_PIN_0 /* PortC */ /* Private macro -------------------------------------------------------------*/ @@ -245,13 +227,16 @@ static void EXTI_Wakeup_Button_Init(void); static void EXTI_Wakeup_Button_DeInit(void); -static void EXTI_Test_Button_Init(void); -static void EXTI_Test_Button_DeInit(void); - -static void GPIO_LED_Init(void); +static void GPIO_LEDs_VIBRATION_Init(void); static void GPIO_Power_MainCPU_Init(void); static void GPIO_Power_MainCPU_ON(void); static void GPIO_Power_MainCPU_OFF(void); +static void GPIO_LED_RED_OFF(void); +static void GPIO_LED_RED_ON(void); +static void GPIO_LED_GREEN_OFF(void); +static void GPIO_LED_GREEN_ON(void); +static void GPIO_VIBRATION_OFF(void); +static void GPIO_VIBRATION_ON(void); #ifdef DEBUG_I2C_LINES void GPIO_test_I2C_lines(void); @@ -306,7 +291,7 @@ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); MX_RTC_init(); - GPIO_LED_Init(); + GPIO_LEDs_VIBRATION_Init(); GPIO_new_DEBUG_Init(); // added 170322 hw initGlobals(); @@ -416,15 +401,24 @@ if (global.mode == MODE_BOOT) { GPIO_Power_MainCPU_OFF(); + + GPIO_LED_GREEN_ON(); HAL_Delay(100); // for GPIO_Power_MainCPU_ON(); GPIO_Power_MainCPU_ON(); + + GPIO_LED_GREEN_OFF(); + + GPIO_LED_RED_ON(); + GPIO_VIBRATION_ON(); + HAL_Delay(100); + GPIO_LED_RED_OFF(); + GPIO_VIBRATION_OFF(); } SPI_synchronize_with_Master(); MX_DMA_Init(); MX_SPI1_Init(); SPI_Start_single_TxRx_with_Master(); /* be prepared for the first data exchange */ Scheduler_Request_sync_with_SPI(SPI_SYNC_METHOD_HARD); - EXTI_Test_Button_Init(); global.mode = MODE_SURFACE; break; @@ -493,19 +487,17 @@ NOT_USED_AT_THE_MOMENT_scheduleSleepMode(); */ - EXTI_Test_Button_DeInit(); externalInterface_SwitchUART(EXT_INTERFACE_UART_OFF); externalInterface_SwitchPower33(false); if (hasExternalClock()) SystemClock_Config_HSI(); sleep_prepare(); - GPIO_LED_Init(); + GPIO_LEDs_VIBRATION_Init(); scheduleSleepMode(); if (hasExternalClock()) SystemClock_Config_HSE(); - GPIO_LED_Init(); EXTI_Wakeup_Button_DeInit(); ADCx_Init(); GPIO_Power_MainCPU_Init(); @@ -561,16 +553,8 @@ } } else - if (GPIO_Pin == BUTTON_TEST_GPIO_PIN) { - if (!global.demo_mode && (global.mode == MODE_SURFACE)) { - global.demo_mode = 1; - global.mode = MODE_DIVE; - } else if (global.demo_mode && (global.mode == MODE_DIVE) - && (global.lifeData.dive_time_seconds > 10)) { - global.demo_mode = 0; - global.dataSendToMaster.mode = MODE_ENDDIVE; - global.deviceDataSendToMaster.mode = MODE_ENDDIVE; - } + { + } } @@ -811,15 +795,27 @@ } */ -static void GPIO_LED_Init(void) { +static void GPIO_LEDs_VIBRATION_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; - __GPIOC_CLK_ENABLE(); - GPIO_InitStructure.Pin = LED_CONTROL_PIN; + __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_FAST; - HAL_GPIO_Init( GPIOC, &GPIO_InitStructure); + GPIO_InitStructure.Speed = GPIO_SPEED_LOW; + HAL_GPIO_Init( GPIOA, &GPIO_InitStructure); + + 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); + + 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); } void GPIO_new_DEBUG_Init(void) { @@ -866,6 +862,31 @@ HAL_GPIO_WritePin( GPIOC, MAINCPU_CONTROL_PIN, GPIO_PIN_SET); } +static void GPIO_LED_GREEN_ON(void) { + HAL_GPIO_WritePin( GPIOA, LED_CONTROL_PIN_GREEN, GPIO_PIN_RESET); +} + +static void GPIO_LED_GREEN_OFF(void) { + HAL_GPIO_WritePin( GPIOA, LED_CONTROL_PIN_GREEN, GPIO_PIN_SET); +} + +static void GPIO_LED_RED_ON(void) { + HAL_GPIO_WritePin( GPIOA, LED_CONTROL_PIN_RED, GPIO_PIN_RESET); +} + +static void GPIO_LED_RED_OFF(void) { + HAL_GPIO_WritePin( GPIOA, LED_CONTROL_PIN_RED, GPIO_PIN_SET); +} + +static void GPIO_VIBRATION_ON(void) { + HAL_GPIO_WritePin( GPIOA, VIBRATION_CONTROL_PIN, GPIO_PIN_SET); +} + +static void GPIO_VIBRATION_OFF(void) { + HAL_GPIO_WritePin( GPIOA, VIBRATION_CONTROL_PIN, GPIO_PIN_RESET); +} + + /** * @brief Configures EXTI Line0 (connected to PA0 + PA1 pin) in interrupt mode * @param None @@ -898,40 +919,6 @@ HAL_NVIC_DisableIRQ( BUTTON_OSTC_IRQn); } -static void EXTI_Test_Button_Init(void) { - GPIO_InitTypeDef GPIO_InitStructure; - - BUTTON_TEST_GPIO_CLK_ENABLE(); - GPIO_InitStructure.Pin = BUTTON_TEST_GPIO_PIN; - GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING; - GPIO_InitStructure.Pull = GPIO_PULLUP; - HAL_GPIO_Init( BUTTON_TEST_GPIO_PORT, &GPIO_InitStructure); - HAL_NVIC_SetPriority( BUTTON_TEST_IRQn, 0x0F, 0); - HAL_NVIC_EnableIRQ( BUTTON_TEST_IRQn); -} - -static void EXTI_Test_Button_DeInit(void) { - GPIO_InitTypeDef GPIO_InitStructure; - - GPIO_InitStructure.Mode = GPIO_MODE_ANALOG; - GPIO_InitStructure.Speed = GPIO_SPEED_LOW; - GPIO_InitStructure.Pull = GPIO_NOPULL; - - GPIO_InitStructure.Pin = BUTTON_TEST_GPIO_PIN; - HAL_GPIO_Init( BUTTON_TEST_GPIO_PORT, &GPIO_InitStructure); - HAL_NVIC_DisableIRQ( BUTTON_TEST_IRQn); -} - -/* NUCLEO C 13 - KEY_BUTTON_GPIO_CLK_ENABLE(); - GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING; - GPIO_InitStructure.Pull = GPIO_NOPULL; - GPIO_InitStructure.Pin = KEY_BUTTON_PIN; - HAL_GPIO_Init(KEY_BUTTON_GPIO_PORT, &GPIO_InitStructure); - HAL_NVIC_SetPriority(KEY_BUTTON_EXTI_IRQn, 2, 0); - HAL_NVIC_EnableIRQ(KEY_BUTTON_EXTI_IRQn); - */ - /** * @brief Wake Up Timer callback * @param hrtc: RTC handle @@ -990,7 +977,7 @@ GPIO_InitStruct.Pin = GPIO_PIN_All - ^ ( MAINCPU_CONTROL_PIN | CHARGE_OUT_PIN | CHARGE_IN_PIN | EXT33V_CONTROL_PIN | LED_CONTROL_PIN); /* power off & charger in & charge out & OSC32 & ext33Volt */ + ^ ( MAINCPU_CONTROL_PIN | CHARGE_OUT_PIN | CHARGE_IN_PIN | EXT33V_CONTROL_PIN | LED_CONTROL_PIN_RED | LED_CONTROL_PIN_GREEN); /* power off & charger in & charge out & OSC32 & ext33Volt */ HAL_GPIO_Init( GPIOC, &GPIO_InitStruct); @@ -1004,6 +991,9 @@ HAL_GPIO_Init( GPIOH, &GPIO_InitStruct); GPIO_Power_MainCPU_OFF(); + GPIO_LED_GREEN_OFF(); + GPIO_LED_RED_OFF(); + #ifndef DEBUGMODE __HAL_RCC_GPIOB_CLK_DISABLE();