Skip to content

Commit 3f4db2c

Browse files
committed
updated callbacks
1 parent 2171d4c commit 3f4db2c

File tree

21 files changed

+132
-20854
lines changed

21 files changed

+132
-20854
lines changed

MODBUS-LIB/Inc/Modbus.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,6 @@ uint16_t getTimeOut(); //!<get communication watch-dog timer value
195195
bool getTimeOutState(); //!<get communication watch-dog timer state
196196
void ModbusQuery(modbusHandler_t * modH, modbus_t telegram ); // put a query in the queue tail
197197
void ModbusQueryInject(modbusHandler_t * modH, modbus_t telegram); //put a query in the queue head
198-
//int8_t poll_master(); //!<cyclic poll for master
199-
//int8_t poll_slave( uint16_t *regs, uint8_t u8size ); //!<cyclic poll for slave
200198
uint16_t getInCnt(); //!<number of incoming messages
201199
uint16_t getOutCnt(); //!<number of outcoming messages
202200
uint16_t getErrCnt(); //!<error counter

MODBUS-LIB/Src/Modbus.c

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -27,32 +27,32 @@
2727
///Queue Modbus RX
2828
//osMessageQueueId_t QueueModbusHandle;
2929
const osMessageQueueAttr_t QueueModbus_attributes = {
30-
.name = "QueueModbus"
30+
.name = "QueueModbusData"
3131
};
3232

3333
///Queue Modbus telegrams
3434
//osMessageQueueId_t QueueModbusHandle;
3535
const osMessageQueueAttr_t QueueTelegram_attributes = {
36-
.name = "QueueTelegram"
36+
.name = "QueueModbusTelegram"
3737
};
3838

3939
//Task Modbus Slave
4040
//osThreadId_t myTaskModbusAHandle;
4141
const osThreadAttr_t myTaskModbusA_attributes = {
42-
.name = "myTaskModbusA",
42+
.name = "TaskModbusSlave",
4343
.priority = (osPriority_t) osPriorityNormal,
4444
.stack_size = 128 * 4
4545
};
4646

47-
//Task Modbus Slave
47+
//Task Modbus Master
4848
//osThreadId_t myTaskModbusAHandle;
4949
const osThreadAttr_t myTaskModbusB_attributes = {
50-
.name = "myTaskModbusB",
50+
.name = "TaskModbusMaster",
5151
.priority = (osPriority_t) osPriorityNormal,
5252
.stack_size = 128 * 4
5353
};
5454

55-
//Sempahore to access the Modbus Data
55+
//Semaphore to access the Modbus Data
5656
const osSemaphoreAttr_t ModBusSphr_attributes = {
5757
.name = "ModBusSphr"
5858
};
@@ -147,7 +147,6 @@ void ModbusInit(modbusHandler_t * modH)
147147
while(1); //Error Modbus type not supported choose a valid Type
148148
}
149149
//Create Semaphore DataRX
150-
//vSemaphoreCreateBinary(SemaphoreDataRX);
151150
//Create timer T35
152151

