串口

STM32串口 ASCII 的数字接收与发收

白昼怎懂夜的黑 提交于 2020-01-29 05:32:06
STM32 ASCII 的数字接收与发收 STM32串口 ASCII 的数字接收与发收 串口发送 先重定义,如下 int fputc ( int ch , FILE * f ) { HAL_UART_Transmit ( & huart1 , ( uint8_t * ) & ch , 1 , 1 ) ; return ch ; } 数据量大的可用DMA,亲测有效 int fputc ( int ch , FILE * f ) { while ( HAL_UART_Transmit_DMA ( & huart1 , ( uint8_t * ) & ch , 1 ) != HAL_OK ) ; return ch ; } 发送的内容用printf即可 串口的数字接收 接收ASCII的数字并组合,此函数可处理 有小数的正负和无小数的正负 //此函数用于接收ascii码的数字,可方便后续的计算 /* uint8_t *rxbuffer 存放数据的数组 */ float readstring ( uint8_t * rxbuffer ) { float str = 0 ; //返回的变量 int sum = 0 ; float t = 0 , c = 0 , z = 0 , a = - 1 ; //作为中间变量 uint8_t flag = 0 ; //做标记位,判断有无小数点 for (

迪文串口屏下载字库方法

柔情痞子 提交于 2020-01-28 23:47:05
迪文屏串口屏下载字库流程 1、使用迪文屏调试助手连接屏幕成功 如何正确连接迪文屏参见另一篇博文 2、打开 调试工具--字库下载; 点击“字库选择”,在弹出的提示框中,选择“否” 3、选择指定的字库导入 这里使用的字库名称为:24_微软雅黑gb2312-48x48.DZK,文件大小为2.42M,字体大小为48*48,字库编码为gb2312 注意:迪文屏总共可存储60个字库,对应60个位置,字库小于等于128KB的字库需放在0x00-0x1F ,对应位置为0-31,字库大于128KB的字库放在0x20-0x3C,对应的位置为32-60。 字库下载的位置,对应的是迪文屏驱动内划分出来的存放字库的位置,迪文屏驱动内原有几个字库如下: 原有字库存储在第0、32、33、34、35号位置 4、点击“下发” 调试助手会向屏幕发送指令,屏幕会返回字符串信息:PleaseTx Text_Lib! 然后等待大约5分钟,弹出提示框“字库下载完成”即成功。 注意:下载字库有一定的失败率,如果弹出提示框提醒“终端无响应”,请重新尝试下载,最终是否成功仅以弹出“字库下载成功“的提示框为准。 5、测试字库是否下载成功 在 调试工具—文本显示中,选择拓展字库(标准字库为迪文屏自带的5个字库) 选择字库序号0x24(对应位置36号),选择对应的字库编码和字体大小(此两项必须与所下载的字库对应,否则无法正常显示)

迪文串口屏的使用

南笙酒味 提交于 2020-01-28 23:27:13
本文主要记录迪文串口屏的使用 正在做的项目用到了迪文串口屏,网上资料较少,入手较困难,自己经过摸索后给大家一种简单入手的方式。 屏幕型号 DMT48270T043,内核为M100(串口屏上市比较早了,现在迪文科技都是DGUS屏了,注意两者是有区别的),8pin接口,5V,DIN,DIN,DOUT,Busy, GND, GND ,两个DIN是联通的,GND共地,所以一般使用的话可以直接连接5V,DIN与GND就可以了。Busy是提醒数据缓冲区是否为满状态,以防发生数据丢失的情况。该屏幕的具体参数可参见该型号的说明手册,这里不赘述。 调试助手:   迪文调试助手6.1 测试屏幕的方法简介: 可使用USB转TTL转接板,将转接板的TXD连接迪文屏DIN,RXD接迪文屏DOUT,同时使用转接板直接供电。 这里需要注意 ,在迪文屏背面有TTL电平与RS232电平的 跳线选择 ,如果使用TTL电平需要将屏幕背面相应的跳线短接。连接好之后便可以直接使用电脑,便可通过迪文调试助手6.1来直接对串口屏进行调试了。 首先需要与迪文屏进行握手,握手条件是:选择正确的端口号,并设置波特率为115200( 这里需要注意 ,对于波特率的设置,在迪文屏的背面也有 跳线选择 波特率的选项,1、921600,2、115200,一般出厂默认是115200),设置好之后便可以点击握手按钮,如果与迪文屏握手成功

