stm32f407zgt6串口发送代码
时间: 2025-04-26 18:02:22 浏览: 22
### STM32F407ZGT6 UART传输示例代码
对于STM32F407ZGT6单片机,通过UART接口进行数据发送的操作可以利用HAL库来简化编程工作。下面是一个完整的串口初始化以及字符发送的例子。
#### 初始化USART1并重定义`fputc`
为了能够使用标准C库中的`printf()`函数向指定的串口输出调试信息,在项目源文件中需加入以下部分:
```c
#include "stm32f4xx_hal.h"
#include <stdio.h>
// 定义全局变量用于保存USART句柄
extern UART_HandleTypeDef huart1;
/**
* @brief Re-directs the C library printf function to the DEBUG_USARTx.
*/
int fputc(int ch, FILE *f) {
HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, 0xFFFF);
return ch;
}
```
这段代码实现了将`printf()`的标准输出重定向至USART1的功能[^3]。
#### USART1初始化设置
在主程序或者相应的外设配置函数里完成USART硬件资源的分配与参数设定:
```c
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 = 115200;
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;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN USART1_Init 2 */
/* USER CODE END USART1_Init 2 */
}
void SystemClock_Config(void);
int main(void){
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
while (1){
// 主循环体
}
}
```
上述代码片段展示了如何创建一个名为`MX_USART1_UART_Init`的函数来进行USART1的具体初始化操作,并将其调用放在了`main()`函数之中[^1]。
#### 字符串发送函数
当需要发送字符串而不是单一字符时,则可编写专门的辅助方法:
```c
void SendString(const char *str){
uint8_t i=0;
while(str[i]!='\0'){
HAL_UART_Transmit(&huart1,(uint8_t*) &str[i],1,0XFFFF);
i++;
}
}
```
此函数遍历给定的字符串指针所指向的内容直到遇到终止符`\0`为止,并逐字节地经由USART发出每一个ASCII码值对应的字符[^2]。
阅读全文
相关推荐


















