phaseBegin and phaseEnd is of type uint16_t. But, I typecast it as pointer variable to point uint8_t, because HAL_I2C_Mem_Read expects that argument to be pointer to uint8_t data.
22:02:55 **** Incremental Build of configuration Debug for project PCA9685 ****
make -j8 all
arm-none-eabi-gcc "../Core/Src/PCA9685.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F407xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/PCA9685.d" -MT"Core/Src/PCA9685.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Core/Src/PCA9685.o"
In file included from ../Core/Src/PCA9685.c:9:
../Core/Inc/PCA9685.h:26:9: note: '#pragma message: i2c buffer length not defined - using default value of 32, which may not be correct for your microcontroller. Check stm32f4xx_hal_i2c.h (or similar) for your hardware and manually define BUFFER_LENGTH or I2C_BUFFER_LENGTH to remove this warning.'
26 | #pragma message( "i2c buffer length not defined - using default value of 32, which may not be correct for your microcontroller. Check stm32f4xx_hal_i2c.h (or similar) for your hardware and manually define BUFFER_LENGTH or I2C_BUFFER_LENGTH to remove this warning.")
| ^~~~~~~
../Core/Src/PCA9685.c: In function 'getChannelPWM':
../Core/Src/PCA9685.c:516:74: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
516 | HAL_I2C_Mem_Read(&hi2c1,_i2cAddress,regAddress,I2C_MEMADD_SIZE_8BIT, (uint8_t*)phaseBegin, 2, HAL_MAX_DELAY);
| ^
../Core/Src/PCA9685.c:517:74: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
517 | HAL_I2C_Mem_Read(&hi2c1,_i2cAddress,regAddress,I2C_MEMADD_SIZE_8BIT, (uint8_t*)phaseEnd, 2, HAL_MAX_DELAY);
| ^
../Core/Src/PCA9685.c: In function 'i2cWire_begin_end_write_Transmission':
../Core/Src/PCA9685.c:862:79: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
862 | HAL_StatusTypeDef status = HAL_I2C_Master_Transmit(&hi2c1, (uint16_t)addr, (uint8_t*)data, sizeof(data), HAL_MAX_DELAY);
| ^
../Core/Src/PCA9685.c: In function 'i2cWire_requestFrom_read':
../Core/Src/PCA9685.c:894:12: warning: 'status' is used uninitialized [-Wuninitialized]
894 | return status;
| ^~~~~~
arm-none-eabi-gcc -o "PCA9685.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\bjvyhb\OneDrive - PHINIA\Desktop\MCU\Workspace\RTOS_Workspace\PCA9685\STM32F407VGTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="PCA9685.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
Finished building target: PCA9685.elf
arm-none-eabi-size PCA9685.elf
arm-none-eabi-objdump -h -S PCA9685.elf > "PCA9685.list"
text data bss dec hex filename
22748 112 2152 25012 61b4 PCA9685.elf
Finished building: default.size.stdout
Finished building: PCA9685.list
22:02:57 Build Finished. 0 errors, 4 warnings. (took 2s.162ms)
Ok, you can't cast the content of a variable to a pointer, you need to use the ADDRESS of the variable, as that's what a POINTER is