既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
文章目录
前言
注:我只是个大一的小白,本文只完成基本功能,希望能帮助有困惑的人(我也是刚刚走出谜团,大佬勿喷。)
工训赛期间,突击学习了二维码识别(基于openmv4)。openmv4通过串口通信加json与stm32f103完成通信,结果由stm32所连的lcd屏显示
一、所用的硬件:
openmv4、正点原子的mini板(stm32f103rct6)、正点原子配套的lcd屏。
二、openmv端
直接上代码:
代码如下(示例):
mport sensor, image, time
from pyb import UART
uart = UART(3, 115200)
sensor.reset()
sensor.set\_pixformat(sensor.RGB565)
sensor.set\_framesize(sensor.QQVGA) # can be QVGA on M7...
sensor.skip\_frames(30)
sensor.set\_auto\_gain(False) # must turn this off to prevent image washout...
while(True):
img = sensor.snapshot()
img.lens\_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
for code in img.find\_qrcodes():
print(code)
FH= bytearray([0xb3,0xb3])
uart.write(FH)
uart.write(code.payload())
FH = bytearray([0x0d,0x0a])
uart.write(FH)
time.sleep\_ms(1000)
注:
1、openmv4的 p4为TX p5为RX。(不要接错线哦)
2、FH为帧头用于检验数据发送是否正确。(不懂的可以结合32端代码理解)
3、 code.payload()函数记录的二维码内的字符。
4、波特率设置为115200(要和32端保持一致)。
5、关于二维码识别的详细代码可以去openmv官网查找。
2.stm32端
main.c:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "lcd.h"
int main(void)
{
u8 len;
u8 t,n;
u8 UsartDisPlay[200];
uart\_init(115200);
delay\_init();
LCD\_Init();
POINT_COLOR=RED;
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;
for(t=0;t<len;t++)
{ if(USART_RX_BUF[t]==0xb3)
if(USART_RX_BUF[t]==0xb3) n=t+1;
}
for(t=0;n<len;t++,n++)
{UsartDisPlay[t]=USART_RX_BUF[n];
delay\_ms(3000);
}
USART_RX_STA=0;
}
LCD\_ShowString(15,50,260,16,16,UsartDisPlay);
}
usart1配置:
void uart\_init(u32 bound){
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC\_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟
//USART1\_TX GPIOA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO\_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
//USART1\_RX GPIOA.10初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO\_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10
//Usart1 NVIC 配置
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
![img](https://img-blog.csdnimg.cn/img_convert/aad051852dbae5a055fb2516f6a11177.png)
![img](https://img-blog.csdnimg.cn/img_convert/381410110521a9a3cba66c4d00392192.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**
%以上物联网嵌入式知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**