- 博客(32)
- 收藏
- 关注
原创 OpenCV学习笔记
OpenCV学习笔记OpenCV3使用下载安装教程简单例程:显示图片Mat图像二值化取出R、G、B的数值调用相机并显示画圆、线、矩形调用相机并绘制直方图图像形态学选择HSV范围显示图像图像二值化区域自适应二值化滑动条二值化选择阈值OpenCV3使用下载安装https://blog.youkuaiyun.com/Creama_/article/details/107238475教程https://www.icourse163.org/learn/HDU-1461554161?tid=1465877483#/le
2021-12-31 00:24:51
2836
原创 透明小时钟开发流程与总结
文章目录功能实现:时间更新天气信息更新菜单配置WiFi 配置UIDrop down listWiFi配置lvgl使用虚拟键盘WIFI问题其他主界面切换ui逻辑问题LVGL设置图片动画主菜单逻辑需要做的事情doing城市名字打错之后会进入无限循环。功能实现:时间更新时间功能需要在custom.h里面exten data、time未知问题,字符串位置索引错误,把char network 分别给time和data会互相重叠。。解决:使用srting 字符串格式,并且直接传给lvgl为字符串转
2021-12-24 17:17:41
3663
原创 单项电能计量IC
单项电能计量ICcs5463:测量:瞬时电压、电流、功率IRMS、VRMS,视在功率、有功功率、无功功率;有功基波谐波功无功基波、功率因数、频率Vrms指的电压的有效值,电压峰值理论可以无限高,换成VDC就等于20V。vrms是电压的均方根,表示交流信号的有效值或有效直流值。不能视为一种单位,应该是一种电压参数。对于正弦波,vrms是指正弦交流信号的。Irms指电感产品的应用额定电流,也称为温升电流,即产品应用时,表面达到一定温度时所对应的DC电流。无功功率(Q)许多用电设备均是
2021-11-24 15:20:51
905
原创 SPIFFS文件系统的使用
SPIFFS文件系统的使用//引用相关库#include "FS.h"#include "SPIFFS.h"void setup(){ Serial.begin(115200); Serial.println(); //挂载文件系统 if (SPIFFS.begin(true)) { Serial.println("SPIFFS文件系统挂载成功!"); }//打开或者新建文件 File file = SPIFFS.open("/test.txt", FIL
2021-11-24 15:19:32
1326
原创 指针无法传递问题
指针无法传递问题char *Spiffs::wifi_read_account(void){ File file; file = SPIFFS.open("/account.txt", FILE_READ); if (file) { char account2[]="1234"; char account[]=""; int index=0; while (file.available()) { account[index
2021-11-24 15:13:29
633
原创 C++学习笔记① 类和对象
C++学习笔记①类public 公有成员private 私有成员protected 受保护成员类类:是防止函数直接访问类类型的内部成员。class Box{ public: double length; private://可省略,成员默认为私有。 double width;};public 公有成员box.length = 10.0; // OK: 因为 length 是公有的private 私有成员box.width = 10.0
2021-09-08 01:15:48
151
原创 从零在 Linux(ubuntu)下,使用VScode+ESP32 IDF+Platform IO搭建开发环境
ESP32的开发环境确实不友好,远不如STM32,在了解了几个的编译环境和方法后,我认为这个方法是最简单方便的,无需繁杂的命令配置,只需要认真阅读官方文档一般都能解决问题。这里有几个问题:1).为什么开发环境要使用Linux而不是Windows:Linux下编译更快!速度在5-10倍以上2).为什么编译工具使用VScode而不是CMake等,其实Eclipse也是可以的,但是我习惯了vs全家桶,就用vscode了。主要是方便,再加上本身对make也不熟悉。工具介绍如图:官方ESP-IDF 编
2021-09-02 21:50:21
7671
4
原创 17年电赛的板球控制系统,PID算法的C程序实现+OpenMV的图像处理(颜色识别)
练习了17年电赛的板球控制系统,主要用到两个,一个是PID,另一个是OpenMV的图像处理(颜色识别)PID:#include "main.h"#include "stdio.h"void PIDx_init(void);float PIDx_realize(float speed);void PIDy_init(void);float PIDy_realize(float speed);#include "PID.h" /******************* X轴PID **
2021-08-03 14:08:17
2805
1
原创 STM32滤波电容个数和大小的确定
在数据手册中查到了关于STM32的供电和供电电源得滤波电容得多少,以前还好奇芯片旁的滤波电容是怎么确定个数的,原来是根据使用的IO数量加上的,
2021-07-03 18:32:05
2879
1
原创 python 创建FrameBuffer缓存区
cs.low() rs.high() fbuf=bytearray(320*240*2) fbuf_temp = bytearray(320) for m in range(0,240): for i in range(0,320): fbuf[(m*320+i)*2]=0x00 fbuf[(m*320+i)*2+1]=0xff fbuf_end=framebuf.FrameBuffer(...
2021-06-11 20:15:47
883
2
原创 HAL库串口接收定长数据包,数据有结尾标志。
HAL库串口接收不定长数据包,数据以’\0’为结尾标志。串口中断:uint8_t USART1_Receive_message [50]={0};uint8_t Receive_Number=0;//一次性接收了多少个数据uint8_t Receive_times=0;//接收信息次数uint8_t USART1_Receive_message_buffer [1]={0};//一次接收一个void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huar
2021-05-27 13:36:08
1948
1
原创 (硬件SPI)对于清幕函数使用数组,加快SPI硬件的单个数据发送速度
对于清幕函数使用数组,加快SPI硬件的单个数据发送速度void LCD_Clear(uint16_t Color){ uint8_t Color_buff[320*2]={0x00}; uint32_t i=0; for(i=0;i<320;i++) { Color_buff[2*i]=Color/256; Color_buff[2*i+1]=Color%256; } extern SPI_HandleTypeDef hspi1; LCD_Set
2021-05-24 14:40:56
299
转载 MDK错误代码
原文地址:https://www.cnblogs.com/chris-cp/p/3900766.htmlMDK常见错误详解集合错误代码及错误信息 错误释义error 1: Out of memory 内存溢出error 2: Identifier expected 缺标识符error 3: Unknown identifier 未定义的标识符error 4: Duplicate identifier 重复定义的标识符error 5: Syntax error 语法错误error 6: Err
2021-05-23 11:19:20
2112
原创 HAL库使用PWM
HAL库使用PWM HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,197);
2021-05-21 12:16:40
999
原创 HAL库使用IIC
HAL库使用IIC选择主从模式和速度直接调用IIC函数函数原型: * @brief Write an amount of data in blocking mode to a specific memory address * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @par
2021-05-21 11:29:29
3111
原创 OpenMV物体分类和颜色识别两种模式通过串口发送,与STM32通信。
import sensor, image, time, math,os, tffrom pyb import UARTfrom pyb import Pin, Timer# 50kHz pin6 timer2 channel1uart = UART(3, 9600)buff=0while(True): while( uart.any() ): temp = uart.readline().decode() buff=temp if tem
2021-04-22 19:11:34
2195
2
原创 OpenMV查找除了自定义的颜色外的所有颜色,并把他框选起来
import sensor, image, time, mathimport timefrom pyb import Pin, Timer# 50kHz pin6 timer2 channel1light = Timer(2, freq=50000).channel(1, Timer.PWM, pin=Pin("P6"))light.pulse_width_percent(100) # 控制扩展LED的亮度 0~100thresholds = [(41, 82, -18, 11, -20,
2021-04-22 19:07:05
671
原创 OpenMV 驱动自己的LCD屏(修改后)
OpenMV 驱动自己的LCD屏所以在写这个代码之前参考一位老哥的代码,但是他使用的是OpenMV V3,我的是OpenMV V4 H7 Plus,运行他的源代码后发现并不能显示。所以我在他的代码基础上进行了更改,来适配新版本的OpenMV。其中最重要的更改就是write_image()这个函数,OpenMV返回的image对象并不能直接拿来给SPI发送,因为他会丢掉GRB565 16位数据的低(或高)八位,所以,我又开辟了一个新的数据缓存区:fbuf = bytearray(320)#建立帧缓冲
2021-04-22 18:33:15
15759
97
原创 配置Visual Studio 2019 C++环境编译C语言
1. #include < iostream >标准的输入输出流头文件,用于识别printf()函数2. #define _CRT_SECURE_NO_DEPRECATE在生成解决方案时遇到报错:“_CRT_SECURE_NO_DEPRECATE”: 未定义宏或在预编译头使用后定义发生改变。解决方案:在项目属性 -> C/C++ -> 预处理器 -> 预处理器定义中加上“;_CRT_SECURE_NO_DEPRECATE”。...
2021-03-06 22:51:36
1298
原创 1.3TFT LCD (ST7789)镜像操作 适配三棱镜
三棱镜会将LCD镜像,所以要在LCD上写镜像操作在ST7789数据手册中找到镜像的命令:也就是对D6位进行置1 其他置0即可用计算器的程序员模式:即先写命令0X36,然后写数据0X40 Lcd_WriteIndex(0x36); Lcd_WriteData(0x40); //镜像显示 //Lcd_WriteData(0x00); 正常显示...
2021-03-05 20:25:09
4176
14
原创 调试LCD问题汇总
调试LCD问题汇总一、LCD帧数问题:1. STM32F103C8T61.8寸 128*1602. STM32F411CEU61.8寸 128*1601.3寸240*240二、复位后白屏问题:1.LCD_Res引脚复位时序问题一、LCD帧数问题:1. STM32F103C8T6HSE 晶振的问题导致刷屏速度慢。STM32F103 ,虽然SPI速度可以达到16M/S 由于刷新运算所需的时间,实际当SPI速度高于4.5以上时,再提升SPI的速度已无法提升刷新率。 应提升主频速度。主频36M SPI
2021-03-01 14:10:35
2357
原创 建立CUBEMX工程的步骤
虽然建立CUBEMX工程的步骤极其简单,但是我今天依旧又犯了一个非常低级的错误,导致以为代码问题,浪费1个小时找错。所以现在再梳理一遍,记录一下,如果下次在犯错误可以再来看看。选型高速外部时钟源串行SWD下载时钟选择编辑生成工程的名字和路径,选择IDEMDK选择include路径选择工程文件的添加最后很重要的也是经常遗忘的一步—选择ST-LINK...
2021-03-01 14:08:04
531
原创 STM32F4操作GPIO寄存器
GPIO的工作模式1、4种输入模式(1)GPIO_Mode_IN_FLOATING 浮空输入(2)GPIO_Mode_IPU 上拉输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_AIN 模拟输入2、4种输出模式(5)GPIO_Mode_Out_OD 开漏输出(带上拉或者下拉)(6)GPIO_Mode_AF_OD 复用开漏输出(带上拉或者下拉)(7)GPIO_Mode_Out_PP 推挽输出(带上拉或者下拉)(8)GPIO_Mode_AF_PP 复用推挽输出(带上拉
2021-02-27 14:56:58
1619
原创 CubeMX,HAL库 简单的使用ADC
在CubeMX中配置:配置解释:synchronous clock mode divided by 同步时钟模式分频asynchronous clock mode divided 异步时钟模式分频resolution分辨率data alignment 数据对齐(右)Sequencer 扫描顺序 Sequencer fully configurable 描通道的顺序与通道号channel number无关Sequencer not fully configurab
2021-02-22 18:30:10
1911
原创 MDK(Keil)编译后工程中内存的解释
在MDK(Keil) 中编译工程时关于Program Size的信息Code :是程序中代码所占字节大小RO-data :程序中所定义的指令和常量大小 (Read Only)RW-data :程序中已初始化的变量大小 (Read/Write) // int a = 0; 全局初始化区ZI-Data :程序中未初始化的变量大小 (Zero Initialize) //int a ; 全局未初始化区ROM(Flash) size = Code+RO-data+RW-data;RAM size = R
2021-02-22 17:54:19
857
原创 CubeMX,HAL库使用硬件SPI
CubeMX,HAL库使用硬件SPICubeMX配置SPI的模式:SPI工作方式SPI引脚和时序SPI时序图MDK代码CubeMX配置SPI的模式:分别是:全双工STM32作为主机全双工STM32作为从机半双工STM32作为主机半双工STM32作为从机STM32只作为主机接收STM32只作为从机接收STM32只作为主机发送STM32只作为从机发送SPI工作方式CPOL:时钟极性选择,为0时SPI总线空闲为低电平,为1时SPI总线空闲为高电平CPHA:时钟相位选择,为1时在SC
2021-01-21 18:29:12
2458
原创 CubeMX,HAL库使用定时器和定时器中断
CubeMX,HAL库使用定时和定时器中断CubeMX配置MDK代码CubeMX配置配置为1ms计算公式:ARR: 自动重装载寄存器( AutoReload Register )(16位数据)PSC:预分频器(16位数据)TIM_CLK: ADC时钟频率(注意单位HZ 1MHZ = 1*10^6 HZ)MDK代码重定向定时器中断服务返回函数:void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ if(htim-&
2021-01-21 17:15:46
1951
原创 CubeMX,HAL库使用串口发送和中断接收
CubeMX,HAL库使用串口发送和中断接收一、CubeMX界面配置二、MDK代码不得不说HAL库和标准库相比确实简单多了。。。一、CubeMX界面配置选择完 异步通讯模式 后,其余默认即可。打开串口中断二、MDK代码在/* Private define */出定义一个接收中断缓冲区/* Private define ------------------------------------------------------------*//* USER CODE BEGIN PD *
2021-01-21 16:51:26
7110
1
原创 在HAL库中的使用printf()函数和sprintf()函数
在HAL库中的使用printf()函数和sprintf()函数1.printf();2.sprintf():运行环境为:HAL库。1.printf();如果想要在串口中使用printf函数,就需要将这个函数重定向。#ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf set to 'Yes') calls __io_putchar() *
2021-01-21 15:50:12
5780
4
原创 CubeMX_ADC学习笔记——ADC(DMA模式)的使用
CubeMX_ADC学习笔记——ADC的使用一、在CubeMX上创建项目工程1、创建工程2、搜索芯片型号3、双击选择芯片型号(STM32G071RBTX)4、进入界面,选择串口SWD调试方式5、选择外部陶瓷晶振6、GPIO配置7、ADC配置注 需要关注的有:8、定时器配置注 需要关注的有:9、串口配置(默认配置即可,最后记得在NVIC里使能串口中断)在MDK中修改CubeMX上创建的项目工程:效果展示一、在CubeMX上创建项目工程1、创建工程2、搜索芯片型号3、双击选择芯片型号(STM32G0
2020-10-31 23:24:51
5814
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人