Du kan inte välja fler än 25 ämnen
Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
|
- #ifndef __HARDWARE_H
- #define __HARDWARE_H
-
- #include"modbus_parse.h"
-
- /*在8N1下,一个字符=10位,波特率表示每秒传输的位数,换算成每us传输的位数要除以10^6
- *所以一个字符时间 = 10/(波特率/10^6)=10^7/波特率
- *(+ MODBUS_USART_BAUDRATE - 1UL)部分为整数运算向上取整
- */
- #if (MODBUS_USART_BAUDRATE > 19200U)
-
- /*固定等待1750us,再减去IDLE中断等待的1个字符时间*/
- /*1.5个字符=750us-1个字符时间*/
- #define MODBUS_IDLE_TO_T15_US \
- ((750UL * MODBUS_USART_BAUDRATE - 10000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
- /*2个字符=1000us*/
- #define MODBUS_T15_TO_T35_US 1000UL
- /*3.5个字符=1750us-1个字符时间*/
- #define MODBUS_IDLE_TO_T35_US \
- ((1750UL * MODBUS_USART_BAUDRATE - 10000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
- #else
-
- /*IDLE中断已经过了1个字符的时间,还需等待2.5个字符*/
- /*1.5个字符-1个字符时间=0.5个字符时间*/
- #define MODBUS_IDLE_TO_T15_US \
- ((5000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
- /*2个字符时间*/
- #define MODBUS_T15_TO_T35_US \
- ((20000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
- /*3.5个字符-1个字符时间=2.5个字符时间*/
- #define MODBUS_IDLE_TO_T35_US \
- ((25000000UL + MODBUS_USART_BAUDRATE - 1UL) / MODBUS_USART_BAUDRATE)
- #endif
-
-
- extern uint8_t ModbusRxBuf[MODBUS_RX_BUF_SIZE];
- extern uint8_t ModbusTxBuf[MODBUS_TX_BUF_SIZE];
-
-
- void ModbusHardwareInit(void);
-
-
- #endif
|