//串口波特率/n#define DEBUG_USART_BAUDRATE 115200/n/n//串口接收缓冲数组大小/n#define UART_RX_BUFFER_SIZE 256 /nextern unsigned char UART_RxBuffer[UART_RX_BUFFER_SIZE];/n/n//引脚定义/n///n#define DEBUG_USART USART1/n#define DEBUG_USART_CLK_ENABLE() RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE)/n/n#define DEBUG_USART_RX_GPIO_PORT GPIOB/n#define DEBUG_USART_RX_GPIO_CLK_ENABLE() RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE)/n#define DEBUG_USART_RX_PIN GPIO_Pin_7/n/n#define DEBUG_USART_TX_GPIO_PORT GPIOB/n#define DEBUG_USART_TX_GPIO_CLK_ENABLE() RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE)/n#define DEBUG_USART_TX_PIN GPIO_Pin_6/n/n#define DEBUG_USART_IRQHandler USART1_IRQHandler/n#define DEBUG_USART_IRQ USART1_IRQn/n/n//将串口1复用到PB6//PB7上/n#define DEBUG_USART_AF_ENABLE() GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_USART1); ///n GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_USART1);/n///n/nUART_HandleTypeDef UartHandle;/n/n//串口接收数组/nunsigned char UART_RxBuffer[UART_RX_BUFFER_SIZE];/n//串口接收数组指针/nunsigned char UART_RxPtr;/n/n//n@brief DEBUG_USART GPIO 配置,工作模式配置。115200 8-N-1/n@param 无/n@retval 无/n//nvoid DEBUG_USART_Config(void)/n{/n UartHandle.Instance = DEBUG_USART;/n/n UartHandle.Init.BaudRate = DEBUG_USART_BAUDRATE;/n UartHandle.Init.WordLength = UART_WORDLENGTH_8B;/n UartHandle.Init.StopBits = UART_STOPBITS_1;/n UartHandle.Init.Parity = UART_PARITY_NONE;/n UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;/n UartHandle.Init.Mode = UART_MODE_TX_RX;/n/n HAL_UART_Init(&UartHandle);/n/n /*使能串口接收断 *//n __HAL_UART_ENABLE_IT(&UartHandle,UART_IT_RXNE);/n}/n/n//n@brief UART MSP 初始化/n@param huart: UART handle/n@retval 无/n*//nvoid HAL_UART_MspInit(UART_HandleTypeDef huart)/n{/n GPIO_InitTypeDef GPIO_InitStruct;/n DEBUG_USART_CLK_ENABLE();/n/n DEBUG_USART_RX_GPIO_CLK_ENABLE();/n DEBUG_USART_TX_GPIO_CLK_ENABLE();/n/n DEBUG_USART_AF_ENABLE();/n/n /USART1 GPIO Configuration/n PA9 ------> USART1_TX/n PA10 ------> USART1_RX/n //n / 配置Tx引脚为复用功能 //n GPIO_InitStruct.Pin = DEBUG_USART_TX_PIN;/n GPIO_InitStruct.Mode = GPIO_Mode_AF_PP;/n GPIO_InitStruct.Pull = GPIO_PULLUP;/n GPIO_InitStruct.Speed = GPIO_Speed_50MHz;/n GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStruct);/n/n / 配置Rx引脚为复用功能 //n GPIO_InitStruct.Pin = DEBUG_USART_RX_PIN;/n GPIO_InitStruct.Mode = GPIO_Mode_AF_INPUT; //模式要设置为复用输入模式!/n GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStruct);/n/n NVIC_InitTypeDef NVIC_InitStructure;/n NVIC_InitStructure.NVIC_IRQChannel = DEBUG_USART_IRQ;/n NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/n NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;/n NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/n NVIC_Init(&NVIC_InitStructure);/n}/n/n/************ 发送字符串 **********************//nvoid Usart_SendString(uint8_t *str)/n{/n unsigned int k=0;/n do/n {/n HAL_UART_Transmit(&UartHandle, (uint8_t *)(str + k), 1, 1000);/n k++;/n } while((str + k)!='//0');/n}/n/n//清空发送缓冲/nvoid uart_FlushRxBuffer(void)/n{/n UART_RxPtr = 0;/n UART_RxBuffer[UART_RxPtr] = 0;/n}/n/n///重定向c库函数printf到串口DEBUG_USART,重定向后可使用printf函数/nint fputc(int ch, FILE f)/n{/n / 发送一个字节数据到串口DEBUG_USART *//n HAL_UART_Transmit(&UartHandle, (uint8_t *)&ch, 1, 1000);/n/n return (ch);/n}/n/n///重定向c库函数scanf到串口DEBUG_USART,重写向后可使用scanf、getchar等函数/nint fgetc(FILE *f)/n{/n int ch;/n HAL_UART_Receive(&UartHandle, (uint8_t *)&ch, 1, 1000); /n return (ch);/n}/n/n#include /'stm32f10x.h/


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

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