Browse Source

modbus写多个线圈功能更改

main
the_deepest 5 days ago
parent
commit
e080cd98aa
6 changed files with 813 additions and 805 deletions
  1. +6
    -0
      app/main.c
  2. +7
    -7
      iar/settings/F407_uCOSii_Modbus.wsdt
  3. +3
    -2
      iar/settings/uCOS_Modbus.dnx
  4. +795
    -794
      iar/uCOS_Modbus.dep
  5. +1
    -1
      modbus/modbus.c
  6. +1
    -1
      modbus/modbus_flash.c

+ 6
- 0
app/main.c View File

@@ -18,6 +18,9 @@ void AppTaskModbusParse (void *p_arg);
void AppTaskModbusWriteFlash(void *p_arg);
static void AppTaskModbusConnect(void *p_arg);

extern uint8_t ModbusCoil[1250]; /*10000/8=1250*/
extern uint16_t ModbusReg[10000];


int main()
{
@@ -62,6 +65,9 @@ void AppTaskStart(void *p_arg)
ModbusRegReadFlash();
ModbusCoilReadFlash();

//memset(ModbusCoil, 0, sizeof(ModbusCoil));
//memset(ModbusReg, 0, sizeof(ModbusReg));


/* 创建modbus协议帧解析任务 */
OSTaskCreateExt(AppTaskModbusParse,


+ 7
- 7
iar/settings/F407_uCOSii_Modbus.wsdt
File diff suppressed because it is too large
View File


+ 3
- 2
iar/settings/uCOS_Modbus.dnx View File

@@ -24,7 +24,7 @@
<stlinkfoundProbes />
</StLinkDriver>
<DebugChecksum>
<Checksum>171243166</Checksum>
<Checksum>4279408766</Checksum>
</DebugChecksum>
<Exceptions>
<StopOnUncaught>_ 0</StopOnUncaught>
@@ -124,7 +124,8 @@
<mode>0</mode>
</DisassembleMode>
<Breakpoints2>
<Count>0</Count>
<Bp0>_ 1 "EMUL_CODE" "{$PROJ_DIR$\..\modbus\modbus.c}.176.17" 0 0 1 "" 0 "" 0</Bp0>
<Count>1</Count>
</Breakpoints2>
<LogFile>
<LoggingEnabled>_ 0</LoggingEnabled>


+ 795
- 794
iar/uCOS_Modbus.dep
File diff suppressed because it is too large
View File


+ 1
- 1
modbus/modbus.c View File

@@ -316,7 +316,7 @@ uint8_t ModbusWriteCoils(uint16_t addres, uint16_t num, uint8_t *data)
bitIndO = i % 8;

/*位掩码读取要写入的值*/
readVal = data[byteIndO] | ((uint8_t)1 << bitIndO);
readVal = data[byteIndO] & ((uint8_t)1 << bitIndO);
/*将写入值移位到要写入的位*/
writeVal = (uint8_t)1 << bitIndI;



+ 1
- 1
modbus/modbus_flash.c View File

@@ -24,7 +24,7 @@ void AppTaskModbusWriteFlash(void *p_arg)
OSTimeDly(OS_TICKS_PER_SEC);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);

ModbusErr = ModbusFlashWrite();
// ModbusErr = ModbusFlashWrite();
}
}



Loading…
Cancel
Save