STM32F103通过USART发送并接收电脑发出信息,给出完整代码
时间: 2024-12-19 14:15:59 浏览: 17
STM32F103采用DMA实现USART1接收和发送
5星 · 资源好评率100%
要使用STM32F103的USART(通用同步异步收发器)模块通过串口通信与PC机进行数据传输,你需要先确保以下几点:
1. 你的STM32已经正确配置了串口通信,包括波特率、数据位数、停止位和校验位。
2. PC端已连接到STM32的串口,通常使用的是UART1或USART2接口。
这是一个基础的示例代码,假设我们使用USART1,并使用`USART_Init`函数初始化配置,然后用`USART_SendData`发送数据,以及`USART_ReceiveData`接收数据。注意,这个例子假定你已经在`main.c`文件中包含了相关的头文件,并且已经实现了`USART_Init`函数和其他必要的功能。
```c
#include "stm32f1xx_hal.h"
#include "usart.h"
// ... 其他必要的全局变量和函数定义 ...
void USART_Configuration(void) {
GPIO_InitTypeDef GPIO_InitStruct;
USART_HandleTypeDef UsartHandle;
// 初始化GPIO
GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10; // TX/RX pins (USART1)
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; // Push-Pull mode
GPIO_InitStruct.Pull = GPIO_NOPULL; // No pull-up/pull-down
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // High speed
GPIO_InitStruct.Alternate = GPIO_AF7_USART1; // Alternate function for USART1
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// 初始化USART
UsartHandle.Instance = USART1;
USARTHandle.Init.BaudRate = 9600; // 设置波特率
USARTHandle.Init.WordLength = UART_WORDLENGTH_8B;
USARTHandle.Init.StopBits = UART_STOPBITS_1;
USARTHandle.Init.Parity = UART_PARITY_NONE;
USARTHandle.Init.HardwareFlowControl = UART_HWCONTROL_NONE;
USARTHandle.Init.Mode = UART_MODE_TX_RX;
if (HAL_UART_Init(&UsartHandle) != HAL_OK) {
while (1); // Error handling, stop here
}
}
void Send_Data(char data) {
if (HAL_UART_Transmit(&UsartHandle, (uint8_t*)&data, sizeof(data), HAL_MAX_DELAY) != HAL_OK) {
// Handle transmission error
}
}
int main(void) {
/* STM32 initialization */
HAL_Init();
SystemClock_Config();
// USART configuration
USART_Configuration();
// Example of sending data to the computer
char message[] = "Hello from STM32!";
for (char *ptr = message; *ptr; ptr++) {
Send_Data(*ptr);
// Wait a bit between each character to make it visible on the serial monitor
HAL_Delay(50);
}
while (1) {} // Infinite loop to keep the program running
return 0;
}
```
阅读全文