文章目录

  • 前言
  • 一、以/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收相关推荐

  1. 【星曈科技】OpenMv笔记——利用OpenMV与STM32进行串口通信

    利用OpenMV与STM32进行串口通信 OpenMV端的程序 # Untitled - By: dell - 周一 7月 19 2021# Blob Detection and uart trans ...

  2. K210学习笔记(一) K210与STM32串口通信相关

    文章目录 前言 一.STM32 串口中断 接收K210板子发送的ASCII码整数 转换为 多位整形数据 二.MAIX BIT(K210)与STM32串口通讯 2.1 实现MAIX BIT与XCOM之间 ...

  3. 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练

    [K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...

  4. 【K210】K210学习笔记六——MaixHub在线模型训练识别数字

    [K210]K210学习笔记六--MaixHub在线模型训练识别数字 前言 K210准备工作 数据的获取 MaixHub如何在线训练模型 训练模型在K210上的测试 小结 前言 本人大四学生,电赛生涯 ...

  5. 【K210】K210学习笔记五——串口通信

    [K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...

  6. 【K210学习笔记】#MaixPy#(3)人脸检测与人脸识别

    目录 一.人脸检测: 1.烧录模型: 2.示例测试: 二.人脸识别: 1.获取机器码: 2.获取人脸识别模型: 3.烧录专用固件: 4.烧录模型: 5.示例测试: 6.报错解决: 一.人脸检测: 1. ...

  7. K210学习笔记(十二)——MaixHub本地训练模型(Windows)

    文章目录 前言 一.环境配置 1.安装python3.8 2.安装pip 3.安装CUDA10.1 4.安装CUDNN 5.tensorflow安装 6.MaixHub本地训练代码下载 二.本地训练使 ...

  8. USB学习笔记(5)STM32 USB库移植步骤

    USB学习笔记(5)STM32 USB库移植步骤 本文是将官网的USB驱动库文件移植到自己的工程里面,实现USB功能的具体移植步骤说明,实现Custom_HID功能. 1.先准备一个工程模板 获取工程 ...

  9. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

最新文章

  1. python web页面输出_python+socket+jq实现web页面实时输出结果
  2. 使用注解打造自己的IOC框架
  3. CDS – One Concept, Two Flavors
  4. 加载tensorflow模型后只运行变量名实现预测(sess.run)
  5. python中cv2库_Python cv2库(人脸检测)
  6. Akka的字数统计MapReduce
  7. PS 菜单栏显示与隐藏 - 快捷键
  8. 关于WinForm控件在asp.net中应用的问题。
  9. 光子浏览器_光子学公开课第十四期 明日开课 | 上海大学金翊教授:三值光学计算机...
  10. Sample DataBase 资源
  11. 《Python机器学习——预测分析核心算法》——2.3 对“岩石vs.水雷”数据集属性的可视化展示...
  12. CNN训练Cifar-10技巧
  13. 添加购物车功能全部代码
  14. android 不限速迅雷,迅雷不限速分享(手机+PC端打包) – 长期更新
  15. 大型网站架构系列:电商网站架构案例
  16. Actor::updateMassFromShapes: Compute mesh inertia tensor failed for one of the actor's mesh shapes!
  17. 深度学习图片文字定位识别
  18. android中如何打开指定卡上的数据连接开关,Android 代码控制手机数据网络的开关(5.0以上)...
  19. 单的axis java教程
  20. 用Python+HTML做的点名器

热门文章

  1. 使用Fiddler实现网络限速,模拟低速网络
  2. 影响一个系统性能的方方面面
  3. html导航页面转换,纯CSS实现导航栏Tab切换效果
  4. 中国蚁剑连接一句话木马
  5. Android基础:签名文件MANIFEST.MF的内容是怎么计算来的?
  6. 深度相机介绍(TOF、RGB双目、结构光参数对比)
  7. MATLAB SCI论文绘图及绘图窗口大小设置
  8. tibco文档下载地址
  9. 基于InforFlow的业务流程管理系统解决方案(转载)
  10. 为什么要做数仓分层,不做行吗?