I was working with a code to transfer some data. first I used ARDUINO and the function ShitOut() to shift the data to my Data pin. then I switched to STM32F407 Discovery board and I realized there is a function called HAL_USART_Transmit(). are these two functions identical? what are their main differences?
It's not a file, it's an Arduino library - you can even download it in the Arduino IDE "Libraries Manager".
Basically, one Arduino sends data to the library, the library "packetizes" the data and sends it via USART to another Arduino running the same version of the library. The receiving Arduino then uses the library to "depacketize" the data and allow the main Arduino code to access the data received.
The readme explains the library and it's example in as much depth as needed (if you disagree, let me know and I can edit it).
Normally “shiftout” is a synchronous output that outputs both data and a clock signal, usually as fast as possible on any two pins, while UART functions output on a single pin (“asynchronously”) on specific pins associated with the hardware, at speeds controlled by previous configuration.
This function starts at either the most significant or least significant bit in a byte value, and shifts out each byte in order onto a data pin. After each bit is written to the data pin, a separate clock pin is pulsed to indicate that the new bit is available DGCustomerFirst
I think you answered your own question. If you program them to be identical then they are identical. One of them simply uses more hardware resources and less software.
Sorry, it's all good - effective communication over text can be difficult.
Yes, you can use the Arduino IDE to program your board. Take a look at this.
Arduino is NOT a language - it's C++ with some wrapper logic. Therefore, you can use Arduino's (C++) libraries with other C++ compilers as long as the compiler works for your board's architecture.