You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

68 lines
2.8 KiB

  1. /**
  2. * @file app_cfg.h
  3. * @brief 应用任务、Modbus 通信和状态寄存器配置。
  4. * @version 2.0
  5. * @author zengbingjie
  6. * @date 2026-07-29
  7. * @copyright 版权所有信捷科技股份有限公司
  8. * @note 修改记录:2.0 增加 Modbus RTU 从站任务配置。
  9. */
  10. #ifndef APP_CFG_H
  11. #define APP_CFG_H
  12. #define CPU_CFG_KA_IPL_BOUNDARY (4U)
  13. #define CPU_CFG_NVIC_PRIO_BITS (4U)
  14. #define APP_TASK_MODBUS_PRIO (4U)
  15. #define APP_TASK_START_PRIO (5U)
  16. #define APP_TASK_T35_PRIO (6U)
  17. /* uC/OS-II 定时器管理任务使用低优先级保留任务槽。 */
  18. #define OS_TASK_TMR_PRIO (OS_LOWEST_PRIO - 2U)
  19. #define APP_TASK_START_STK_SIZE (128U)
  20. #define APP_TASK_MODBUS_STK_SIZE (384U)
  21. #define APP_TASK_T35_STK_SIZE (128U)
  22. /* USART1 使用 115200 bit/s、8E1:1 个起始位、8 个数据位、偶校验和 1 个停止位。 */
  23. #define APP_MODBUS_BAUD_RATE (115200U)
  24. #define APP_MODBUS_BITS_PER_CHARACTER (10U)
  25. /* 向上取整的单字符时间,确保计时不会短于实际串行字符。 */
  26. #define APP_MODBUS_RTU_CHARACTER_TIME_US \
  27. (((APP_MODBUS_BITS_PER_CHARACTER * 1000000U) \
  28. + APP_MODBUS_BAUD_RATE - 1U) / APP_MODBUS_BAUD_RATE)
  29. /* 高于 19200 bit/s 时遵循 Modbus RTU 的固定 750 us / 1750 us 时序。 */
  30. #define APP_MODBUS_RTU_T15_US \
  31. ((APP_MODBUS_BAUD_RATE > 19200U) ? 750U : \
  32. ((3U * APP_MODBUS_RTU_CHARACTER_TIME_US + 1U) / 2U))
  33. #define APP_MODBUS_RTU_T35_US \
  34. ((APP_MODBUS_BAUD_RATE > 19200U) ? 1750U : \
  35. ((7U * APP_MODBUS_RTU_CHARACTER_TIME_US + 1U) / 2U))
  36. #define APP_MODBUS_RTU_T15_RX_TIMEOUT_US \
  37. (APP_MODBUS_RTU_T15_US + APP_MODBUS_RTU_CHARACTER_TIME_US)
  38. #define APP_MODBUS_RTU_T35_AFTER_T15_US \
  39. (APP_MODBUS_RTU_T35_US - APP_MODBUS_RTU_T15_RX_TIMEOUT_US)
  40. /* TIM5 使用 1 MHz 计数基准,将 RTU 静默时间直接表示为微秒。 */
  41. #define APP_MODBUS_RTU_TIMER_CLOCK_HZ (84000000U)
  42. #define APP_MODBUS_RTU_TIMER_TICK_HZ (1000000U)
  43. #define APP_MODBUS_STATUS_CHECK_TICKS (1U)
  44. #define APP_MODBUS_STATUS_UPDATE_TICKS (100U)
  45. #define APP_MODBUS_LINK_TIMEOUT_TICKS (3000U)
  46. #define APP_MODBUS_TX_TIMEOUT_TICKS (100U)
  47. /* 线圈 0 是链路状态;线圈 1 至 7 映射为实际 Q1 至 Q7 输出。 */
  48. #define APP_MODBUS_OUTPUT_COIL_COUNT (8U)
  49. #define APP_MODBUS_FIRST_USER_OUTPUT_COIL (1U)
  50. #define APP_MODBUS_USER_OUTPUT_COIL_COUNT \
  51. (APP_MODBUS_OUTPUT_COIL_COUNT - APP_MODBUS_FIRST_USER_OUTPUT_COIL)
  52. #define APP_MODBUS_LINK_STATE_COIL (100U)
  53. /* 链路状态由最近一次已寻址的有效 Modbus 请求决定。 */
  54. #define APP_MODBUS_LINK_DISCONNECTED (0U)
  55. #define APP_MODBUS_LINK_CONNECTED (1U)
  56. #endif