Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 

44 rindas
1.5 KiB

  1. #ifndef __HARDWARE_H
  2. #define __HARDWARE_H
  3. #include"modbus_parse.h"
  4. /*在8N1下,一个字符=10位,波特率表示每秒传输的位数,换算成每us传输的位数要除以10^6
  5. *所以一个字符时间 = 10/(波特率/10^6)=10^7/波特率
  6. *(+ MODBUS_USART_BAUDRATE - 1UL)部分为整数运算向上取整
  7. */
  8. #if (MODBUS_USART_BAUDRATE > 19200U)
  9. /*固定等待1750us,再减去IDLE中断等待的1个字符时间*/
  10. /*1.5个字符=750us-1个字符时间*/
  11. #define MODBUS_IDLE_TO_T15_US \
  12. ((750UL * MODBUS_USART_BAUDRATE - 10000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  13. /*2个字符=1000us*/
  14. #define MODBUS_T15_TO_T35_US 1000UL
  15. /*3.5个字符=1750us-1个字符时间*/
  16. #define MODBUS_IDLE_TO_T35_US \
  17. ((1750UL * MODBUS_USART_BAUDRATE - 10000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  18. #else
  19. /*IDLE中断已经过了1个字符的时间,还需等待2.5个字符*/
  20. /*1.5个字符-1个字符时间=0.5个字符时间*/
  21. #define MODBUS_IDLE_TO_T15_US \
  22. ((5000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  23. /*2个字符时间*/
  24. #define MODBUS_T15_TO_T35_US \
  25. ((20000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  26. /*3.5个字符-1个字符时间=2.5个字符时间*/
  27. #define MODBUS_IDLE_TO_T35_US \
  28. ((25000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  29. #endif
  30. extern uint8_t ModbusRxBuf[MODBUS_RX_BUF_SIZE];
  31. extern uint8_t ModbusTxBuf[MODBUS_TX_BUF_SIZE];
  32. void ModbusHardwareInit(void);
  33. #endif