这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » LAUNCHXL-F280049C+使用modbus控制灯

共2条 1/1 1 跳转至

LAUNCHXL-F280049C+使用modbus控制灯

高工
2025-08-07 10:56:22     打赏

使用 LAUNCHXL-F280049C通过Modbus协议控制LED灯,软件配置和通信协议实现。


1. 硬件准备

LAUNCHXL-F280049C开发板,供电USB或外部电源。

LED灯,连接到一个GPIO引脚GPIO23和GPIO34。

连接方式,LED正极通过限流电阻680Ω接电源,负极接GPIO。


Modbus通信接口:

连接开发板上的MICRO口与PC端连接进行通信。


2.原理图

LED灯

image.png

MICRO接口。

image.png


3、SYSCONFIG配置

a212e92d-458b-4646-8bd7-d370cd0a24c2.png

Modbus使能中断函数配置

34b028e9-94ed-475e-8d20-bc87c8877083.png

小灯GPIO口配置

1b583603-efd3-4483-b3b7-71b25c5bda4d.png


4、代码

Modbus部分函数

if(opt == Modbus Readout){ // 读
switch((outputIo_e)regAddr)
//这里清除所以错误信号的逻辑我还没有理清楚case 100 ClearErr:if(system_error.all ==0)
data->bit =0;
else
data->bit = 1;
break;
case IOO MODE SWITCH:data->bit = MODE SWITCH;break;
case IOO LED4 ENABLE:data->bit =LED4 ENABLE;break;
case IOO LED5 ENABLE:data->bit = LED5 ENABLE;break :

在中断里面翻转小灯,实现小灯的亮灭

interrupt void INT SysTick ISR(void)
systick 1ms++;
if(LED4 ENABLE == 1)
GPIO togglePin(LED4);
else
GPI0 writePin(LED4,1);
if(LED5 ENABLE == 1)
GPIO togglePin(LED5);
else
GPI0 writePin(LED5,1);

在中断里面进行MODBUS的定时接收,避免造成较大的延时,使Modbus超时

interrupt void INT MyCPUTIMER2 ISR(void)
//这个函数将cputimer2停止了所以需要再次在其他函数中奖这个定时器进行使能CPUTimer stopTimer(CPUTIMER2 BASE);CPUTimer reloadTimerCounter(CPUTIMER2 BASE);
//这是在CPU中断中使用定时器调用服务函数
sTask start(&task modbusServiceHandle,0,rcvbuffer, rcvcounter);
rcvcounter=0;

5、演示视频



院士
2025-08-07 14:41:22     打赏
2楼

老哥,您这Modbus实现的也有点草率了吧



共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]