Back with my STM32 adventures(data sheet). This time trying to get UART data through the USB. Essentially I want to be able to print over usb to start printing out variables to further debug code.
I am using the classic NUCLEO-L432KC board and I read somewhere for debug purposes you can print through the USB (ST-LINK) by setting up UART on the PA_2 pin.
What I have tried doing is setting up PA_2 to be a UART_2_TX pin and transmitting a constant decimal number (0x50) then using my mac terminal to 'screen" into the com port of the NUCLEO board. However I am getting this? The UART is working as on the oscilloscope scope I am getting data through. Any idea whats going on?
In terminal using: screen /dev/tty.usbmodem1423 9600
The code:
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
* @attention
*
* <h2><center>© Copyright (c) 2020 STMicroelectronics.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
int main(void)
{
RCC->APB1ENR1 |= (1<<17); // Enable USART2 Clock
RCC->AHB2ENR = (1<<0); //Enable GPIOA Clock
RCC->CCIPR = (1<<2); //Use the System Clock for USART2
GPIOA->MODER &= ~(1<<4); //Enable Alt Function for PA_2
GPIOA->AFR[0] = ((1<<10) | (1<<9) | (1<<8)); //Enable USART2_Tx for PA_2
USART2->CR1 = (1<<3); //Enable Transmitter
USART2->BRR = 0x1A0; //9600 baudrate
USART2->CR1 |= (1<<0); //Enable USART2
while (1)
{
USART2->TDR = 0x50; //Put data in the Transmitter reg
while(((USART2->ISR) & (1<<7)) == 0); //Wait till transmitter reg is empty
}
}