реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Debug SWV не читаемые символы, printf() SWV
Muxamor
сообщение Jul 2 2018, 07:46
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 4-05-05
Из: Novosibirsk
Пользователь №: 4 722



При старте МК вывод сообщений через 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.


--------------------
Бубен - однако штука шаманская!!!

Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 2 2018, 11:45
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 361
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Muxamor @ Jul 2 2018, 10:46) *
Есть предположения?
Вероятно, нужно измениь делитель скорости последоательного порта (UART) с учетом новой тактовой частоты.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Muxamor
сообщение Jul 2 2018, 12:03
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 4-05-05
Из: Novosibirsk
Пользователь №: 4 722



Цитата(Сергей Борщ @ Jul 2 2018, 18:45) *
Вероятно, нужно измениь делитель скорости последоательного порта (UART) с учетом новой тактовой частоты.


ДА не написал реализацию printf.
Вывод в порт SWV 0 без участия UART, вот таким способом


--------------------
Бубен - однако штука шаманская!!!

Go to the top of the page
 
+Quote Post
uriy
сообщение Jul 2 2018, 15:45
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 410
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Рекомендую перейти на RTT. https://habr.com/post/259205/
Не требуется ножка SWO, вывод по прерываниям
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th July 2018 - 00:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01022 секунд с 7
ELECTRONIX ©2004-2016