STM32串口通信

开启串口

在ioc配置里面开启串口1 端口 PA9 为TX PA10 为 RX

屏蔽Src/syscalls.c文件 右击文件 属性 c/c++ Build  Excude resource from build前面的方框打√

创建 Core/Inc/retarget.h  Core/Src/retarget.c文件

main.c文件

/* USER CODE BEGIN Includes */#include "retarget.h"/* USER CODE END Includes *//* USER CODE BEGIN 2 */RetargetInit(&huart1);/* USER CODE END 2 *///测试程序char buf[100];printf("\r\nYour name: ");scanf("%s", buf);printf("\r\nHello, %s!\r\n", buf);

retarget.h

#ifndef _RETARGET_H__#define _RETARGET_H__#include "stm32f1xx_hal.h"#include <sys/stat.h>#include <stdio.h>void RetargetInit(UART_HandleTypeDef *huart);int _isatty(int fd);int _write(int fd, char *ptr, int len);int _close(int fd);int _lseek(int fd, int ptr, int dir);int _read(int fd, char *ptr, int len);int _fstat(int fd, struct stat *st);#endif //#ifndef _RETARGET_H__

retarget.c

#include <_ansi.h>#include <_syslist.h>#include <errno.h>#include <sys/time.h>#include <sys/times.h>#include <retarget.h>#include <stdint.h>#if !defined(OS_USE_SEMIHOSTING)#define STDIN_FILENO  0#define STDOUT_FILENO 1#define STDERR_FILENO 2UART_HandleTypeDef *gHuart;void RetargetInit(UART_HandleTypeDef *huart){gHuart = huart;/* Disable I/O buffering for STDOUT stream, so that* chars are sent out as soon as they are printed. */setvbuf(stdout, NULL, _IONBF, 0);}int _isatty(int fd){if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)return 1;errno = EBADF;return 0;}int _write(int fd, char *ptr, int len){HAL_StatusTypeDef hstatus;if (fd == STDOUT_FILENO || fd == STDERR_FILENO){hstatus = HAL_UART_Transmit(gHuart, (uint8_t *) ptr, len, HAL_MAX_DELAY);if (hstatus == HAL_OK)return len;elsereturn EIO;}errno = EBADF;return -1;}int _close(int fd){if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)return 0;errno = EBADF;return -1;}int _lseek(int fd, int ptr, int dir){(void) fd;(void) ptr;(void) dir;errno = EBADF;return -1;}int _read(int fd, char *ptr, int len){HAL_StatusTypeDef hstatus;if (fd == STDIN_FILENO){hstatus = HAL_UART_Receive(gHuart, (uint8_t *) ptr, 1, HAL_MAX_DELAY);if (hstatus == HAL_OK)return 1;elsereturn EIO;}errno = EBADF;return -1;}int _fstat(int fd, struct stat *st){if (fd >= STDIN_FILENO && fd <= STDERR_FILENO){st->st_mode = S_IFCHR;return 0;}errno = EBADF;return 0;}#endif //#if !defined(OS_USE_SEMIHOSTING)

