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