25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 

40 satır
1.3 KiB

  1. #ifndef __HARDWARE_H
  2. #define __HARDWARE_H
  3. #include"modbus_parse.h"
  4. #if (MODBUS_USART_BAUDRATE > 19200U)
  5. /*固定等待1750us,再减去IDLE中断等待的1个字符时间*/
  6. /*1.5个字符=750us-1个字符时间*/
  7. #define MODBUS_IDLE_TO_T15_US \
  8. ((750UL * MODBUS_USART_BAUDRATE - 10000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  9. /*2个字符=1000us*/
  10. #define MODBUS_T15_TO_T35_US 1000UL
  11. /*3.5个字符=1750us-1个字符时间*/
  12. #define MODBUS_IDLE_TO_T35_US \
  13. ((1750UL * MODBUS_USART_BAUDRATE - 10000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  14. #else
  15. /*IDLE中断已经过了1个字符的时间,还需等待2.5个字符*/
  16. /*1.5个字符-1个字符时间=0.5个字符时间*/
  17. #define MODBUS_IDLE_TO_T15_US \
  18. ((5000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  19. /*2个字符时间*/
  20. #define MODBUS_T15_TO_T35_US \
  21. ((20000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  22. /*3.5个字符-1个字符时间=2.5个字符时间*/
  23. #define MODBUS_IDLE_TO_T35_US \
  24. ((25000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  25. #endif
  26. extern uint8_t ModbusRxBuf[MODBUS_RX_BUF_SIZE];
  27. extern uint8_t ModbusTxBuf[MODBUS_TX_BUF_SIZE];
  28. void ModbusHardwareInit(void);
  29. #endif