Modbus RTU主站移植到stm32 hal库

  1. 传统 modbus rtu主站源代码port串口是采用单个字节发送,但是stm32 hal库提供一帧发送、一帧接收,同时提供完成的中断处理。如果不直接采用hal库会带来不必要的工作难度
  2. 因此,修改modbus rtu主站代码,使其适用于stm32 hal库
  3. 整体思想:
    1. 不使用原中断服务函数xMBMasterRTUReceiveFSM,将对应功能移植到合适地方
    2. 不使用原中断服务函数xMBMasterRTUTransmitFSM,将对应功能移植到合适地方
  4.   portserial.c需要修改
    1. 串口使能函数
    2. if( xRxEnable ==TRUE)/*串口接收使能*/
          {
              HAL_GPIO_WritePin(UART3_DE3_GPIO_Port, UART3_DE3_Pin, GPIO_PIN_RESET);
              //        __HAL_UART_ENABLE_IT(&huart3,UART_IT_RXNE);
      
              //获取接收buffer的地址
              vMBMasterGetRTURcvBuf( &pucFrame );
      
              //由于需要发送数据的地方都调用了该函数,因此作为统一的收、发接口
              //使用hal库自带的串口功能(中断模式)
              //由于每次不会接收到完成长度,使用前要复位以下状态机
      //        huart3.RxState=HAL_UART_STATE_READY;
              HAL_UART_Receive_IT(&huart3,pucFrame,MB_SER_PDU_SIZE_MAX);
      
      
          }
      
          if( xTxEnable ==TRUE)/*串口发送使能*/
          {
              HAL_GPIO_WriteP
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值