78 lines
1.5 KiB
C
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);
|
|
}
|
|
}
|
|
|
|
}
|