参考:https://blog.csdn.net/zhang062061/article/details/114053550
(1)freemodbus下载
源码
移植代码:https://download.csdn.net/download/Alenfun/16675851
(2)源码目录
实际使用的文件夹只有两个,modbus文件夹和demo下的BARE文件夹。
- modbus:协议的具体代码
- demo->BARE:接口文件,需要用户进行移植和修改的
(3)硬件接口
freemodbus需要使用一个串口和一个定时器。
-
串口:接收/发送数据帧,实现portserial.c文件
UART_HandleTypeDef huart3; #define DE_GPIO_PORT GPIOB #define DE_GPIO_PIN GPIO_PIN_1 #define DE_CLK_EN __HAL_RCC_GPIOA_CLK_ENABLE() #define INT_DE {GPIO_InitTypeDef GPIO_InitStructure;\ DE_CLK_EN;\ GPIO_InitStructure.Pin=DE_GPIO_PIN; \ GPIO_InitStructure.Mode=GPIO_MODE_OUTPUT_PP; \ GPIO_InitStructure.Pull=GPIO_PULLDOWN; \ GPIO_InitStructure.Speed=GPIO_SPEED_HIGH; \ HAL_GPIO_Init(DE_GPIO_PORT,&GPIO_InitStructure);} #define DE_HIGH HAL_GPIO_WritePin(DE_GPIO_PORT, DE_GPIO_PIN, GPIO_PIN_SET) #define DE_LOW HAL_GPIO_WritePin(DE_GPIO_PORT, DE_GPIO_PIN, GPIO_PIN_RESET) BOOL xMBPortSerialInit( UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity ) { INT_DE; huart3.Instance = USART3; huart3.Init.BaudRate = ulBaudRate; huart3.Init.StopBits = UART_STOPBITS_1; huart3

本文详细介绍了如何下载并移植FreeModbus库,重点解析了源码目录结构,包括modbus协议代码和需要用户移植的BARE接口文件。硬件接口部分讲解了串口和定时器的配置,提供了串口初始化和定时器初始化的代码示例。此外,还展示了如何在port.c文件中实现线圈和寄存器的读写操作。最后,针对Keil MDK编译时可能出现的错误给出了解决方案。
&spm=1001.2101.3001.5002&articleId=115709379&d=1&t=3&u=8d24c15855cb43d8bcb2fb2fa8a25a87)
6753

被折叠的 条评论
为什么被折叠?



