尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

[STM32U3] 【NUCLEO-U3C5ZI 测评】 MODBUS主站+从站

[STM32U3] 【NUCLEO-U3C5ZI 测评】 MODBUS主站+从站
📅 发布时间:2026/7/19 1:41:26

感谢21IC平台提供NUCLEO-U3C5ZI评估机会,开发板做工十分精良,板载CAN接口,居然还有一M2存储接口,虽然当前用不上,也算是意外之喜。

拿到开发板子,首先用CubeMX配置一个简单的工程点灯跑起来来点儿信心,点亮很顺利。
接下来就要切入正题了,对于超多外设、超大内存的U3C5ZI来说,并行执行各种复杂任务势在必行,使用RTOS在所难免。CubeMX配置项目可以直接选择THREADX,这个RTOS认证很多,飞机汽车都可使用,本次评测就用这个操作系统打底了。
1、操作系统添加
CubeMX选择中间件里面的THREADX,然后要做些简单的配置,本次测试的配置如下图所示:
内存池管理要开起来,这个后面CMSIS-OS中间层要用。


2、调试串口
板载的ST-LINK连接在芯片的UART1上,用UART1做一个SHELL控制台方便调试打印,如下图所示,可以通过串口做运行时交互。


3、MODBUS
本次试验的重点来了,MODBUS主站和从站
USART2做主站,PA2-PA3
USART3做从站,PB10-PB11
两个串**叉相连后,两个站点可以通过MODBUS通信了。
PA2-PB11
PA3-PB10

调试过程中遇到一点小插曲,可能这颗芯片出来时间太短,官方库居然有个狗血的漏洞,USART2的时钟获取是缺失的,无论LL库还是HAL库都会获取失败,导致U2波特率设置错误,缺失如下所示。


我用LL库,修改如下就可以正常工作了。


MODBUS任务代码如下:

复制
  1. void qc_task(const void *argv)
  2. {
  3. qc_cmd_type mcmd;
  4. uu8 bdone;
  5. /* 主站配置 */
  6. modbus_master_init(QC_MODE_MASTER,115200, MB_PAR_NONE);
  7. modbus_master.os_event_send = mb_os_send;
  8. modbus_master.extend =0;
  9. /* 从站配置 */
  10. modbus_slave_init(QC_MODE_SLAVE,115200, MB_PAR_NONE);
  11. modbus_slave.os_event_send = mb_os_send;
  12. modbus_slave.extend = &qc_mb_slave_box;
  13. /* 命令配置 */
  14. mcmd.id =1;
  15. mcmd.wdat = mb_tst.reg_w;
  16. mcmd.rdat = mb_tst.reg_r;
  17. mcmd.wa = word_make(0xF,5);
  18. mcmd.wn =4;
  19. mcmd.ra = word_make(0x00,0x10);
  20. mcmd.rn =6;
  21. mcmd.callback = qc_callback;
  22. mcmd.attr = QC_MB_ATTR_HOLD_RW;
  23. mqc_stc_cmd_req(&modbus_master, 0, &mcmd);
  24. mqc_stc_cmd_req(&modbus_slave, 0, &mcmd);
  25. mcmd.wa = word_make(0x10,12);
  26. mcmd.wn =0;
  27. mqc_stc_cmd_req(&modbus_master, 1, &mcmd);
  28. mqc_stc_cmd_req(&modbus_slave, 1, &mcmd);
  29. mcmd.wa = word_make(0x0C,8);
  30. mcmd.wn =8;
  31. mcmd.ra = word_make(0x0C,8);
  32. mcmd.rn =8;
  33. mcmd.wdat = mb_tst.reg_w;
  34. mcmd.rdat = mb_tst.reg_r;
  35. mcmd.attr = QC_MB_ATTR_HOLD_RW;
  36. modbus_master.fun->stc_cmd_req(2, &mcmd);
  37. mqc_dyna_cmd_req(&modbus_master, &mcmd);
  38. mqc_dyna_cmd_req(&modbus_master, &mcmd);
  39. /* 任务处理 */
  40. for(;;)
  41. {
  42. osDelay(2);
  43. if(modbus_master.com_st == QC_RX_END)
  44. {
  45. NOP1();
  46. }
  47. if(modbus_slave.com_st == QC_RX_END)
  48. {
  49. NOP1();
  50. }
  51. qc_mb_data_handle();
  52. qc_mb_poll(&modbus_master);
  53. qc_mb_poll(&modbus_slave);
  54. }
  55. }

链接成功后,在调试状态可以观测两路MODBUS运行状态,一主一从如下:



下面附上代码链接,感兴趣的小伙伴可以一起研究:

复制
  1. https://gitee.com/open-instrument/NUCLEO-U3C5ZIQ

NUCLEO-U3C5ZIQ: NUCLEO-U3C5ZIQ 评估


---------------------
作者:aple0807
链接:https://bbs.21ic.com/icview-3521128-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

相关新闻

  • ARM ETMv4核心寄存器配置:指令追踪与深度调试实战指南
  • 贪心算法在Karate Competition问题中的应用与优化
  • Android NFC标签ID读取实现与优化指南

最新新闻

  • Android应用签名机制详解:从原理到实践
  • Kimi-K3前端代码竞技场:性能优化与框架实战指南
  • 如何高质量解析技术类习题:从题目到教学价值的完整路径
  • 深入解析TI IVA2.2 IDMA与XMC寄存器配置:提升DSP多媒体处理性能
  • TDD实践指南:测试驱动开发在API设计中的核心价值
  • 关注是一个很有效的吸引人的方式-------一定要关注

日新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号