STM32F7 46 G Discovery setting TIM2 to 1 second
You don't need to call HAL_TIM_PeriodElapsedCallback() function in while(1) loop. Because it works in non-blocking mode!
Instead, you can do something like this if you want to toggle led every one second.

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
   /*Include channel assertion as you did above */
   HAL_GPIO_TogglePin(ARDUINO_D2_GPIO_Port,ARDUINO_D2_Pin);
}


You can simply remove the Callback function call in main().

I don't think you need to enable the clock separately in main() function. It will be enabled in *_hal_msp.c file. Verify that "HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)" function has been initialized in *_hal_msp.c file in ./Src folder.

Your timer configuration looks fine for me but for Timer_Clock configuration to be precise, calculate Prescaler value from SystemCoreClock value.

and finally, if you want to trigger an interrupt or create ISR for every 1 second, you can simply use "HAL_TIM_Base_Start_IT()".

Edit: So, I played with it myself a bit and have successfully implemented your program on my STM32E407 board and here is the link!
My observation is that you have to start the TIME_BASE in interrupt mode i.e
include

  /*##-2- Start the TIM Base generation in interrupt mode **/ 
  if(HAL_TIM_Base_Start_IT(&amp;TimHandle) != HAL_OK)
  {
     /* Starting Error */
     _Error_Handler(__FILE__, __LINE__);
   }


and start TIM2_IRQHandler() in *_it.c and include NVIC priority in *hal_msp.c.

Even I do not particularly know the reason as to why you have to use in interrupt mode. But I guess the Callback function is ISR related.

Edit2: Yes! Check *_tim.c in stdPheripharal library. The PeriodElapsedCallback function is called only in HAL_TIM_IRQHandler(). So, without using interrupt handler, the callback function returns nothing.