STM32F103C8T6串口通信相关推荐

  1. 【stm32CubeMX】STM32F103c8t6串口通信

    [stm32CubeMX]STM32F103c8t6串口通信发送'hello windows' 一.串口通信协议 1.UART协议 2.RS-232 3.RS-485 二.USB转TTL 三.配置Cu ...

  2. STM32F103C8T6实现串口通信

    目录 前言 一. STM32F103C8T6是什么? 二.准备相应工作 1.下载安装相关程序 2.安装HAL库 3.创建项目 三 调试程序 四 电路连接 1 电路连接 2 烧录程序 五 使用汇编完成 ...

  3. 【嵌入式系统开发15】STM32F103C8T6下通过定时器Timer方式实现时间的精准控制,实现串口通信并让LED等周期性地闪烁

    本文目的是主要介绍通过STM32F103C8T6采用定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务.请设置一个5秒的 ...

  4. stm32f103c8t6与stm32f103zet6 基于SX1276串口通信-----发送端(二)

    矩阵按键控制代码 源码链接 使用4*4矩阵,主控芯片为STM32F103C8T6,串口发送配置在下面这篇文章里面 串口发送端配置博文 /******************************** ...

  5. uart串口通信_听说UART与STM32的HAL库更配哦

    摘要:HAL库(Hardware Abstraction Layer)是目前意法半导体公司主推的单片机开发方式,可以大大节省开发时间,实践来看,还是比较好用的.本文通过一个简单的UART收发程序,演示 ...

  6. STM32驱动串口屏,STM32F103C8T6串口发送指令控制HMI串口屏

    STM32驱动串口屏,STM32F103C8T6串口发送指令控制HMI串口屏 串口屏 基础指令集 硬件和接线 接线 实验前准备 STM32程序 串口程序 主函数 实验现象 总结 串口屏 串口屏是一个集 ...

  7. 八、STM32串口通信

    目录 一.串口通信 1.1串口通信物理层 1.2USB转串口模块 1.3串口通信的其他应用 1.4串口数据包的基本组成 二.串口的结构体与函数讲解 2.1串口讲解 2.2结构体讲解 2.3串口初始化函 ...

  8. STM32学习【2】STM32F103C8T6串口2USART2程序

    STM32F103C8T6串口1(PA10/RXD1,PA9/TXD1)用来烧写程序,串口2(PA3/RXD2,PA2/TXD2)接串口模块与电脑串口助手通信.IO口PA1接LED+470R电阻+D3 ...

  9. STM32通过DMA方式实现串口通信

    目录 一.DMA工作原理 二.创建工程项目 三.编写代码 1.在main.c写入以下函数 2.main函数中的while循环中写入以下代码 四.编译烧录 1.编译运行 2.烧录结果 五.总结 六.参考 ...

最新文章

  1. 企业网站建设中seo不能缺
  2. centos6.8 搭建postfix/dovecot邮件服务器
  3. HA集群实现原理 切换 JAVA_HA(一)高可用集群原理
  4. 【全栈React】第13天: 重复元素
  5. opencv光流例程_OpenCV 4.4 发布!新增YOLOv4 和 EfficientDet 推断支持
  6. 亲密关系-【认知情绪】-每一次生气的背后有什么
  7. testng 组_TestNG组
  8. n个人看了这个故事之后精神分裂了(ZT)
  9. 今天遇到的一个诡异的core和解决 std::sort
  10. airtest 多设备同时运行_AirTest多设备批量运行测试用例并自动生成测试报告
  11. 嵌入式怎么入门,嵌入式应该先学习什么
  12. Debian10安装wine及用wine安装微信、QQ与TIM
  13. Cesium开发基础篇 | 02加载地形数据
  14. ASP.NET 简介
  15. 美乐:用优雅的方式赚钱 感性的方式做音乐
  16. 【java基础】双引号内使用双引号必须在里面的双引号前加转义字符\
  17. 新企业如何为员工办理社保
  18. 哈哈,原来老酷比我的更新还要慢~~ 嘿嘿
  19. matlab的摆线的两拱,一种拱轴线为摆线的拱桥的设计方法与流程
  20. 4.1 Go语言中包(Packages)基础知识

热门文章

  1. phpmywind 查询结果生成csv文件并下载到本地
  2. html五子棋游戏制作原理,原生JS+Canvas实现五子棋游戏
  3. 手把手带你从0开始搭建个人网站,小白可懂的保姆级教程
  4. 配置Exchange Server 2010多种邮件客户端收发电子邮件
  5. oracle 帮助文件,oracle chm帮助文件下载
  6. webpackjsonp 还原_EST:微生物介导下砷还原及其在铁氧化物上吸附/解吸耦合反应动力学模型...
  7. lol8月21号服务器维护,8月21日英雄联盟更新维护到几点 lol8.21更新维护公告
  8. windows 快捷键关闭屏幕
  9. 微信小程序之分享海报生成
  10. 蚁群算法(实验分析)