Использование PuTTY для печати из STM32 - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу напечатать сообщения с моего микроконтроллера STM32 Nucleo-L073RZ.Как я должен идти об этом?Должен ли я использовать UART?Где я могу получить соответствующий код?

#include "stm32l0xx.h"
#include "stm32l0xx_nucleo.h"
#include "stm32l0xx_hal.h"
#include "stdio.h"

static void GPIO_Init (void);
static void UART_Init (void);

int main(void)
{
HAL_Init();
GPIO_Init();
printf("Hello");
while(1)
{

}

}

static void GPIO_Init(void)
{
BSP_LED_Init(LED2);
BSP_LED_On(LED2);

GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOA_CLK_ENABLE();


/*Configure GPIO pin : PA13*/
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI4_15_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
}
/*Uart Init Function*/
static void UART_Init(void)
{

}

void EXTI4_15_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
 }

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_PIN)
{
BSP_LED_Toggle(LED2);
counter();
}

int counter()
{
int i;
i = 0;
i++;
printf("/n %d", i);
}

Как отобразить счетчик на моем ПК?Я хочу, чтобы количество раз, когда прерывание было показано на PuTTY.Должен ли я подключиться к UART или можно печатать?

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете использовать UART на Nucleo

Все платы Nucleo имеют встроенный модуль UART-to-USB, который автоматически передает данные в последовательный порт вашего компьютера.Если в Windows откройте панель управления, перейдите в диспетчер устройств и в разделе «COM-порты» вы увидите ваш Nucleo.

Инициализация периферийного устройства UART

Обратитесь к руководству пользователя Nucleo, чтобы узнать, какие выводы UARTподключитесь к порту USB (возможно, STM32CubeMX уже подключил их).

При инициализации периферийного устройства выберите скорость передачи данных, например 9600, и запомните ее

Configure PuTTy

EnterCOM-порт Nucleo и скорость передачи данных, которые вы выбрали ранее, и выберите Serial в качестве метода передачи.Возможно, вам придется отключить некоторые параметры аппаратного управления потоком, если они включены

Код для передачи

HAL имеет функции для передачи по UART.Что-то вроде HAL_UART_Transmit (...).Вам нужно посмотреть, как конкретно использовать эту функцию, множество отличных руководств.

Я лично использую sprintf, чтобы печатать красиво отформатированные строки через UART, например:

char buf[64];
sprintf(buf, "Value of counter: %d\r\n", i);

// change huartX to your initialized HAL UART peripheral
HAL_UART_Transmit(&huartX, buf, strlen(buf), HAL_MAX_DELAY);
...