论坛首页
任务活动
问答
论坛专题
登录
注册
实际测量不符
+ 关注
粉丝
1
|
主题
48
|
回帖
605
加好友
私信
帖子
主题
回复
评论
STM32CubeMX | Modbus RTU 主机协议栈实现
2024-9-20 08:50
ST MCU
88
5613
5、移植测试验证 移植完毕了现在需要测试,测试你可以使用MobusSlave软件模拟测试,也可以选用选用FreeModb ...
至此,就移植完毕了,测试函数如下: int ret; uint8_t ucBuf[10]; uint16_t usBuf[10]; int main_exampl ...
重定向printf到串口1: int fputc(int ch, FILE* fp) { HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1 ...
将MBRTUMasterRecvByteISRCallback函数放置于串口中断函数中,对于HAL库那就是这样的: void HAL_UART_RxC ...
将MBRTUMasterRecvByteISRCallback函数放置于串口中断函数中,对于HAL库那就是这样的: void HAL_UART_RxCp ...
将MBRTUMasterTimerISRCallback函数放置于定时器中断函数中,对于HAL库那就是这样的: void HAL_TIM_Perio ...
结构体中的函数实现如下: #ifdef USE_RTOS static void mutex_lock(void) { } static void mutex_unloc ...
注意:如果使用了实时系统,需要实现lock和unlock函数。
首先定义一个modbus主机的全局控制结构并初始化: MBRTUMaterTypeDef MBRTUHandle = { .delayms ...
其中,mbrtu_master.h和mbrtu_master.c是协议栈实现,无需动,mbrtu_master_example.c是移植参考示例。 下 ...
4、移植主机协议栈 主机协议栈源码就只有三个文件:
......
最后输出工程就可以了:
开启定时器和串口中断,注意:串口的中断要比定时器中断等级高:
......
配置用于检测3.5个字符超时时间的定时器,我配置成了5ms超时。 这里需要跟你实际使用的波特率进行超时时间 ...
......
配置串口1用于调试打印,配置串口3用于modbus主机通信:
3、移植前的基础工程生成 基础工程这里我使用STM32CubeMX生成,使用的是STM32F103C8单片机,配置步骤如下, ...
2.2 主机写多个寄存器(CMD16)
前一页
1
2
3
4
5
6
7
后一页
2
3
近期访客