rc_rock.c 1020 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "rc_rock.h"
  2. /* 摇杆失联判定 2s */
  3. #define RC_ROCK_LINK_LOST_TIME_US 2000000
  4. /**
  5. * @brief 摇杆数据初始化, 上电时调用
  6. *
  7. */
  8. void RcRock_Struct_Init(RC_Rock_Data *prc_rock)
  9. {
  10. prc_rock->rc.signal_health = RC_SIGNAL_HEALTH;
  11. prc_rock->rc.link_status = COMP_NOEXIST;
  12. for (uint8_t ch = 0; ch < RC_INPUT_CH_NUM; ch++)
  13. {
  14. prc_rock->rc.ch_value[ch] = 1500;
  15. prc_rock->rc.raw_ch_value[ch] = 1500;
  16. prc_rock->rc.calib_offset[ch] = 1500;
  17. prc_rock->rc.calib_factor_up[ch] = 1000;
  18. prc_rock->rc.calib_factor_down[ch] = 1000;
  19. }
  20. }
  21. /**
  22. * @brief 监测 rc_rock 通讯连接状态, 本函数至少 5 hz 频率调用
  23. *
  24. */
  25. void RcRock_CheckLinkStatus(float dt_s)
  26. {
  27. RC_Rock_Data *prock = &rc_rock;
  28. if (prock->rc.link_status == COMP_NORMAL)
  29. {
  30. prock->_link_lost_time_us += dt_s * 1000000;
  31. if (prock->_link_lost_time_us > RC_ROCK_LINK_LOST_TIME_US)
  32. {
  33. prock->rc.link_status = COMP_LOST;
  34. }
  35. }
  36. }