[STM32U3] 【NUCLEO-U3C5ZI 测评】 MODBUS主站+从站
感谢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-PA3USART3做从站PB10-PB11两个串**叉相连后两个站点可以通过MODBUS通信了。PA2-PB11PA3-PB10调试过程中遇到一点小插曲可能这颗芯片出来时间太短官方库居然有个狗血的漏洞USART2的时钟获取是缺失的无论LL库还是HAL库都会获取失败导致U2波特率设置错误缺失如下所示。我用LL库修改如下就可以正常工作了。MODBUS任务代码如下复制void qc_task(const void *argv){qc_cmd_type mcmd;uu8 bdone;/* 主站配置 */modbus_master_init(QC_MODE_MASTER,115200, MB_PAR_NONE);modbus_master.os_event_send mb_os_send;modbus_master.extend 0;/* 从站配置 */modbus_slave_init(QC_MODE_SLAVE,115200, MB_PAR_NONE);modbus_slave.os_event_send mb_os_send;modbus_slave.extend qc_mb_slave_box;/* 命令配置 */mcmd.id 1;mcmd.wdat mb_tst.reg_w;mcmd.rdat mb_tst.reg_r;mcmd.wa word_make(0xF,5);mcmd.wn 4;mcmd.ra word_make(0x00,0x10);mcmd.rn 6;mcmd.callback qc_callback;mcmd.attr QC_MB_ATTR_HOLD_RW;mqc_stc_cmd_req(modbus_master, 0, mcmd);mqc_stc_cmd_req(modbus_slave, 0, mcmd);mcmd.wa word_make(0x10,12);mcmd.wn 0;mqc_stc_cmd_req(modbus_master, 1, mcmd);mqc_stc_cmd_req(modbus_slave, 1, mcmd);mcmd.wa word_make(0x0C,8);mcmd.wn 8;mcmd.ra word_make(0x0C,8);mcmd.rn 8;mcmd.wdat mb_tst.reg_w;mcmd.rdat mb_tst.reg_r;mcmd.attr QC_MB_ATTR_HOLD_RW;modbus_master.fun-stc_cmd_req(2, mcmd);mqc_dyna_cmd_req(modbus_master, mcmd);mqc_dyna_cmd_req(modbus_master, mcmd);/* 任务处理 */for(;;){osDelay(2);if(modbus_master.com_st QC_RX_END){NOP1();}if(modbus_slave.com_st QC_RX_END){NOP1();}qc_mb_data_handle();qc_mb_poll(modbus_master);qc_mb_poll(modbus_slave);}}链接成功后在调试状态可以观测两路MODBUS运行状态一主一从如下下面附上代码链接感兴趣的小伙伴可以一起研究复制https://gitee.com/open-instrument/NUCLEO-U3C5ZIQNUCLEO-U3C5ZIQ: NUCLEO-U3C5ZIQ 评估---------------------作者aple0807链接https://bbs.21ic.com/icview-3521128-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。