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 line
2.5 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. /*在8N1下,一个字符=10位,波特率表示每秒传输的位数,换算成每us传输的位数要除以10^6
  27. *所以一个字符时间 = 10/(波特率/10^6)=10^7/波特率
  28. *(+ MODBUS_USART_BAUDRATE - 1UL)部分为整数运算向上取整
  29. */
  30. #if (MODBUS_USART_BAUDRATE > 19200U)
  31. /*固定等待1750us,再减去IDLE中断等待的1个字符时间*/
  32. /*1.5个字符=750us-1个字符时间*/
  33. #define MODBUS_IDLE_TO_T15_US 750UL
  34. /*2个字符=1000us*/
  35. #define MODBUS_T15_TO_T35_US 1000UL
  36. /*3.5个字符=1750us-1个字符时间*/
  37. #define MODBUS_IDLE_TO_T35_US 1750UL
  38. #else
  39. /*IDLE中断已经过了1个字符的时间,还需等待2.5个字符*/
  40. /*1.5个字符-1个字符时间=0.5个字符时间*/
  41. #define MODBUS_IDLE_TO_T15_US \
  42. ((15000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  43. /*2个字符时间*/
  44. #define MODBUS_T15_TO_T35_US \
  45. ((20000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  46. /*3.5个字符-1个字符时间=2.5个字符时间*/
  47. #define MODBUS_IDLE_TO_T35_US \
  48. ((35000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
  49. #endif
  50. extern uint8_t ModbusRxBuf[MODBUS_RX_BUF_SIZE];
  51. extern uint8_t ModbusTxBuf[MODBUS_TX_BUF_SIZE];
  52. void ModbusHardwareInit(void);
  53. #endif