//串口波特率/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 RCC_PERIPHCLK_UARTx RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE)/n#define RCC_UARTxCLKSOURCE_SYSCLK RCC_USART1CLKConfig(RCC_USART1CLK_SYSCLK)/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_PinRemapConfig(GPIO_Remap_USART1, ENABLE)/n///n/nUART_HandleTypeDef UartHandle;/n//extern uint8_t ucTemp;/n//串口接收数组/nunsigned char UART_RxBuffer[UART_RX_BUFFER_SIZE];/n//串口接收数组指针/nunsigned char UART_RxPtr;/n/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/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_IPU; //模式要设置为复用输入模式!/n GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStruct);/n/n NVIC_SetPriority(DEBUG_USART_IRQ, 0); //抢占优先级0,子优先级1/n NVIC_EnableIRQ(DEBUG_USART_IRQ); //使能USART1中断通道/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/o4wl 著作权归作者所有。请勿转载和采集!

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