cancel
Showing results for 
Search instead for 
Did you mean: 

F

Jessy J
Associate II

.

41 REPLIES 41
Jessy J
Associate II
Posted on May 17, 2018 at 15:56

I AM using STM32479I EVAL BOARD and Here is the clock configuration generated by CubMX

void SystemClock_Config(void)

{

RCC_OscInitTypeDef RCC_OscInitStruct;

RCC_ClkInitTypeDef RCC_ClkInitStruct;

RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;

HAL_StatusTypeDef ret = HAL_OK;

/**Configure the main internal regulator output voltage

*/

__HAL_RCC_PWR_CLK_ENABLE();

__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);

/**Initializes the CPU, AHB and APB busses clocks

*/

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;

RCC_OscInitStruct.HSEState = RCC_HSE_ON;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

RCC_OscInitStruct.PLL.PLLM = 15;

RCC_OscInitStruct.PLL.PLLN = 144;

RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;

RCC_OscInitStruct.PLL.PLLQ = 5;

RCC_OscInitStruct.PLL.PLLR = 2;

ret = HAL_RCC_OscConfig(&RCC_OscInitStruct);

if(ret != HAL_OK)

{

Error_Handler();

}

/**Initializes the CPU, AHB and APB busses clocks

*/

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK)

{

_Error_Handler(__FILE__, __LINE__);

}

PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SDIO|RCC_PERIPHCLK_CLK48;

PeriphClkInitStruct.Clk48ClockSelection = RCC_CLK48CLKSOURCE_PLLQ;

PeriphClkInitStruct.SdioClockSelection = RCC_SDIOCLKSOURCE_CLK48;

if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)

{

_Error_Handler(__FILE__, __LINE__);

}

/**Configure the Systick interrupt time

*/

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

/**Configure the Systick

*/

HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

/* SysTick_IRQn interrupt configuration */

HAL_NVIC_SetPriority(SysTick_IRQn, 15, 0);

}
Posted on May 24, 2018 at 03:39

/* SysTick_IRQn interrupt configuration */

HAL_NVIC_SetPriority(SysTick_IRQn, 15, 0); // Least priority, worst possible setting for a value you expect to tick under interrupt context everywhere else

  /* Set Systick interrupt in high priority for HAL_Delay() */

  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); // Use this to ensure it fires

The HAL_NVIC_SetPriorityGrouping() should create 16 levels of preemption

/**

  * @brief This function configures the source of the time base:

  *        The time source is configured to have 1ms time base with a dedicated

  *        Tick interrupt priority.

  * @note This function is called  automatically at the beginning of program after

  *       reset by HAL_Init() or at any time when clock is reconfigured  by HAL_RCC_ClockConfig().

  * @note In the default implementation, SysTick timer is the source of time base.

  *       It is used to generate interrupts at regular time intervals.

  *       Care must be taken if HAL_Delay() is called from a peripheral ISR process,

  *       The SysTick interrupt must have higher priority (numerically lower)

  *       than the peripheral interrupt. Otherwise the caller ISR process will be blocked.

  *       The function is declared as __weak  to be overwritten  in case of other

  *       implementation  in user file.

  * @param TickPriority  Tick interrupt priority.

  * @retval HAL status

  */

__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)

{

  /*Configure the SysTick to have interrupt in 1ms time basis*/

  HAL_SYSTICK_Config(SystemCoreClock/1000);

  /*Configure the SysTick IRQ priority */

  HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority ,0);

  /* Return function status */

  return HAL_OK;

}
Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..