Настройка тактирования в STM32CubeMx

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Ellissar
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт май 09, 2013 10:50:04

Настройка тактирования в STM32CubeMx

Сообщение Ellissar »

Всем привет!
В проекте CubeMx изменяю источник тактирования на внешний кварц. Ошибок вроде никаких не появляется красным ничего не выделено а частота в файле system_stm32f3xx.c так и осталась 8МГц.
Изображение

Часть кода из system_stm32f3xx.c.
Спойлер

Код: Выделить всё

/** @addtogroup STM32F3xx_System_Private_Defines
  * @{
  */
#if !defined  (HSE_VALUE) 
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Default value of the External oscillator in Hz.
                                                This value can be provided and adapted by the user application. */
#endif /* HSE_VALUE */

#if !defined  (HSI_VALUE)
  #define HSI_VALUE    ((uint32_t)8000000) /*!< Default value of the Internal oscillator in Hz.
                                                This value can be provided and adapted by the user application. */
#endif /* HSI_VALUE */

uint32_t SystemCoreClock = 8000000;
Даже если ставлю HSI но меняю AHB Prescaler на 2 то всё равно частота остается 8МГц а не 4.
Что я делаю не так?
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Настройка тактирования в STM32CubeMx

Сообщение oleg110592 »

а в какой папке проекта находится файл "system_stm32f3xx.c"?
Настройка тактирования в кубе делается функцией SystemClock_Config(), она находится в файле "main.c".
Реклама
Ellissar
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт май 09, 2013 10:50:04

Re: Настройка тактирования в STM32CubeMx

Сообщение Ellissar »

oleg110592 писал(а):а в какой папке проекта находится файл "system_stm32f3xx.c"?
Drivers\CMSIS\Device\ST\STM32F3xx\Source\Templates\system_stm32f3xx.c
oleg110592 писал(а):Настройка тактирования в кубе делается функцией SystemClock_Config(), она находится в файле "main.c".
Есть такая. Вот её код.
Спойлер

Код: Выделить всё

void SystemClock_Config(void)
{

  RCC_OscInitTypeDef RCC_OscInitStruct;
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_PeriphCLKInitTypeDef PeriphClkInit;

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV3;
  RCC_OscInitStruct.LSEState = RCC_LSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8;
  HAL_RCC_OscConfig(&RCC_OscInitStruct);

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);

  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;
  PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
  HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);

  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

}
Ellissar
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт май 09, 2013 10:50:04

Re: Настройка тактирования в STM32CubeMx

Сообщение Ellissar »

Действительно в функции SystemClock_Config() настраивается тактирование.
Сначала я делал через STM32F30x_Clock_Configuration_V1.0.0.xls и там просто создавался файл system_stm32f30x.c с настройками тактирования.
Как я понял в CubeMx сначала настраивается и запускается встроенный кварц, а только потом настраивается внешний кварц и запускается с него?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Настройка тактирования в STM32CubeMx

Сообщение oleg110592 »

для F0 аналогично. Куб system_stm32fxxx.c похоже не меняет - дата старая, просто тупо CMSIS копирует. Зачем только непонятно, скорее всего чтоб файл ассемблерный startupxxxxx.s не менять
Реклама
Ellissar
Встал на лапы
Сообщения: 135
Зарегистрирован: Чт май 09, 2013 10:50:04

Re: Настройка тактирования в STM32CubeMx

Сообщение Ellissar »

oleg110592 писал(а):Зачем только непонятно, скорее всего чтоб файл ассемблерный startupxxxxx.s не менять
Так ведь STM32F30x_Clock_Configuration_V1.0.0.xls тоже вроде не меняет startupxxxxx.s.
Мне всё же подход как в экселевском скрипте больше понравился.
Реклама
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Настройка тактирования в STM32CubeMx

Сообщение oleg110592 »

имелось ввиду что в стартапе:

Код: Выделить всё

       IMPORT  SystemInit  
                 LDR     R0, =SystemInit
                 BLX     R0
а SystemInit находится в system_stm32fxxx.c
Ответить

Вернуться в «ARM»