/* * navikit.c * * Created on: Apr 17, 2020 * Author: oarap */ #include "navikit.h" NaviKit_t NaviKit; void NaviKit_var_init() { NaviKit.sys.sta = shutdown; NaviKit.sys.next_sta = shutdown; } void Beep(uint32_t time_ms) { HAL_GPIO_WritePin(SYS_BUZZ_CTL_GPIO_Port,SYS_BUZZ_CTL_Pin, GPIO_PIN_RESET); HAL_Delay(time_ms>>1); HAL_GPIO_WritePin(SYS_BUZZ_CTL_GPIO_Port,SYS_BUZZ_CTL_Pin, GPIO_PIN_SET); HAL_Delay(time_ms>>1); } void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { if(hadc->Instance == ADC1) { NaviKit.pmb.out_24v_div16 = (float)((NaviKit.pmb.adc[0]*16.0) / 1200.0); NaviKit.pmb.out_5v_div8 = (float)((NaviKit.pmb.adc[1]*8.0 ) / 1200.0); NaviKit.pmb.out_12v_div8 = (float)((NaviKit.pmb.adc[2]*8.0 ) / 1200.0); NaviKit.pmb.bkp_bat_div8 = (float)((NaviKit.pmb.adc[3]*8.0 ) / 1200.0); NaviKit.pmb.main_pwr_div16 = (float)((NaviKit.pmb.adc[4]*16.0) / 1200.0); } } void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if(GPIO_Pin == SOM_SHUTDOWN_REQ_Pin) { if(HAL_GPIO_ReadPin(SOM_SHUTDOWN_REQ_GPIO_Port, SOM_SHUTDOWN_REQ_Pin)==GPIO_PIN_SET) {//Rising edge trigger NaviKit.som.shutdown_req = true; if(NaviKit.sys.sta == runing) { NaviKit.sys.next_sta = shutdown; printf("enter shutdown mode... \n"); } } if(HAL_GPIO_ReadPin(SOM_SHUTDOWN_REQ_GPIO_Port, SOM_SHUTDOWN_REQ_Pin)==GPIO_PIN_RESET) {//falling edge trigger NaviKit.som.shutdown_req = false; } } else if(GPIO_Pin == SYS_POWER_BTN_Pin) { if(HAL_GPIO_ReadPin(SYS_POWER_BTN_GPIO_Port, SYS_POWER_BTN_Pin)==GPIO_PIN_SET) {//Rising edge trigger NaviKit.sys.power_btn = true; printf("power_btn pushed \n"); } if(HAL_GPIO_ReadPin(SYS_POWER_BTN_GPIO_Port, SYS_POWER_BTN_Pin)==GPIO_PIN_RESET) {//falling edge trigger NaviKit.sys.power_btn = false; printf("power_btn released \n"); } } else if(GPIO_Pin == SYS_CUSTOM_BTN_Pin) { if(HAL_GPIO_ReadPin(SYS_CUSTOM_BTN_GPIO_Port, SYS_CUSTOM_BTN_Pin)==GPIO_PIN_SET) {//Rising edge trigger NaviKit.sys.custom_btn = false; printf("custom_btn released \n"); } if(HAL_GPIO_ReadPin(SYS_CUSTOM_BTN_GPIO_Port, SYS_CUSTOM_BTN_Pin)==GPIO_PIN_RESET) {//falling edge trigger NaviKit.sys.custom_btn = true; printf("custom_btn pushed \n"); } } }