K210学习笔记(三) K210与STM32进行串口通信,K210发STM收
文章目录
- 前言
- 一、以/r/n为结尾
- 二、K210端代码
- 三、STM32端
- 3.1 main函数
- 四、测试结果
- 4.1当收到1时
- 4.2当收到2时
- 4.3 测试视频
- 总结
前言
前面我们讲了STM32给K210发数据,大家可以看看这篇。
K210学习笔记(二) K210与STM32进行串口通信,K210收,STM32发
那么今天我们来讲一下K210给STM32发数据。
硬件平台:STM32F103ZET6正点原子用的也是正点原子的串口例程
,K210 M1N DOCK
软件平台:keil5 ,maixPython IDE
接线:
STM32 | K210 |
---|---|
GND | GND |
PA10(RXD) | IO10(TXD) |
PA9(TXD) | IO9(RXD) |
一、以/r/n为结尾
在stm32的串口通信代码中,程序要求发送的字符以回车换行结束(0x0d,0x0a),即\r\n。
那么我们看ASCII表就知道0x0d,0x0a是什么了。
\r是回车,carriage return的意思,也就是cr,作用是返回到当前行的最前方。
\n是换行,next line的意思,也就是nl,作用是跳到下一行的当前位置。
\r\n是回车+换行,很容易理解,它的作用是跳到下一行的开始位置。
STM32的串口中断服务函数也规定了必须以\r\n为结尾,否则程序不知道你什么时候发送结束。就会导致未知的错误。
二、K210端代码
K210端写的就很简单了。前面就是对串口,屏幕,摄像头进行初始化。然后每隔2S发1或发2.数据会以ASCII码的形式发送出来。
import sensor
import image
import lcd
import time
import utime
from machine import UART
from fpioa_manager import fm
fm.register(10, fm.fpioa.UART1_TX, force=True)
fm.register(9, fm.fpioa.UART1_RX, force=True)
uart = UART(UART.UART1, 115200, 8, 1, 0, timeout=1000, read_buf_len=4096)
clock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames(30)
lcd.rotation(2)#LCD屏幕翻转,范围是0~3
sensor.set_hmirror(True)#摄像头镜像
first = '1\r\n'
two = '2\r\n'while True:img = sensor.snapshot()#从摄像头获取图像uart.write(first)#发1utime.sleep_ms(2000)#延时2suart.write(two)#发2utime.sleep_ms(2000)#延时2slcd.display(img)#LCD显示图像
三、STM32端
STM32端,先说一下这个函数,就是使用printf的时候会调用这个函数,我们看到数据直接赋给了串口1的数据寄存器,那么我只用printf的是时候,那么就在串口1发出来。
3.1 main函数
主函数这里就是对时钟,串口,LED,LCD进行初始化。然后进入主循环,当接收完成之后
判断我USART_RX_BUF[0]是否是1或者2.因为我是1或2长度是1。USART_RX_BUF[0]是一个u8的数据类型。
当收到1时,LCD显示1,LED0亮,LED1灭。
当收到2时,LCD显示2,LED0灭,LED1亮。
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"int main(void){delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200); //串口初始化为115200LED_Init(); //LED端口初始化LCD_Init();POINT_COLOR=RED; while(1) { if(USART_RX_STA&0x8000)#接收完成{ if(USART_RX_BUF[0]==0x31){LCD_ShowxNum(100,50,1,1,24,0);LED0=0;LED1=1;}if(USART_RX_BUF[0]==0x32){LCD_ShowxNum(100,50,2,1,24,0);LED0=1;LED1=0;}USART_RX_STA=0;}}
}
主循环内则一直判断接收中断标志最高位有没有置1,置1表示有一帧数据来到,可以进行处理,处理内容为发送接收到的数据同时判断接收的第一位。
这个一定要加 USART_RX_STA=0; 否则标志位不回到0就不继续接收了。
四、测试结果
4.1当收到1时
4.2当收到2时
4.3 测试视频
总结
这就是这次的分享,希望能够帮助到大家。
参考博文:
\n \r \n\r \r\n回车还换行?有啥区别??
ASCII码对照表(包括十六进制、十进制和字符)
STM32CubeMX-串口中断实验
K210学习笔记(三) K210与STM32进行串口通信,K210发STM收相关推荐
- 【星曈科技】OpenMv笔记——利用OpenMV与STM32进行串口通信
利用OpenMV与STM32进行串口通信 OpenMV端的程序 # Untitled - By: dell - 周一 7月 19 2021# Blob Detection and uart trans ...
- K210学习笔记(一) K210与STM32串口通信相关
文章目录 前言 一.STM32 串口中断 接收K210板子发送的ASCII码整数 转换为 多位整形数据 二.MAIX BIT(K210)与STM32串口通讯 2.1 实现MAIX BIT与XCOM之间 ...
- 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
[K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...
- 【K210】K210学习笔记六——MaixHub在线模型训练识别数字
[K210]K210学习笔记六--MaixHub在线模型训练识别数字 前言 K210准备工作 数据的获取 MaixHub如何在线训练模型 训练模型在K210上的测试 小结 前言 本人大四学生,电赛生涯 ...
- 【K210】K210学习笔记五——串口通信
[K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...
- 【K210学习笔记】#MaixPy#(3)人脸检测与人脸识别
目录 一.人脸检测: 1.烧录模型: 2.示例测试: 二.人脸识别: 1.获取机器码: 2.获取人脸识别模型: 3.烧录专用固件: 4.烧录模型: 5.示例测试: 6.报错解决: 一.人脸检测: 1. ...
- K210学习笔记(十二)——MaixHub本地训练模型(Windows)
文章目录 前言 一.环境配置 1.安装python3.8 2.安装pip 3.安装CUDA10.1 4.安装CUDNN 5.tensorflow安装 6.MaixHub本地训练代码下载 二.本地训练使 ...
- USB学习笔记(5)STM32 USB库移植步骤
USB学习笔记(5)STM32 USB库移植步骤 本文是将官网的USB驱动库文件移植到自己的工程里面,实现USB功能的具体移植步骤说明,实现Custom_HID功能. 1.先准备一个工程模板 获取工程 ...
- J2EE学习笔记三:EJB基础概念和知识 收藏
J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...
最新文章
- python web页面输出_python+socket+jq实现web页面实时输出结果
- 使用注解打造自己的IOC框架
- CDS – One Concept, Two Flavors
- 加载tensorflow模型后只运行变量名实现预测(sess.run)
- python中cv2库_Python cv2库(人脸检测)
- Akka的字数统计MapReduce
- PS 菜单栏显示与隐藏 - 快捷键
- 关于WinForm控件在asp.net中应用的问题。
- 光子浏览器_光子学公开课第十四期 明日开课 | 上海大学金翊教授:三值光学计算机...
- Sample DataBase 资源
- 《Python机器学习——预测分析核心算法》——2.3 对“岩石vs.水雷”数据集属性的可视化展示...
- CNN训练Cifar-10技巧
- 添加购物车功能全部代码
- android 不限速迅雷,迅雷不限速分享(手机+PC端打包) – 长期更新
- 大型网站架构系列:电商网站架构案例
- Actor::updateMassFromShapes: Compute mesh inertia tensor failed for one of the actor's mesh shapes!
- 深度学习图片文字定位识别
- android中如何打开指定卡上的数据连接开关,Android 代码控制手机数据网络的开关(5.0以上)...
- 单的axis java教程
- 用Python+HTML做的点名器