IMU_DUAL/Core/Src/inter_callback.c
2022-12-06 17:34:02 +08:00

78 lines
1.5 KiB
C

#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);
}
}
}