153152
modH->xTimerT35 = xTimerCreate("TimerT35", // Just a text name, not used by the kernel.
@@ -211,7 +210,7 @@ void ModbusStart(modbusHandler_t * modH)
211210

212211
void vTimerCallbackT35(TimerHandle_t *pxTimer)
213212
{
214-
//Notify that a steam has just arrived
213+
//Notify that a stream has just arrived
215214
int i;
216215
//TimerHandle_t aux;
217216
for(i = 0; i < numberHandlers; i++)
@@ -230,7 +229,7 @@ void vTimerCallbackT35(TimerHandle_t *pxTimer)
230229

231230
void vTimerCallbackTimeout(TimerHandle_t *pxTimer)
232231
{
233-
//Notify that a steam has just arrived
232+
//Notify that a stream has just arrived
234233
int i;
235234
//TimerHandle_t aux;
236235
for(i = 0; i < numberHandlers; i++)
@@ -426,12 +425,10 @@ int8_t SendQuery(modbusHandler_t *modH , modbus_t telegram )
426425
{
427426
if(i%2)
428427
{
429-
//modH->au8Buffer[ modH->u8BufferSize ] = lowByte( modH->au16regs[ i/2 ] );
430428
modH->au8Buffer[ modH->u8BufferSize ] = lowByte( telegram.au16reg[ i/2 ] );
431429
}
432430
else
433431
{
434-
//modH->au8Buffer[ modH->u8BufferSize ] = highByte(modH->au16regs[ i/2] );
435432
modH->au8Buffer[ modH->u8BufferSize ] = highByte( telegram.au16reg[ i/2 ] );
436433

437434
}
@@ -447,10 +444,9 @@ int8_t SendQuery(modbusHandler_t *modH , modbus_t telegram )
447444

448445
for (uint16_t i=0; i< telegram.u16CoilsNo; i++)
449446
{
450-
//modH->au8Buffer[ modH->u8BufferSize ] = highByte( modH->au16regs[ i ] );
447+
451448
modH->au8Buffer[ modH->u8BufferSize ] = highByte( telegram.au16reg[ i ] );
452449
modH->u8BufferSize++;
453-
//modH->au8Buffer[ modH->u8BufferSize ] = lowByte( modH->au16regs[ i ] );
454450
modH->au8Buffer[ modH->u8BufferSize ] = lowByte( telegram.au16reg[ i ] );
455451
modH->u8BufferSize++;
456452
}
@@ -692,30 +688,7 @@ int8_t getRxBuffer(modbusHandler_t *modH)
692688

693689

694690

695-
/**
696-
* @brief
697-
* This is the callback for HAL interrupt of UART RX
698-
*
699-
* @ingroup UartHandle UART HAL handler
700-
*/
701-
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
702-
{
703-
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
704691

705-
int i;
706-
for (i = 0; i < numberHandlers; i++ )
707-
{
708-
if (mHandlers[i]->port == UartHandle )
709-
{
710-
xQueueSendToBackFromISR( mHandlers[i]->QueueModbusHandle, &mHandlers[i]->dataRX, pdFALSE);
711-
HAL_UART_Receive_IT(mHandlers[i]->port, &mHandlers[i]->dataRX, 1);
712-
xTimerResetFromISR(mHandlers[i]->xTimerT35, &xHigherPriorityTaskWoken);
713-
break;
714-
}
715-
}
716-
717-
718-
}
719692

720693
/**
721694
* @brief

MODBUS-LIB/Src/UARTCallback.c

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
2525
{
26-
/* Modbus RTU callback BEGIN */
26+
/* Modbus RTU TX callback BEGIN */
2727
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
2828
int i;
2929
for (i = 0; i < numberHandlers; i++ )
@@ -38,7 +38,44 @@ void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
3838
}
3939
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
4040

41-
/* Modbus RTU callback END */
41+
/* Modbus RTU TX callback END */
42+
43+
/*
44+
* Here you should implement the callback code for other UARTs not used by Modbus
45+
*
46+
* */
47+
48+
}
49+
50+
51+
52+
/**
53+
* @brief
54+
* This is the callback for HAL interrupt of UART RX
55+
* This callback is shared among all UARTS, if more interrupts are used
56+
* user should implement the correct control flow and verification to maintain
57+
* Modbus functionality.
58+
* @ingroup UartHandle UART HAL handler
59+
*/
60+
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
61+
{
62+
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
63+
64+
/* Modbus RTU RX callback BEGIN */
65+
int i;
66+
for (i = 0; i < numberHandlers; i++ )
67+
{
68+
if (mHandlers[i]->port == UartHandle )
69+
{
70+
xQueueSendToBackFromISR( mHandlers[i]->QueueModbusHandle, &mHandlers[i]->dataRX, pdFALSE);
71+
HAL_UART_Receive_IT(mHandlers[i]->port, &mHandlers[i]->dataRX, 1);
72+
xTimerResetFromISR(mHandlers[i]->xTimerT35, &xHigherPriorityTaskWoken);
73+
break;
74+
}
75+
}
76+
portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
77+
78+
/* Modbus RTU RX callback END */
4279

4380
/*
4481
* Here you should implement the callback code for other UARTs not used by Modbus

ModbusF103/.settings/language.settings.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
77
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
88
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
9-
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-463289872949268509" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
9+
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1883483433282617244" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
1010
<language-scope id="org.eclipse.cdt.core.gcc"/>
1111
<language-scope id="org.eclipse.cdt.core.g++"/>
1212
</provider>
@@ -18,7 +18,7 @@
1818
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
1919
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
2020
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
21-
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-463289872949268509" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
21+
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1883483433282617244" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
2222
<language-scope id="org.eclipse.cdt.core.gcc"/>
2323
<language-scope id="org.eclipse.cdt.core.g++"/>
2424
</provider>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2F62501ED4689FB349E356AB974DBE57=D2AF821F2242C732CCF04745471DAC4B
2+
8DF89ED150041C4CBC7CB9A9CAA90856=D2AF821F2242C732CCF04745471DAC4B
3+
DC22A860405A8BF2F2C095E5B6529F12=003FADF58D6016C21A751F138F49FA71
4+
eclipse.preferences.version=1

ModbusF103/Core/Src/main.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,14 @@ int main(void)
9595
/* Master initialization */
9696
ModbusH.uiModbusType = MASTER_RTU;
9797
ModbusH.port = &huart1;
98-
ModbusH.u8id = 0; // Form master it must be 0
98+
ModbusH.u8id = 0; // For master it must be 0
9999
ModbusH.u16timeOut = 1000;
100100
ModbusH.EN_Port = NULL;
101101
ModbusH.EN_Port = EN_485_GPIO_Port;
102102
ModbusH.EN_Pin = EN_485_Pin;
103103
ModbusH.u32overTime = 0;
104104
ModbusH.au16regs = ModbusDATA;
105-
ModbusH.u8regsize= sizeof(ModbusDATA)/sizeof(ModbusDATA[0]);
105+
ModbusH.u16regsize= sizeof(ModbusDATA)/sizeof(ModbusDATA[0]);
106106
//Initialize Modbus library
107107
ModbusInit(&ModbusH);
108108
//Start capturing traffic on serial Port
@@ -113,15 +113,15 @@ int main(void)
113113
/* Slave initialization */
114114

115115
ModbusH2.uiModbusType = SLAVE_RTU;
116-
ModbusH2.port = &huart3;
116+
ModbusH2.port = &huart2;
117117
ModbusH2.u8id = 17;
118118
ModbusH2.u16timeOut = 1000;
119119
ModbusH2.EN_Port = NULL;
120120
//ModbusH2.EN_Port = LD2_GPIO_Port;
121121
//ModbusH2.EN_Pin = LD2_Pin;
122122
ModbusH2.u32overTime = 0;
123123
ModbusH2.au16regs = ModbusDATA2;
124-
ModbusH2.u8regsize= sizeof(ModbusDATA2)/sizeof(ModbusDATA2[0]);
124+
ModbusH2.u16regsize= sizeof(ModbusDATA2)/sizeof(ModbusDATA2[0]);
125125
//Initialize Modbus library
126126
ModbusInit(&ModbusH2);
127127
//Start capturing traffic on serial Port

ModbusF103/Debug/Core/Src/subdir.mk

Lines changed: 0 additions & 64 deletions
This file was deleted.

ModbusF103/Debug/Core/Startup/subdir.mk

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)