Страница 1 из 1
Настройка тактирования в STM32CubeMx
Добавлено: Пт июл 10, 2015 12:30:38
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.
Что я делаю не так?
Re: Настройка тактирования в STM32CubeMx
Добавлено: Пт июл 10, 2015 14:15:30
oleg110592
а в какой папке проекта находится файл "system_stm32f3xx.c"?
Настройка тактирования в кубе делается функцией SystemClock_Config(), она находится в файле "main.c".
Re: Настройка тактирования в STM32CubeMx
Добавлено: Пт июл 10, 2015 18:02:55
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);
}
Re: Настройка тактирования в STM32CubeMx
Добавлено: Пт июл 10, 2015 18:10:24
Ellissar
Действительно в функции SystemClock_Config() настраивается тактирование.
Сначала я делал через STM32F30x_Clock_Configuration_V1.0.0.xls и там просто создавался файл system_stm32f30x.c с настройками тактирования.
Как я понял в CubeMx сначала настраивается и запускается встроенный кварц, а только потом настраивается внешний кварц и запускается с него?
Re: Настройка тактирования в STM32CubeMx
Добавлено: Пт июл 10, 2015 18:18:55
oleg110592
для F0 аналогично. Куб system_stm32fxxx.c похоже не меняет - дата старая, просто тупо CMSIS копирует. Зачем только непонятно, скорее всего чтоб файл ассемблерный startupxxxxx.s не менять
Re: Настройка тактирования в STM32CubeMx
Добавлено: Пт июл 10, 2015 18:25:10
Ellissar
oleg110592 писал(а):Зачем только непонятно, скорее всего чтоб файл ассемблерный startupxxxxx.s не менять
Так ведь STM32F30x_Clock_Configuration_V1.0.0.xls тоже вроде не меняет startupxxxxx.s.
Мне всё же подход как в экселевском скрипте больше понравился.
Re: Настройка тактирования в STM32CubeMx
Добавлено: Пт июл 10, 2015 18:39:43
oleg110592
имелось ввиду что в стартапе:
Код: Выделить всё
IMPORT SystemInit
LDR R0, =SystemInit
BLX R0
а SystemInit находится в system_stm32fxxx.c