Muxamor 0 2 июля, 2018 Опубликовано 2 июля, 2018 · Жалоба При старте МК вывод сообщений через printf и настройке SWV (Core clock = 4 MHz ) работает как положено, то-есть получаю в читабельном виде сообщения Test1 и Test2. Проблема возникает при перенастройке тактирования МК на максимальную частоту 80MHz. После настройки тактирования SystemClock_Config(), через printf и настройке SWV (Core clock = 80MHz ) получаю не читаемые символы, то-есть вместо Test3 и Test4 получаю что попало. int main(void){ LL_Init(); printf("Test1 \r\n"); printf("Test2 \r\n"); SystemClock_Config(); while(1){ printf("Test3 \r\n"); printf("Test4 \r\n"); } } void SystemClock_Config(void){ LL_FLASH_SetLatency(LL_FLASH_LATENCY_4); if(LL_FLASH_GetLatency() != LL_FLASH_LATENCY_4){ Error_Handler(); } LL_PWR_SetRegulVoltageScaling(LL_PWR_REGU_VOLTAGE_SCALE1); //Enable HSI LL_RCC_HSI_Enable(); // Wait till HSI is ready while(LL_RCC_HSI_IsReady() != 1); LL_RCC_HSI_SetCalibTrimming(16); // Enable LSI LL_RCC_LSI_Enable(); /* Wait till LSI is ready */ while(LL_RCC_LSI_IsReady() != 1); LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSI, LL_RCC_PLLM_DIV_1, 10, LL_RCC_PLLR_DIV_2); LL_RCC_PLL_Enable(); LL_RCC_PLL_EnableDomain_SYS(); /* Wait till PLL is ready */ while(LL_RCC_PLL_IsReady() != 1); LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); /* Wait till System clock is ready */ while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL); LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1); LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1); LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_1); LL_Init1msTick(80000000); LL_SYSTICK_SetClkSource(LL_SYSTICK_CLKSOURCE_HCLK); LL_SetSystemCoreClock(80000000); LL_RCC_SetUSARTClockSource(LL_RCC_USART1_CLKSOURCE_SYSCLK); LL_RCC_SetI2CClockSource(LL_RCC_I2C1_CLKSOURCE_SYSCLK); /* SysTick_IRQn interrupt configuration */ NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); } LL_RCC_GetSystemClocksFreq - возвращает значения согласно расчетным = 80MHz По всей видимости где-то не совсем правильно настраивается частота, но не понятно, что именно не так. Есть предположения? Запускаю на NUCLEO-L452RE, среда TrueStudio. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 2 июля, 2018 Опубликовано 2 июля, 2018 · Жалоба Есть предположения?Вероятно, нужно измениь делитель скорости последоательного порта (UART) с учетом новой тактовой частоты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Muxamor 0 2 июля, 2018 Опубликовано 2 июля, 2018 · Жалоба Вероятно, нужно измениь делитель скорости последоательного порта (UART) с учетом новой тактовой частоты. ДА не написал реализацию printf. Вывод в порт SWV 0 без участия UART, вот таким способом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 2 июля, 2018 Опубликовано 2 июля, 2018 · Жалоба Рекомендую перейти на RTT. https://habr.com/post/259205/ Не требуется ножка SWO, вывод по прерываниям Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться