- 传统 modbus rtu主站源代码port串口是采用单个字节发送,但是stm32 hal库提供一帧发送、一帧接收,同时提供完成的中断处理。如果不直接采用hal库会带来不必要的工作难度
- 因此,修改modbus rtu主站代码,使其适用于stm32 hal库
- 整体思想:
- 不使用原中断服务函数xMBMasterRTUReceiveFSM,将对应功能移植到合适地方
- 不使用原中断服务函数xMBMasterRTUTransmitFSM,将对应功能移植到合适地方
- portserial.c需要修改
- 串口使能函数
-
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
Modbus RTU主站移植到stm32 hal库
最新推荐文章于 2024-06-14 20:03:20 发布