- 博客(58)
- 收藏
- 关注
原创 函数嵌套调用,cpu栈如何相应的。详解!!!(看不懂举报我)
同样的读取数据也是从RAM里面,读的是程序运行过程中,需要计算的变量数据,是程序运行产生的,存储在RAM里面,,掉电之后变量还在,但是值不确定,需要初始化,如果更改程序全局变量,上次程序遗留全局变量没有被初始化,不会保留,ram会。
2024-08-13 20:06:09
751
原创 #include “ascii_font.c“ 引入源文件,Keil5为什么没有提示重复定义错误,详解!!!
h头文件处理方式,这个文件通常用于声明函数,变量和宏定义,这个文件不会被编译器,编译而是通过 #include预处理指令,引入在.c文件中包含, 在.c文件中 #include "ascii_font.c" 编译器会将 ascii_font.c 的内容直接插入到,使用#include调用的文件中。同时,#include .h文件,在其他.c文件中,是为了告诉编译器,这个函数声明的存在,但是这里只有声明没有实现部分,在连接阶段,编译器会结合两个.c文件的内容,这样有了声明也有了实现,就能正常调用函数。
2024-08-10 13:19:31
734
原创 如何在FreeRtos工程中添加驱动调用
上篇教程图文讲解了,如何使用STM32CubleMX,进行移植FreeRtos工程,如果没有使用这个软件则需要自己去手动进行移植操作,本篇图文教程是添加驱动,同时在调用驱动中封装的库函数。在需要添加驱动的工程目录的Driver或者BSP,(反正就是代表着驱动的文件夹打开这个),创建一个新的文件夹,名字是使用到的驱动。到这里已经完成了,驱动的移植,跟标准库也没有什么区别,接下来,在FreeRtos.c引入驱动头文件,在默认任务重调用这个库函数。在RTOS操作系统的默认任务里面调用,文件中的库函数。
2024-08-09 20:34:37
297
原创 STM32CubleMX创建FreeRtos工程教程,图文教程
指 CMSIS-RTOS 的第二个版本,它在 V1 的基础上进行了改进和扩展,增强了兼容性和功能性,更适合现代嵌入式开发需求。,也就是抵达定时器,Hal库的也默认是 SysTick ,为了防止会产生冲突,这里将Hal库的时基单元选择为TIM4。这里配置一下工程,选择开发平台,这里本人使用Keil5进行开发,不同的开发软件选择不同的选向就好了。这里时基单元的选择,这里选择为TIM4,FreeRtos操作系统的时基单元默认是,也就是选择不同封装FreeRtos的版本,进行开发,建议选择V2,功能较为完善。
2024-08-08 20:59:40
659
原创 esp32使用数码管显示数字
单个数码管,内部是分为a b c d e f g 7个段,每个段有一个LED组成,当LED发光时,这个段落就亮起,不同的段落就组成了不同的数字来显示,所以只需要让LED亮起,组合就能显示数字,当为共阳极数码管,因为已经供电,只需要将连接的IO引脚设置为拉低接地,就能亮起,同理如果为共阴极只需要将IO引脚设置为高电平,就能点亮LED段落。,同时分为共阳极数码管,和共阴极数码管,这两种数码管的区别在于,公共端是正极和接地,公共端是正极,就是共阳极数码管,公共端全都接地就是共阴极数码管。#4位数码管显示数字。
2024-08-08 13:32:58
263
原创 esp32学习笔记
Arduino,这个平台软件可以用来开发Arduino的开发板,Nano,Uno,同时还有一些支持Arduino平台开发的开发板,都能在这个平台开发,同时Arduino的开发方式,适合初学者,以简单好上手,出名,同时不太建议。单片机最小系统板,整体IO引脚引出有25个,也是够用了,通常esp32支持的开发平台有很多种,同时esp32也是支持RTOS操作系统的开发板,在ESP-IDF这个开发平台上,历程里面就有使用到操作系统。这里就不演示了,连接如下,按着个教程安装就好了。欢迎指正,希望对你,有所帮助!
2024-08-07 19:29:35
522
原创 emp发生器,所用原理,实现过程
EMP发生器通过快速释放存储在电容器中的能量来产生强大的电磁脉冲。这些脉冲可以对电子设备产生严重干扰。虽然理论上可以通过一些基本电子元件来实现,但这种设备具有很强的破坏性,且在许多地方是非法的。因此,仅限于理论研究,请勿实际制造或使用。
2024-07-28 09:13:34
646
原创 STM32如何构建库函数,思路,示例
在STM32开发中,不调用库函数,直接对寄存器进行,赋值,这种写法叫做位带操作,这种写法程序的运行速度,和直接调用库函数相比,快上很多。
2024-07-28 09:02:52
233
原创 esp32wifi
使用ESP32制作WiFi需要非常谨慎,因为这种行为在大多数国家和地区是非法的,违背了网络安全和道德规范。WiFi杀手通常通过发送大量的去认证(Deauthentication)帧来断开目标设备与其接入点的连接,这种行为会严重影响他人的网络使用,属于违法行为。如果你仍然希望了解技术原理以便于合法和道德地进行网络安全研究或测试,可以参考以下步骤。但务必在自己的网络环境中或取得所有相关方的明确同意后才进行实验。
2024-07-28 08:52:55
315
原创 openmv学习笔记(24电赛笔记)
函数用来检测图片中的特征点,并且同时记录特征点,用于后续检测图片。这个函数是用来对比,图像中特征点与记录特征点,二者进行对比,按照符合标准是否符合要求,判定是否是同一张图片。
2024-07-27 19:29:20
818
1
原创 openmv学习笔记(24电赛笔记)
不仅仅是保存此时大小角度,openmv的这种模式比模版匹配灵活不少。特征点检测如果是刚开始运行程序,程序会提取最开始的图像作为目标物体特征,这个时候程序会默认匹配目标特征的多种。模版匹配这种方式多用于,流水线上特定物体的检测,这种情况可以满足。)用来识别图像中的重要部分,这些特征点可以帮助在不同的图像找到。,不需要移动,如果是移动物体,这种物体大小在摄像头中会随着。,这种就不适合使用模版匹配算法。
2024-07-26 20:15:38
520
原创 openmv 学习笔记(24电赛笔记)
模版匹配是一种计算机视觉技术,用于图像或者视频中查找特定的模版或者对象,查找模版可以是数字或者是物体,技术通过在目标图像中寻找与模版图像相似的区域来实现匹配。这种技术最早起源在 20世纪70年代 的图像处理领域。使用模版匹配通常需要提供,参考模版openmv自动进行匹配,匹配成功,就能识别。NCC 是一种有效的匹配度量方法,通过计算模板图像和目标图像区域的相关性来确定相似度。NCC 可以减轻光照变化和对比度变化的影响,使匹配结果更好。openmv使用的算法是NCC,这里有一个雷。
2024-07-26 15:54:15
1272
原创 openmv 学习笔记(24电赛笔记)
这个功能主要应用在,机器人寻找色块,无人机跟踪特定颜色,生产线上检测物体进行分类,还有人机交互等等功能应用。
2024-07-25 20:37:52
1020
原创 openmv学习笔记(24电赛笔记)
这个函数用来计算,规定区域内的平均颜色,或者最大面积颜色,需要给出起始点 x y 同时给出 h(高) 和 w(宽) 组成四个点 (x , y) ,(x+w , y+h),(x , y+h),(x+w , y)同时行成区域,这里需要注意的是,左上角的坐标一直是(0 ,0)图像的区域方向是,固定的只能是(x y)点的右下方。
2024-07-24 19:30:48
603
原创 openmv学习笔记(24电赛笔记)
openmv采用小孔摄像模式,将图像映射到感光原件上面,来传递图片,通过图片快速的刷新行成视频,在IDE中通过对感光原件的编辑可以控制视频的效果。
2024-07-24 15:13:29
1180
原创 openmv学习笔记(24电赛笔记)
openmv的代码脱离IDE运行程序,只需要在IDE中将代码烧录道flash里面,断开IDE连接,上电之后,会自动执行main.py中的程序,IDE烧录的时候,会默认将程序后缀保存为 .py文件。通过IDE烧录软件之后,保存完成之后需要将,openmv的U盘进行弹出,然后对摄像头在此进行上电,就能完成脱机运行程序,同时正确保存程序。如果·在弹出U盘的过程之后报错,代表程序烧录没有完成。
2024-07-23 19:07:48
960
原创 openmv学习笔记(24电赛备赛笔记)
openmv一种小型,可编程机器视觉摄像头,设计应用嵌入式应用和计算边缘,是图传模块,或者认为是一种,具有图像处理功能的单片机,提供多种接口(I2C SPI UART CAN ADC DAC )OpenMV 使用 MicroPython 作为编程语言。同时是一个开源的机器视觉项目,主要由 OpenMV 公司维护。它提供了硬件(OpenMV Cam 开发板)和软件(OpenMV IDE 和固件)解决方案,用户可以在此基础上进行二次开发和定制。
2024-07-22 21:21:31
1150
原创 MSP430单片机快速上手CSS开发环境(24电赛省赛)
前言:3天学完MSP430单片机,为了对应电赛,同时写下这篇笔记,用来熟悉对应开发环境,看的懂对应代码。
2024-07-22 12:50:08
1232
1
原创 STM32使用SPI向W25Q64存储信息(HAL库)
然后对已经写过数据的区域进行写擦除,这里W25Q64闪存模块以及类似的模块中,写使能(Write Enbale)是一个必要的步奏,是为了。全双工在时钟脉冲周期的每一个周期内,每当主设备同时发送一个字节的同时,会接受从设备接受一个字节数据,SPI全双工最大的特点就是。0x02擦除扇区,首地址,程序中将0x02,作为数据帧发送出去,就能完成对W25Q64的扇区擦除。,这些在数据手册里面都能找到,图放在下面,找到之后,在发送数据帧里面,加入就能完成对应的功能。拉低对应从机的片选信号,代表选中这个从机。
2024-07-19 18:36:57
466
原创 博客最细 STM32CubeProgrammer 软件使用教程 二(学不会举报我)
读flashRAM读写保护程序加密有什么用前言:编写不易,仅供学习,参考,请勿转载前言:本篇教程是 STM32CubeProgrammer 软件使用教程二,通过本篇你可以学习到,使用STM32CubeProgrammer读取 flash RAM开启读写保护程序加密的功能,在看本篇前建议先看教程一。#读flashRAM读写保护程序加密有什么用为什么要读flash RAM?
2024-07-19 18:36:36
1243
原创 博客最细 STM32CubeProgrammer 使用教程(学不会来找我)
本篇主要是介绍STM32CubeProgrammer 烧录软件的使用过程,随着ST开发生态已经完成闭环,(STM32CubleMX配置代码 STM32IDE写代码 STM32CubeProgrammer烧录代码)随着STMSTM32CubleMX 这个软件将ElipeseIDE开发环境删除,或许有一天会限制下载烧录软件,作为ST生态的一环,这个软件以后可能会用的越来越多,同时附带软件下载连接,在文章末尾,个人观点哈。
2024-07-17 17:20:01
3525
原创 为什么STM32F103c8t6最小系统板的usb只能用来供电详解
市面上所有的ST F103的最小系统板,都没有办法通过 micro usb来下载程序,不知道大家好不好奇,为什么?为什么国产的对标F1系列的最小系统都能通过USB进行下载程序。为什么就ST的F1下载程序不行?只能通过usb进行供电,或者作为通信接口。Device Firmware Upgrade 缩写 DFU 翻译:设备固件升级 ,这种协议是一种用在嵌入式系统中,通过USB接口进行固件升级的标准协议。
2024-07-17 17:19:32
708
原创 OLED多级菜单基础知识
到这里经介绍完了,实时的基础,接下来将其进行混合应用,如果有的小伙伴还是不清楚可以,找更加基础的教程,多练练,接下来开始进行混合应用率练习。而不是数据地址,当完成声明之后,可以通过函数指针,调用函数,固定声明格式如下所示。这里数组里面,存放的是结构体定义的组合数据类型。为已存在的数据类型(基本数据类型,结构体,联合体,枚举)(结构体类型),在内存中连续存储,且通过下标访问。,进行混着,只混合基本数据类型,较为简单。,不仅仅只有基本数据类型,同时可以,函数指针,指针的一种,指向的是。,这个关键字的作用在于,
2024-07-15 16:49:23
509
原创 STM32 不同时钟频率有什么不同的影响
单片机本质上,是一个复杂的时序电路,而时序电路的行为依赖于,时钟信号来控制状态的变化,和数据的流动,如果没有时钟信号,单片机内部的时序逻辑将无法工作,整个系统将失去还有控制。可能有的小伙伴单纯的认为,不同的时钟频率就是时钟频率不同,时钟频率意味着不同的执行速度,意味着相同单片机,不同的性能,同时部分外设要求限制相关频率,下面讲。最终的代码都会转化为指令,去由CPU去执行,这些指令的执行需要时钟周期,不同时钟周期在不同频率下所用时间不同,具体时间受时钟频率,内核架构不同收到影响,#时钟频率的不同意味着什么。
2024-07-15 11:18:15
522
原创 0.96寸OLED屏幕显示动画教程
然后声明之后,每个数组对应的是那个动画的每一帧啊,刚好的10帧,也就是里面显示电量的各自也就是10格子,同时按照前面讲的理论说法,要对,这里每一幅图片,按照一定频率进行刷新显示对不对,同时这个时间间隔频率不能太长,不然就成了,ppt幻灯片了对不对。这里调用可以封装为函数,或者其他改进反之,原谅笔者写的烂,这里刷新时间是按照 1s 进行刷新的,如果要更为流程那么需要的图片也就更多,同时刷新频率也就越高,这个就是帧率。综上所述,需要先对,动画中的每一帧图片使用,软件进行取模,然后,写入程序进行刷新显示。
2024-07-14 15:18:13
591
原创 嵌入式应用开发之模块驱动移植教程
这个文件通常用来放置模块的驱动,这里有每个模块对应的 源文件(.c) 头文件(.h),这些文件里面放置着模块的驱动函数,当然有的工程模版不这样命名,命名虽然不一样,大家要有这么的一个概念。每个模块的驱动,在hardware文件夹下都是,小的文件夹,每个文件夹的路径都要被引入,如果没有引入驱动文件目录就会进行报错,如下图所示。,同系列或者对标系列的芯片可以移植,不同系列芯片,有着不同的寄存器,不同的配置,不能进行相互移植驱动。这种模块移植,是有缺陷的,讲个比方,就像连连看,找相同,#移植外设驱动的过程。
2024-07-13 16:42:57
525
原创 嵌入式应用开发之代码整洁之道二
大量使用宏定义,方便移植程序,提升程序运行速度,如果使用宏定义写的程序,移植的时候,一般只需要改头文件里面的宏定义就能,进行正常运行工作,同样一段程序,不写宏定义,那么可能每个参数都要从头改到尾,会造成时间上的浪费。除此之外,宏定义是预处理指令,这种指令的执行,实在程序执行之前,在程序编译之前,大量使用这种指令,会提升程序运行速度,这种指令在程序执行前就已经执行过了,能提升程序整体运行速度。,进行调用,重复的代码,重复写不封装,浪费代码行,浪费阅读时间,封装之后,一行代码,能解决的事情,
2024-07-12 10:51:13
543
原创 嵌入式应用开发之代码整洁之道
前言:本系列教程旨在如何将自己的代码写的整洁,同时也希望小伙伴们懂如何把代码写脏,以备不时之需,同时本系列参考 正点原子 , C++代码整洁之道,编写可读的代码艺术。,有的小伙伴上面缩进4跟下面8个,随便缩进,反正不会报错,看着确实难受,如果使用文本方式打开,驱动文件,可以发现是跟在KEIL5中阅读的缩进大小是不一样的。注释在程序中,并不是越多越好的,大量的注释无关紧要的地方,会造成浪费时间,去阅读这些注释,占用屏幕空间,这些注释相对来说是没有价值的。使用TAB进行缩进的时候,这个键的值可能是。
2024-07-10 21:37:00
789
原创 一篇教会你 位置式PID 在写码中的应用。
由于Ki算法,是对误差的累加算法,需要对其进行限制幅,这里需要两个参数 Ki_Max Ki*integral 因为是位置式PID 需要对Ki进行限幅度 ,如果是增量式PID 需要对输出限幅,同时Ki也就是积分是累加的,是用。,前面已经声明过了,到了这里,已经讲解了,位置式PID,需要用到的参数,如果像上面一个一个声明,太麻烦了,直接定义结构体,更好一点。由于 D算法(Kd),是两次误差的值,如果差值过大,Kd也就越大对Kp的抑制也就越大,需要有三个参数,上次误差。欢迎指正,希望对你,有所帮助!
2024-07-10 13:44:08
1225
原创 嵌入式开发SPI基本介绍与应用
前言:本篇笔记参考嘉立创的开发文档,连接放在最后。#SPI通信协议#SPI基础概念Serial Peripheral Interface 缩写SPI翻译:串行外设接口 同步串行通信协议(数据线上的数据帧是bit为单位传输,一条传输数据线),的一种 高速 全双工(A B 双方可以同时发送信息 像vx聊天软件) 同步的通信总线,支持一主多从 (一个主设备多个从设备但这种通信方式通常用在短距离通信。在通信的过程中,主设备是通信的发起方和控制方,从设备只能接受。
2024-07-07 20:09:22
793
原创 STMF4 硬件IIC(天空星开发板)
下面只介绍不同的部分。使用宏定义,去写代码,这种函数是能够提升程序的执行速度,因为宏定义是预处理指令,在程序执行前,开始执行的,如果是将函数在次封装在调用,这种程序执行速度是比不上,宏定义。,硬件IIC效率远高于软件IIC, STMF4VET6上带有3个硬件IIC,允许与外部IIC接口进行通信,STMF4的硬件IIC使用特定的引脚复位,来进行数据和时钟信号的传输。来传输数据还有时序信号,达到IIC通信的效果目的,软件IIC通信好处是,在MCU内部没有集成硬件IIC电路的时候,可以使用软件IIC通信,
2024-07-06 18:47:57
1258
原创 opencv概念以及安装方法
图像由RGB三种颜色组成,red green blue 这三种颜色相互组合能形成不的颜色,每一个像素需要由R G B 三种颜色进行表示,M N分别代表图像的行和列,三个M*N的矩阵代表每个像素在R G B 三种颜色上的分量。图像是人类视觉的基础,是自然景物的客观反映,是人类认识世界和人类本身的重要的源泉,图像分为图和像 ,图是物体反射或投射光的分布,像是人的视觉系统所接受的图在人脑中形成的印象或者认识。到这里安装完成之后,在命令行,导入库验证一下库,是否安装成功,代码如下。
2024-07-05 19:12:43
519
原创 内存管理(RTOS)
如果程序不需要删除,堆内存对象可以使用这个文件,对堆内存进行管理,如果在一些严格的系统里面,如果不允许使用动态内存(就是不允许分配内存,使用过后回收内存),就可以使用这个函数,进行分配内存,因为这个文件不回收内存。A在创建任务之前整个Heap都是空着的,B是分配一个任务之后heap的使用情况,C是3个任务之后heap的使用情况,这个时候如果有任务结束,这些空间是不会被收回的。,如果内存的地址不连续,可以使用 heap_5.c 如果内存是分开的不连续的,在使用。
2024-07-05 14:48:13
1349
原创 STMF4学习笔记RTC(天空星)
RTC由晶振还有计数器组成,晶振产生一个固定频率的信号,计数器对这些信号进行计数,RTC本质上就是一个1S计数器,由此换算出时间,除此之外RTC是一个独立的BCD定时器/计数器,F4的RTC提供一个日历时钟,两个闹钟中断,一个可编程唤醒标志。,如果选择VDD进行供电,在掉电之后,数据不会进行保存,如果使用BAT,也就是纽扣电池进行供电,数据将备份在。中,系统复位,或者系统从待机模式唤醒时,RTC设置与时钟都保持不变。RTC可以表示时间日期,他可以跟踪年,月,日,分钟和秒的信息。RTC电源供电选择有。
2024-07-03 21:09:23
524
原创 堆与栈的概念(RTOS)
堆在RTOS的概念本文所指的堆与栈并不是数据结构中,的堆与栈,实时操作系统(RTOS)中,堆(Heap)是一个动态内存分配区域,用于存储程序运行过程中大小未知或可变的数据结构。堆内存不像栈内存那样由操作系统自动管理,它是由程序员申请和释放的。用户可以根据需要请求一段连续的内存空间,并在程序执行过程中随着数据的变化而增长或减小。堆与栈经常混着用,而栈是RTOS的基础,所为堆就是一块内存,我们可以管理内存,从内存中使用一部分,用完之后在把他释放回去。#相关代码表示代码里定义了。
2024-07-03 11:43:17
1135
原创 嵌入式应用开发屏幕教程8080并口通信
如果是写,RD为高电平,WR负责控制,如果是读,WR为高电平,RD负责控制,无论是读写命令还是读写数据CS片选信号都要被拉低,结束之后拉高表示过程结束,数据被写在D[0:15]里面(8位找的图是16位),在WR的上升沿将数据读出,或者在RD的上升沿将数据读出。这个图是写时序的图,这里RD全程为高禁止写,在WR的上升边沿,将D[0,7]里面的数据写入驱动芯片,CS为低,选中,RS为高写数据,最后数据传输完成 ,CS拉高,结束数据传输。DC:命令数据线(0读写命令/1读写数据)欢迎指正,希望对你有所帮助!
2024-06-28 20:54:44
1035
原创 嵌入式应用开发屏幕教程
这种屏幕常用于,电子表,家电,主要特征是,在屏幕时间的组成像数码管一样,数字由一段一段的组成,这种屏幕价格比较便宜,工作在高温低温,的耐受性很好,寿命较长,比较省电,一般用于,工业,家电,儿童电子表。点阵屏幕由每个点组成,每个特定位置的点,通过发光或者不发光,就组成了字,或者任意需要的字符,也是使用屏幕驱动芯片,驱动芯片一般是在屏幕后面 ,去驱动屏幕。,偏光板的作用是用来发射偏振光,通过电场可以控制液晶从而改变入光的偏振,如果没有上电,背光在液晶的作用下,没有办法显示,上电之后控制液晶,
2024-06-28 15:44:03
997
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人