uart config without HAL
This commit is contained in:
		
							
								
								
									
										117
									
								
								Src/main.c
									
									
									
									
									
								
							
							
						
						
									
										117
									
								
								Src/main.c
									
									
									
									
									
								
							@@ -23,7 +23,7 @@
 | 
			
		||||
/* USER CODE BEGIN Includes */
 | 
			
		||||
#include "SEGGER_RTT.h"
 | 
			
		||||
#include "stm32g0b1xx.h"
 | 
			
		||||
#include "uart.h"
 | 
			
		||||
#include "stm32g0xx_hal_cortex.h"
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
/* USER CODE END Includes */
 | 
			
		||||
@@ -44,8 +44,6 @@
 | 
			
		||||
/* USER CODE END PM */
 | 
			
		||||
 | 
			
		||||
/* Private variables ---------------------------------------------------------*/
 | 
			
		||||
UART_HandleTypeDef huart1;
 | 
			
		||||
DMA_HandleTypeDef hdma_usart1_rx;
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN PV */
 | 
			
		||||
 | 
			
		||||
@@ -54,16 +52,33 @@ DMA_HandleTypeDef hdma_usart1_rx;
 | 
			
		||||
/* Private function prototypes -----------------------------------------------*/
 | 
			
		||||
void SystemClock_Config(void);
 | 
			
		||||
static void MX_GPIO_Init(void);
 | 
			
		||||
static void MX_DMA_Init(void);
 | 
			
		||||
static void MX_USART1_UART_Init(void);
 | 
			
		||||
/* USER CODE BEGIN PFP */
 | 
			
		||||
 | 
			
		||||
/* USER CODE END PFP */
 | 
			
		||||
 | 
			
		||||
/* Private user code ---------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN 0 */
 | 
			
		||||
#define BUFFER_SIZE 64
 | 
			
		||||
#define BUFFER_SIZE 8
 | 
			
		||||
uint8_t rxBuffer[BUFFER_SIZE];
 | 
			
		||||
 | 
			
		||||
void init_UART1(){
 | 
			
		||||
    USART1->CR1 &= ~USART_CR1_UE;
 | 
			
		||||
    RCC->APBENR2 |= RCC_APBENR2_USART1EN;
 | 
			
		||||
    RCC->IOPENR |= RCC_IOPENR_GPIOCEN;
 | 
			
		||||
 | 
			
		||||
    GPIOC->MODER &= ~GPIO_MODER_MODE5; // Alternate function mode on RX pin
 | 
			
		||||
    GPIOC->MODER |= GPIO_MODER_MODE5_1;
 | 
			
		||||
    GPIOC->AFR[0] &= GPIO_AFRL_AFSEL5;
 | 
			
		||||
    GPIOC->AFR[0] |= 1 << GPIO_AFRL_AFSEL5_Pos;
 | 
			
		||||
 | 
			
		||||
    USART1->BRR = 128; // 32000000÷250000
 | 
			
		||||
    USART1->CR3 |= USART_CR3_EIE;
 | 
			
		||||
    USART1->CR1 = USART_CR1_RE;
 | 
			
		||||
    USART1->CR1 |= USART_CR1_UE;
 | 
			
		||||
 | 
			
		||||
    HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
 | 
			
		||||
    HAL_NVIC_EnableIRQ(USART1_IRQn);
 | 
			
		||||
}
 | 
			
		||||
