Передмова
Коли перейшов з засобу розробки Atolic TrueStudio на STM32CubeIDE, зіткнувся з тим, що з "коробки" Serial Terminal - не встановлено. І відправляти відладочну інформацію по UART нікуди, крім як на сторонню термінальну програму. Що не зовсім зручно. А так як, що Atolic TrueStudio, що STM32CubeIDE це - Eclipse IDE з певними налаштуваннями і плагінами (надбудовами), то можемо потрібний нам Serial Terminal встановити самотужки із репозиторію.
Встановлення Terminal
Йдемо по меню “Help->Install New Software”:
Install New Software |
Потрібно обрати репозиторій, або Eclipse Repository або TM Terminal Marketplace Update Site. І вводимо в поле пошуку "terminal" або "serial" (без лапок). Або робимо як на зображені, обираємо всі сайти, вводимо для пошуку "tm terminal" і обираємо свіжу версію "TM Terminal":
Обрати останню версію TM Terminal |
Можливо в додачу до цього, потрібно ще, додати плагін "RXTX", або "Serial Connector":
Встановлення плагіну RXTX End-User Runtime |
Як користуватись
Тепер розберемось як користуватись Serial Monitor. Покажемо вікно для терміналу "Window -> Show View -> Terminal:
Виклик вікна для терміналу |
Тепер викличемо сам термінал, або через "іконку", або за допомоги "гарячих" кнопок "Ctrl + Alt + Shift + T":
Виклик терміналу Ctrl + Alt + Shift + T |
Та оберемо/погодимось з налаштуваннями. Обираєм COM порт до якого під'єднано UART мікроконтролера. Наприклад, через пристрій UART 2 USB Converter і в системі на ПК він визначений як COM4, тоді налаштування будуть виглядати так:
Налаштування Serial Monitor |
Обмін байтами між ПК і МК |
Як надсилати інформацію відладки
/* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ #define UART_PRINTF huart2 /* USER CODE END PD */ /* USER CODE BEGIN PFP */ int _write(int file, char *ptr, int len); /* USER CODE END PFP */ /* USER CODE BEGIN 4 */ int _write(int file, char *ptr, int len) { HAL_UART_Transmit(&UART_PRINTF, (uint8_t *) ptr, len, HAL_MAX_DELAY); return len; } /* USER CODE END 4 */
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ printf("%8lu: UART is Ok!\r\n", HAL_GetTick()); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { printf("%8lu: Current Tick\r\n", HAL_GetTick()); HAL_Delay(1000); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }