#include 'stm32f1xx_hal.h'

// 串口波特率 #define DEBUG_USART_BAUDRATE 115200

// 串口接收缓冲数组大小 #define UART_RX_BUFFER_SIZE 256 extern unsigned char UART_RxBuffer[UART_RX_BUFFER_SIZE];

// 引脚定义 /*******************************************************/ #define DEBUG_USART USART1 #define DEBUG_USART_CLK_ENABLE() __HAL_RCC_USART1_CLK_ENABLE();

#define RCC_PERIPHCLK_UARTx RCC_PERIPHCLK_USART1 #define RCC_UARTxCLKSOURCE_SYSCLK RCC_USART1CLKSOURCE_SYSCLK

#define DEBUG_USART_RX_GPIO_PORT GPIOB #define DEBUG_USART_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define DEBUG_USART_RX_PIN GPIO_PIN_7

#define DEBUG_USART_TX_GPIO_PORT GPIOB #define DEBUG_USART_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define DEBUG_USART_TX_PIN GPIO_PIN_6

#define DEBUG_USART_IRQHandler USART1_IRQHandler #define DEBUG_USART_IRQ USART1_IRQn

// 将串口1 复用到 PB6\PB7 上 #define DEBUG_USART_AF_ENABLE() __HAL_AFIO_REMAP_USART1_ENABLE() /************************************************************/

UART_HandleTypeDef UartHandle; unsigned char UART_RxBuffer[UART_RX_BUFFER_SIZE]; unsigned char UART_RxPtr;

/** @brief DEBUG_USART GPIO 配置, 工作模式配置。115200 8-N-1 @param 无 @retval 无 */ void DEBUG_USART_Config(void) { UartHandle.Instance = DEBUG_USART;

UartHandle.Init.BaudRate = DEBUG_USART_BAUDRATE;
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
UartHandle.Init.StopBits = UART_STOPBITS_1;
UartHandle.Init.Parity = UART_PARITY_NONE;
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UartHandle.Init.Mode = UART_MODE_TX_RX;

HAL_UART_Init(&UartHandle);

__HAL_UART_ENABLE_IT(&UartHandle,UART_IT_RXNE);

}

/** @brief UART MSP 初始化 @param huart: UART handle @retval 无 */ void HAL_UART_MspInit(UART_HandleTypeDef *huart) { GPIO_InitTypeDef GPIO_InitStruct; DEBUG_USART_CLK_ENABLE();

DEBUG_USART_RX_GPIO_CLK_ENABLE();
DEBUG_USART_TX_GPIO_CLK_ENABLE();

DEBUG_USART_AF_ENABLE();

GPIO_InitStruct.Pin = DEBUG_USART_TX_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStruct);

GPIO_InitStruct.Pin = DEBUG_USART_RX_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_AF_INPUT;
HAL_GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStruct);

HAL_NVIC_SetPriority(DEBUG_USART_IRQ, 0, 1);
HAL_NVIC_EnableIRQ(DEBUG_USART_IRQ);

}

/***************** 发送字符串 **********************/ void Usart_SendString(uint8_t *str) { unsigned int k=0; do { HAL_UART_Transmit(&UartHandle, (uint8_t *)(str + k), 1, 1000); k++; } while((str + k) != '\0'); }

void uart_FlushRxBuffer(void) { UART_RxPtr = 0; UART_RxBuffer[UART_RxPtr] = 0; }

int fputc(int ch, FILE *f) { HAL_UART_Transmit(&UartHandle, (uint8_t *)&ch, 1, 1000); return (ch); }

int fgetc(FILE *f) { int ch; HAL_UART_Receive(&UartHandle, (uint8_t *)&ch, 1, 1000); return (ch); }

STM32F103 固件库程序:串口配置及中文注释

原文地址: https://www.cveoy.top/t/topic/o4vU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录