单片机IO模拟串口发送数据
单片机IO模拟串口发送数据
由于项目上用的STM32单片机串口资源不够用,但是还是想看调试输出,所以就多引出了一个IO,使用IO模拟串口发送数据的时序来当做串口打印用了,本章实验工程以8bit数据位、1bit停止位,无奇偶校验、无流控,波特率9600bps为例,串口的发送数据时序流程如下图:
串口发送的时序是非常简单的,TX引脚空闲时为高电平,拉低一下是启动发送,随后发送8bit,最后拉高,模拟IO的实现需要的就是延时的精准度,以9600bps波特率为例,一秒能发送9600bit,那么发送1bit的时间间隔就是大概1/9600≈104us,贴一下代码:
void VirtualCOM_SendByte(uint8_t c)
{int i = 0;VCOM_GPIO_L(); // 拉低IO引脚启动发送delay_us(104);for(i = 0; i < 8; i++) // 开始发送8bit数据{if(c & 0X01){VCOM_GPIO_H();}else{VCOM_GPIO_L();}c >>= 1;delay_us(104);}VCOM_GPIO_H(); // 拉高IO引脚停止发送delay_us(104);
}void VirtualCOM_SendData(const void* buf, uint32_t len)
{const uint8_t* p = (const uint8_t* )buf;__set_PRIMASK(1); // 屏蔽所有中断,因为我们是用的模拟IO发送,倘若被中断打断,那么发送的数据就错乱了while(len--){VirtualCOM_SendByte(*p++);}__set_PRIMASK(0); // 取消屏蔽所有中断
}
ends…
单片机IO模拟串口发送数据相关推荐
- STM32F0 HAL库软件模拟串口发送数据
试验STM32F0官方提供的例程的时候,希望看到程序中某些变量的值,但是程序中往往没有串口发送部分,自己加又非常麻烦. 而点亮LED的程序基本上每个例程都有.所以用点亮LED引脚模拟串口发送数据就很方 ...
- 51单片机模拟串口发送接收数据(不使用SBUF)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 51单片机.模拟串口.串口发送.串口接收.逻辑分析仪 前言 一.配置定时器 二.串口发送 三.串口接收 四.主函数 五.波形图 5.1 ...
- 51单片机 串口发送数据(只是发送)
51单片机 串口发送数据(只是发送)用于调试. #include <reg51.h>#define uchar unsigned char #define uint unsigned in ...
- 51单片机:电脑向串口发送数据并控制LED灯
电脑向串口发送数据后,控制LED灯,并返回发送的数据 程序如下 #include"regx52.h" #include"intrins.h" unsigned ...
- 51单片机IO模拟UART
一. IO模拟UART发送 串口通信属于 串行 异步 半双工的通信模式 1. 最近在调试一个IO模拟UART的程序,把调试过程中遇到的问题总结一下.对于UART的发送部分(主机模式)还是比较容易实现的 ...
- MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据
MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据 [目录] - 1.无线通信模块设置 - 1.1 设置参数 - 1.2 调试步骤 - 2.按键与通信格式 - 2.1 P ...
- C#串口通信—向串口发送数据,同步接收返回数据
最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接 ...
- 关于proteus中串口发送数据与实际不符的问题(如发00h,收80h)
工程实训要用到串口,51单片机,串口工作方式一,只发不接受. 在proteus中用VIRTUAL TERMINAL(虚拟终端)监视串口发送数据. 现象:不论是用虚拟终端还是串口助手,接受的数据比实际发 ...
- python编程调用设备串口发送数据
为了通过python编程控制串口发送数据给单片机,编写此程序 使用serial模块完成串口的读取和数据的收发 重点掌握以下几个api的使用方法: 读取串口设备列表:list(serial.tools. ...
最新文章
- Java基础部分笔记----------网络编程
- Bleve:来自Couchbase、基于Go语言的全文索引与检索库
- C语言-文件操作总结
- struts2的注入参数,获取值
- python初学者用什么开发环境_python初学者用什么开发环境
- Crossing River(信息学奥赛一本通-T1232)
- asp.net学习之SqlDataSource 2 select的四种参数赋予形式的解释
- postgresql获取表最后更新时间(通过触发器将时间写入另外一张表)
- 关于Mysql group_concat的应用(把相同ID的VAL用字符'/'连接起来)
- 进击的序列帧 一(两篇)------- 让你的序列帧立体起来!
- Tomcat组件梳理—Digester的使用
- 微信红包体系设计分析
- dws中间表模型设计: 页面受访明细宽表
- openwrt运行n2n服务器,Windows下使用N2N搭建局域网,全球局域网(重写)
- 三、C语言的数据类型—浮点型数据
- python用for循环求和1到100_python使用for循环计算0-100的整数的和方法
- python爬虫获取携程旅游景点评分和评论
- windows 9X, 2000, xp所有版本注册表设置大全
- 计算机制作灯笼,做灯笼日记
- 小程序判断是否有上一页