rc_rock.c 1.0 KB

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