普中STM32-PZ6806L开发板(HAL库函数实现-USART1 printf+scanf/gets)
2023-12-29 16:18:11
简介
实现printf+scanf/gets通过USART1 的发送接收。
电路原理图
板载USB CH340串口电路原理图
主芯片串口引脚图
我的板子板子自带串口坏掉了, 所以使用USB转TTL线, 连接如下
电路原理图
实物图
其他知识
scanf是以空白符(空格、制表符、换行等等)为结束标志的,当遇到空白符是就会结束一次输入,如果你需要读取空格的话可以使用gets或者getchar。
实现步骤
创建项目
参考 普中STM32-PZ6806L开发板(STM32CubeMX创建项目并点亮LED灯)
初始化USART1
其他的保持默认就好
Keil 打开支持MicroLIB支持
不打开无法正常使用printf等标准库
添加用户代码
main.c
#include "stdio.h"
#include "string.h"
// printf 等的底层调用函数, 重定义之后printf将调用此函数进行字符打印
int fputc(int ch, FILE *file)
{
uint8_t temp[1] = {ch};
HAL_UART_Transmit(&huart1, temp, 1, 0xffff);
return HAL_OK;
}
// scanf 等的底层调用函数, 重定义后scanf将调用此函数获取输入数据
int fgetc(FILE *f)
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
return ch;
}
int main()
{
...
printf("Very Welcome!!!\r\n");
while (1)
{
memset(buf, 0, sizeof(buf)/sizeof(uint8_t)); // 内存块数据清零
gets("%s", buf); // 从串口获取数据
printf("Recv: %s\r\n", buf); // 打印获取到的数据
}
...
}
共赏
参考
文章来源:https://blog.csdn.net/halo_hsuh/article/details/135288737
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!