自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 N型MOS管和P型MOP管

Multisim 仿真结果:

2021-04-28 16:32:28 2291

原创 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

原创 VS2019 MFC字体模糊

项目名称—>属性—>安全—>启用安全设置将此注释去掉即可。

2021-02-07 21:34:16 659

原创 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关注的人

提示
确定要删除当前文章?
取消 删除