/* USER CODE END 0 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -95,17 +110,31 @@ int main(void)
 | 
			
		||||
 | 
			
		||||
  /* Initialize all configured peripherals */
 | 
			
		||||
  MX_GPIO_Init();
 | 
			
		||||
  MX_DMA_Init();
 | 
			
		||||
  MX_USART1_UART_Init();
 | 
			
		||||
  /* USER CODE BEGIN 2 */
 | 
			
		||||
  HAL_UART_Receive_DMA(&huart1, rxBuffer, BUFFER_SIZE);
 | 
			
		||||
  init_UART1(); 
 | 
			
		||||
 | 
			
		||||
  printf("CR1   init: 0x%02lX\n", USART1->CR1  );
 | 
			
		||||
  printf("CR2   init: 0x%02lX\n", USART1->CR2  );
 | 
			
		||||
  printf("CR3   init: 0x%02lX\n", USART1->CR3  );
 | 
			
		||||
  printf("BRR   init: 0x%02lX\n", USART1->BRR  );
 | 
			
		||||
  printf("GTPR  init: 0x%02lX\n", USART1->GTPR );
 | 
			
		||||
  printf("RTOR  init: 0x%02lX\n", USART1->RTOR );
 | 
			
		||||
  printf("RQR   init: 0x%02lX\n", USART1->RQR  );
 | 
			
		||||
  printf("ISR   init: 0x%02lX\n", USART1->ISR  );
 | 
			
		||||
  printf("ICR   init: 0x%02lX\n", USART1->ICR  );
 | 
			
		||||
  printf("RDR   init: 0x%02lX\n", USART1->RDR  );
 | 
			
		||||
  printf("TDR   init: 0x%02lX\n", USART1->TDR  );
 | 
			
		||||
  printf("PRESC init: 0x%02lX\n", USART1->PRESC);
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END 2 */
 | 
			
		||||
 | 
			
		||||
  /* Infinite loop */
 | 
			
		||||
  /* USER CODE BEGIN WHILE */
 | 
			
		||||
  //HAL_UART_Receive_DMA(&huart1, rxBuffer, BUFFER_SIZE);
 | 
			
		||||
  while (1)
 | 
			
		||||
  {
 | 
			
		||||
      printf("buf: %s\n", rxBuffer);
 | 
			
		||||
     if(USART1->ISR & USART_ISR_RXNE_RXFNE)
 | 
			
		||||
         printf("char: '%c'\n", USART1->RDR);
 | 
			
		||||
    /* USER CODE END WHILE */
 | 
			
		||||
 | 
			
		||||
    /* USER CODE BEGIN 3 */
 | 
			
		||||
@@ -158,73 +187,6 @@ void SystemClock_Config(void)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief USART1 Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
  */
 | 
			
		||||
static void MX_USART1_UART_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN USART1_Init 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END USART1_Init 0 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE BEGIN USART1_Init 1 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END USART1_Init 1 */
 | 
			
		||||
  huart1.Instance = USART1;
 | 
			
		||||
  huart1.Init.BaudRate = 250000;
 | 
			
		||||
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
 | 
			
		||||
  huart1.Init.StopBits = UART_STOPBITS_1;
 | 
			
		||||
  huart1.Init.Parity = UART_PARITY_NONE;
 | 
			
		||||
  huart1.Init.Mode = UART_MODE_TX_RX;
 | 
			
		||||
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
 | 
			
		||||
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
 | 
			
		||||
  huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
 | 
			
		||||
  huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
 | 
			
		||||
  huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
 | 
			
		||||
  if (HAL_UART_Init(&huart1) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK)
 | 
			
		||||
  {
 | 
			
		||||
    Error_Handler();
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE BEGIN USART1_Init 2 */
 | 
			
		||||
 | 
			
		||||
  /* USER CODE END USART1_Init 2 */
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * Enable DMA controller clock
 | 
			
		||||
  */
 | 
			
		||||
static void MX_DMA_Init(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  /* DMA controller clock enable */
 | 
			
		||||
  __HAL_RCC_DMA1_CLK_ENABLE();
 | 
			
		||||
 | 
			
		||||
  /* DMA interrupt init */
 | 
			
		||||
  /* DMA1_Channel1_IRQn interrupt configuration */
 | 
			
		||||
  HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
 | 
			
		||||
  HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
 | 
			
		||||
  /* DMA1_Ch4_7_DMA2_Ch1_5_DMAMUX1_OVR_IRQn interrupt configuration */
 | 
			
		||||
  HAL_NVIC_SetPriority(DMA1_Ch4_7_DMA2_Ch1_5_DMAMUX1_OVR_IRQn, 0, 0);
 | 
			
		||||
  HAL_NVIC_EnableIRQ(DMA1_Ch4_7_DMA2_Ch1_5_DMAMUX1_OVR_IRQn);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * @brief GPIO Initialization Function
 | 
			
		||||
  * @param None
 | 
			
		||||
  * @retval None
 | 
			
		||||
@@ -236,7 +198,6 @@ static void MX_GPIO_Init(void)
 | 
			
		||||
 | 
			
		||||
  /* GPIO Ports Clock Enable */
 | 
			
		||||
  __HAL_RCC_GPIOF_CLK_ENABLE();
 | 
			
		||||
  __HAL_RCC_GPIOC_CLK_ENABLE();
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN MX_GPIO_Init_2 */
 | 
			
		||||
/* USER CODE END MX_GPIO_Init_2 */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user