记一次调试串口设备Bug的经历

拈花ヽ惹草 提交于 2020-01-28 23:07:44
最近花了差不多1天的时间在折腾一个Bug,该Bug的表象如下: 这个Bug还特别独特,在开发电脑中无提示,在终端用户那里每次使用软件的时候都报这个。仔细思考了一下最近在源码中新添加的功能,没发现有啥特别明显的问题。于是,根据字面意思的理解是“运行时错误”,所以一开始解决这个问题的思路是将所有应用程序的运行时拷贝至应用程序目录。尝试过之后,依然报这个异常。分析可能跟运行时的动态链接库没有关系。于是,调整解决问题的思路,考虑将工程中新添加的代码进行分割。部分部分的测试新添加的代码到底那里有问题,排查到最后是这个函数内部发生了异常。异常函数的代码如下: void CleanSerialPort() { if(g_hEvent != NULL) { CloseHandle(g_hEvent); g_hEvent = NULL; } if(g_SerialPort.IsOpen()) { COMMPROP properties; memset(&properties, 0, sizeof(properties)); g_SerialPort.GetProperties(); g_SerialPort.ClearWriteBuffer(); g_SerialPort.ClearReadBuffer(); g_SerialPort.Flush(); g_SerialPort.CancelIo()

Linux串口

隐身守侯 提交于 2020-01-28 09:17:59
可以参考 http://www.cnblogs.com/lovemo1314/archive/2010/10/29/1864327.html 《从实践中学嵌入式linux应用程序开发》(华清远见嵌入式学院)第2章、嵌入式文件和I/O编程 设置串口属性的基本流程: 保存原先串口配置 使用tcgetattr(fd,&old_cfg)函数,该函数得到有fd指向的终端的配置参数,并将它们保存于termios结构变量old_cfg中。若调试成功,函数返回值为0,若调试失败,函数返回值为-1; if(tcgetattr(fd,&old_cfg != 0 ) { perror("tcgetattr"); return -1; } 若调试成功,函数返回值为0,若调试失败,函数返回值为-1; 激活选项 CLOCAL和CREAD分别用于本地连接和接收使能,因此首先要通过位掩码的方式激活这两个选项。 newtio.c_cflag |= CLOCAL | CREAD; 调用cfmakeraw()函数可以将终端设置为原始模式,在后面的实例中,采用原始模式进行串口数据通信。 cfmakeraw(&new_cfg); 设置波特率 cfsetispeed(&new_cfg,B115200); cfsetospeed(&new_cfg,B115200); 设置字符大小 new_cfg.c_cflag &=

串口接收中断不起作用的问题

对着背影说爱祢 提交于 2020-01-28 04:02:08
这两天重新开始学STM32, 调试串口,配置好了串口接收中断,却怎么也不起作用,后来经过检查师main函数结束了, 程序已经停止来, 在main函数的结尾加while(1)循环,串口中断正常了。 来源: CSDN 作者: 一缕阳光best 链接: https://blog.csdn.net/a1015392344/article/details/103883837

常用元器件使用方法29:Lora模块E22_400T22S的使用方法

筅森魡賤 提交于 2020-01-28 03:48:24
介绍: E22-400T22S是全新一代的LoRa无线模块,基于SEMTECH公司SX1268射频芯片的无线串口模块(UART),具有多种传输模式,工作在(410.125-493.125MHz)频段(默认433.125MHz),LoRa扩频技术,TTL电平输出,兼容3.3V与5V的IO电压。 特性: 基于SX1268开发全新LoRa扩频调制技术,带来更远的传输距离,抗干扰能力更强; 支持自动中继组网,多级中继适用于超远距离通信,同一区域运行多个网络,且同时运行; 支持用户自行设定通信密钥,且无法被读取,极大提高了用户数据的保密性; 支持LBT功能,在发送前监听信道环境噪声,可极大的提高模块在恶劣环境下的通信成功率; 支持RSSI信号强度指示功能,用于评估信号质量、改善通信网络、测距; 支持无线参数配置,通过无线发送指令数据包,远程配置获读取无线模块参数; 支持空中唤醒,即超低功耗功能,适用于电池供电的应用方案; 支持定点传输、广播传输、信道监听; 支持深度休眠,该模式下整机功耗约2uA; 支持全球免许可ISM 433MHz,支持470MHz抄表频段; 理想条件下,通信距离可达5km; 参数掉电保存,重新上电后模块会按照设置好的参数进行工作; 高效看门狗设计,一旦发生异常,模块将自动重启,且能够继续按照先前的参数设置继续工作; 支持0.3k-62.5kbps的数据传输速率; 支持2

linux与开发板串口通信

可紊 提交于 2020-01-27 21:46:15
研究了一天的linux串口,结果改了树莓派的系统配置文件config.txt给改了导致系统崩溃。。。。其实我感觉网上的大多数方法都是不符合新版本树莓派的,网上的方法是通过修改系统配置文件后安装minicom进行串口的调试。为什么需要修改配置文件?因为树莓派升级后tx与rx引脚是复用的,需要用于串口的话就需要修改配置,让系统把io口让给串口。 这种方法比较麻烦,我采用的是利用两个usb转串口,互相连接好了,就可以直接通过linux下的串口通信函数来实现通信了。需要注意的是两个usb转串口相互连接时不仅仅要将RXD、TXD相互反接,还需要将GND连接在一起。 下面讲解下具体方法 (1)不同系统的串口名称是不一样的,如下图。 (2)设置 最基本的设置串口包括波特率设置,效验位和停止位设置. 很多系统都支持POSIX终端(串口)接口.程序可以利用这个接口来改变终端的参数,比如,波特率,字符大小等等.要使用这个端口的话,你必须将<termios.h>头文件包含到你的程序中.这个头文件中定义了终端控制结构体和POSIX控制函数. 与串口操作相关的最重要的两个POSIX函数可能就是tcgetattr(3)和tcsetattr(3).顾名思义,这两个函数分别用来取得设设置终端的属性.调用这两个函数的时候,你需要提供一个包含着所有串口选项的termios结构体,串口的设置主要是设置struct

key 串口

独自空忆成欢 提交于 2020-01-27 20:27:41
/******************************************************************** 函数功能:往串口发送一字节数据(可通过超级终端或者串口调试助手显示出来, 超级终端波特率选为9600)。每按下一次S2键,松开后均会在超级终端 上显示一串字母"abcdefg哈哈"。 入口參数:d: 要发送的字节数据。 ********************************************************************/ #include <reg52.h> #define jingzhen 11059200UL /*使用22.1184M晶体*/ #define botelv 9600UL /*波特率定义为9600*/ unsigned char zifuchuan[]="abcdefg哈哈"; //待显示字符。 volatile unsigned char sending; sbit s2=P3^4; void delay(unsigned char i) { unsigned char j,k; for(j=i;j>0;j--) for(k=90;k>0;k--); } void init(void) //串口初始化 { EA=0; //临时关闭中断 TMOD&=0x0F; //定时器1模式控制在高4位

华为物联网操作系统LiteOS内核教程02-HelloWorld

↘锁芯ラ 提交于 2020-01-27 06:47:52
1. 创建HelloWorld工程 打开IoT Studio,点击创建IoT Studio工程: 填写工程设置,需要注意一下几点: 工程名称和目录中不可以有中文或者空格 SDK版本选择 最新 的IoT_LINK版本,当前最新1.0.0 硬件平台选择 STM32L431RC_BearPi 示例工程选择 hello_world_demo 创建完成之后进入IoT Studio界面如图: 2. IoT_LINK SDK 在创建工程时,会选择 SDK 版本,如图: Huawei IoT link SDK Huawei IoT link SDK(下文统一简称SDK)是部署在具备广域网能力、对功耗/存储/计算资源有苛刻限制的终端设备上的轻量级互联互通中间件,您只需调用API接口,便可实现设备快速接入到物联网平台以及数据上报和命令接收等功能。 SDK提供端云协同能力,集成了MQTT、LwM2M、CoAP、mbedtls、LwIP 全套 IoT 互联互通协议栈,且在这些协议栈的基础上,提供了开放 API,用户只需关注自身的应用,而不必关注协议内部实现细节,直接使用SDK封装的API,通过连接、数据上报、命令接收和断开四个步骤就能简单快速地实现与华为OceanConnect云平台的安全可靠连接。使用SDK,用户可以大大减少开发周期,聚焦自己的业务开发,快速构建自己的产品。 SDK和LiteOS的关系