#include "main.h" #include "user_asm330lhh.h" #include "asm330lhh_reg.h" #include "rtklib.h" extern uint32_t time_100us; extern SPI_HandleTypeDef hspi1; extern TIM_HandleTypeDef htim1; extern UART_HandleTypeDef huart1; extern UART_HandleTypeDef huart2; extern nmea_t nmea; IMU_mng IMU_mng_st={0}; IMU_mng IMU_mng_tdk={0}; extern void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == htim1.Instance) { if(nmea.sol.utctime.sec+0.0001<1) { nmea.sol.utctime.sec+=0.0001; } if(nmea.sol.time.sec+0.0001<1) { nmea.sol.time.sec+=0.0001; } } } void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if(GPIO_Pin == GPIO_PIN_1) { if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)==GPIO_PIN_RESET)//PPS impulse { nmea.sol.utctime.sec=0; nmea.sol.time.sec=0;/* time (GPST) */ nmea.sol.utctime.time++; nmea.sol.time.time++;/* time (GPST) */ } } if(GPIO_Pin == GPIO_PIN_0) { if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0)==GPIO_PIN_RESET)//INI1 from ST IMU { if((!IMU_mng_st.lock)&&(!IMU_mng_st.ready)) { IMU_mng_st.lock=IMU_LOCK; IMU_mng_st.time= nmea.sol.time; IMU_mng_st.utctime= nmea.sol.utctime; IMU_mng_st.ready=IMU_READY; IMU_mng_st.lock=IMU_UNLOCK; } } } } uint8_t rx_uart2=0; void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance==huart2.Instance) { if(input_nmea(&nmea, rx_uart2)!=1) { HAL_UART_Receive_IT(&huart2, &rx_uart2, 1); } else { HAL_TIM_Base_Start(&htim1); } } }