yoneken / rosserial_stm32

This is a part of [rosserial](https://github.com/ros-drivers/rosserial) repository to communicate with ROS system through a USART for STM32 embedded system.
BSD 2-Clause "Simplified" License
218 stars 72 forks source link

Type mismatch error in STM32Hardware.h #42

Open tianyuZ opened 1 year ago

tianyuZ commented 1 year ago

https://github.com/yoneken/rosserial_stm32/blob/7ccaf5befb5c717982bec8659ce37ddf33b89b58/src/ros_lib/STM32Hardware.h#L107 Type mismatch,should be modified to HAL_UART_Transmit_DMA(huart, tbuf, twind);

tianyuZ commented 1 year ago

After looking at it in detail,The second half of message in case of tx bufferoverflow will not be transferred to the serial port through DMA because the first part of the buffer has not been transferred, so the previous logic is correct.

jaykorea commented 1 year ago

Hello, I've read your reply about that problem...

That problem came to me and It occurs compile error..

Can I fix the line to this

HAL_UART_Transmit_DMA(huart, tbuf, twind);

?? Waiting for your reply, thanks

maxi-naeher commented 1 year ago

After looking at it in detail,The second half of message in case of tx bufferoverflow will not be transferred to the serial port through DMA because the first part of the buffer has not been transferred, so the previous logic is correct.

What do you mean with previous logic? I suggested the second DMA transfer because of this problem -> https://github.com/yoneken/rosserial_stm32/pull/40

jaykorea commented 1 year ago

After looking at it in detail,The second half of message in case of tx bufferoverflow will not be transferred to the serial port through DMA because the first part of the buffer has not been transferred, so the previous logic is correct.

What do you mean with previous logic?

I suggested the second DMA transfer because of this problem -> https://github.com/yoneken/rosserial_stm32/pull/40

Thanks for your information. Simply I have a issue that I cannot compile that line.(mentioned on issue #43) Compile error occurs in stm32f466re board, Firmware version 1.24.2

maxi-naeher commented 1 year ago

After looking at it in detail,The second half of message in case of tx bufferoverflow will not be transferred to the serial port through DMA because the first part of the buffer has not been transferred, so the previous logic is correct.

What do you mean with previous logic? I suggested the second DMA transfer because of this problem -> #40

Thanks for your information. Simply I have a issue that I cannot compile that line.(mentioned on issue #43) Compile error occurs in stm32f466re board, Firmware version 1.24.2

Since @tianyuZ discovered a problem with the DMA transfer logic, you probably should checkout rosserial_stm32 from this commit: https://github.com/yoneken/rosserial_stm32/commit/0d1c48b9427be8dec439065864b0b44c1fdb5ebd

tianyuZ commented 1 year ago

Hello, I've read your reply about that problem...

That problem came to me and It occurs compile error..

Can I fix the line to this

HAL_UART_Transmit_DMA(huart, tbuf, twind);

?? Waiting for your reply, thanks

Sorry, just saw your comment now, your fix is correct.

tianyuZ commented 1 year ago

After looking at it in detail,The second half of message in case of tx bufferoverflow will not be transferred to the serial port through DMA because the first part of the buffer has not been transferred, so the previous logic is correct.

What do you mean with previous logic? I suggested the second DMA transfer because of this problem -> #40

When the DMA transfer is completed, it will enter the interrupt and finally call the HAL_UART_TxCpltCallback callback function to transfer the remaining data again, so there is no need to immediately send out the second half of the message in the front of the tx buffer after a buffer overflow occured.