modbus.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "modbus.h"
  2. #include "All_define.h"
  3. volatile eMBSndState eSndState;
  4. volatile eMBRcvState eRcvState;
  5. void BSP_modbus(u16 band)
  6. {
  7. u16 bandvalue = 0;
  8. if(band == 0x01e0)
  9. {
  10. bandvalue = 4800;
  11. }
  12. else if (band == 0x03c0)
  13. {
  14. bandvalue = 9600;
  15. }
  16. else if (band == 0x05a0)
  17. {
  18. bandvalue = 14400;
  19. }
  20. else if(band == 0x0780)
  21. {
  22. bandvalue = 19200;
  23. }
  24. else if (band == 0x0f00)
  25. {
  26. bandvalue = 38400;
  27. }
  28. else if (band == 0x15e0)
  29. {
  30. bandvalue = 56000;
  31. }
  32. else
  33. {
  34. return;
  35. }
  36. BSP_UART2_Init(bandvalue);
  37. uint32_t T35_50us = 0;
  38. if(bandvalue > 9600) bandvalue = 9600;
  39. //T35_50us = (7UL * 220000UL )/(2UL * bandvalue);
  40. T35_50us =5* (10UL *1000000UL)/(bandvalue);
  41. BSP_TIM2_Init(T35_50us);
  42. eMBRTUStart_Rx();
  43. }
  44. void vMBPortSerialEnable( uint8_t xRxEnable, uint8_t xTxEnable )
  45. {
  46. if (xRxEnable)
  47. {
  48. for (uint32_t i = 0; i < 20000; i++) ;
  49. gpio_bit_reset(GPIOC, GPIO_PIN_14);
  50. //printf("wwwww\r\n");
  51. }
  52. else
  53. {
  54. gpio_bit_set(GPIOC, GPIO_PIN_14);
  55. for (uint32_t i = 0; i < 20000; i++) ;
  56. //printf("ssddds\r\n");
  57. }
  58. if (xTxEnable)
  59. {
  60. //USART_ITConfig(USART2, USART_IT_TXE, ENABLE);
  61. usart_interrupt_enable(USART1,USART_INT_TBE);
  62. }
  63. else
  64. {
  65. //USART_ITConfig(USART2, USART_IT_TXE, DISABLE);
  66. usart_interrupt_disable(USART1,USART_INT_TBE);
  67. }
  68. }
  69. void eMBRTUStart_Rx( void )
  70. {
  71. eRcvState = STATE_RX_IDLE;
  72. vMBPortSerialEnable( TRUE, FALSE );
  73. }
  74. void eMBRTUStart_Tx( void )
  75. {
  76. vMBPortSerialEnable( FALSE, TRUE );
  77. }
  78. void eMBRTUStop( void )
  79. {
  80. vMBPortSerialEnable( FALSE, FALSE );
  81. }
  82. #define Broadcast_addr 0xFF
  83. u8 Slave_Addr_check(u8 addr)
  84. {
  85. if(addr == dis_page_param.face_plate_param.Device_Slave_addr)
  86. {
  87. return 1;
  88. }
  89. else
  90. {
  91. return 0;
  92. }
  93. }