Перейти к содержанию

    

Debug SWV не читаемые символы

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Есть предположения?
Вероятно, нужно измениь делитель скорости последоательного порта (UART) с учетом новой тактовой частоты.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Вероятно, нужно измениь делитель скорости последоательного порта (UART) с учетом новой тактовой частоты.

 

ДА не написал реализацию printf.

Вывод в порт SWV 0 без участия UART, вот таким способом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти