Обновление примера + доработки мастера

This commit is contained in:
2025-11-04 22:42:03 +03:00
parent fbc424e507
commit 5c70316df7
7 changed files with 178 additions and 100 deletions

View File

@@ -56,7 +56,16 @@ void SystemClock_Config(void);
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
int coil_to_toggle = 0;
int coil_state = 0;
int coil_real_state = 0;
void master_callback(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *msg)
{
if(MB_GetCoilState(msg, coil_to_toggle, &coil_real_state))
{
coil_state = coil_real_state;
}
}
/* USER CODE END 0 */
/**
@@ -94,7 +103,6 @@ int main(void)
MODBUS_FirstInit(&hmodbus1, &huart1, &htim3);
#ifdef MODBUS_MODE_MASTER
MODBUS_Config(&hmodbus1, 0, MODBUS_TIMEOUT, MODBUS_MODE_MASTER);
MODBUS_MSG = MB_REQUEST_READ_COILS(1, 0, 10);
#else
MODBUS_Config(&hmodbus1, MODBUS_DEVICE_ID, MODBUS_TIMEOUT, MODBUS_MODE_SLAVE);
MODBUS_SlaveStart(&hmodbus1, NULL);
@@ -105,6 +113,14 @@ int main(void)
/* USER CODE BEGIN WHILE */
while (1)
{
#ifdef MODBUS_MODE_MASTER
HAL_Delay(1000);
MODBUS_MSG = MB_REQUEST_READ_COILS(1, 0, 5);
MODBUS_MasterRequest(&hmodbus1, &MODBUS_MSG, &master_callback);
HAL_Delay(1000);
MODBUS_MSG = MB_REQUEST_WRITE_SINGLE_COIL(1, coil_to_toggle, !coil_state);
MODBUS_MasterRequest(&hmodbus1, &MODBUS_MSG, &master_callback);
#endif
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */

View File

@@ -145,27 +145,10 @@
<SetRegEntry>
<Number>0</Number>
<Key>ST-LINKIII-KEIL_SWO</Key>
<Name>-U005600373433510237363934 -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(1BA01477) -L00(0) -TO131123 -TC8000000 -TT10000000 -TP21 -TDS8000 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL010000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2</Name>
<Name>-U005600373433510237363934 -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131123 -TC8000000 -TT10000000 -TP21 -TDS8003 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL010000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>227</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134230452</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>E:\.WORK\STM32\STM32_Modbus\Modbus\modbus.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\Modbus_example\../../Modbus/modbus.c\227</Expression>
</Bp>
</Breakpoint>
<Breakpoint/>
<WatchWindow1>
<Ww>
<count>0</count>
@@ -175,7 +158,52 @@
<Ww>
<count>1</count>
<WinNumber>1</WinNumber>
<ItemText>RS_Buffer</ItemText>
<ItemText>RS_Buffer,0x10</ItemText>
</Ww>
<Ww>
<count>2</count>
<WinNumber>1</WinNumber>
<ItemText>MODBUS_MSG,0x10</ItemText>
</Ww>
<Ww>
<count>3</count>
<WinNumber>1</WinNumber>
<ItemText>coil_to_toggle</ItemText>
</Ww>
<Ww>
<count>4</count>
<WinNumber>1</WinNumber>
<ItemText>coil_real_state</ItemText>
</Ww>
<Ww>
<count>5</count>
<WinNumber>1</WinNumber>
<ItemText>(uint8_t *)modbus_msg-&gt;DATA</ItemText>
</Ww>
<Ww>
<count>6</count>
<WinNumber>1</WinNumber>
<ItemText>coil_word &gt;&gt; (bit_index+8)</ItemText>
</Ww>
<Ww>
<count>7</count>
<WinNumber>1</WinNumber>
<ItemText>bit_index+8,0x0A</ItemText>
</Ww>
<Ww>
<count>8</count>
<WinNumber>1</WinNumber>
<ItemText>modbus_uart_buff[ind]</ItemText>
</Ww>
<Ww>
<count>9</count>
<WinNumber>1</WinNumber>
<ItemText>msg</ItemText>
</Ww>
<Ww>
<count>10</count>
<WinNumber>1</WinNumber>
<ItemText>MODBUS_MSG.DATA[0]</ItemText>
</Ww>
</WatchWindow1>
<WatchWindow2>
@@ -227,20 +255,6 @@
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
<SystemViewers>
<Entry>
<Name>System Viewer\DBG</Name>
<WinId>35903</WinId>
</Entry>
<Entry>
<Name>System Viewer\TIM3</Name>
<WinId>35904</WinId>
</Entry>
<Entry>
<Name>System Viewer\USART1</Name>
<WinId>35905</WinId>
</Entry>
</SystemViewers>
<DebugDescription>
<Enable>1</Enable>
<EnableFlashSeq>0</EnableFlashSeq>