- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 ESP32-IDF-Python版本适配
错误信息显示 Python 包 idf-component-manager 的版本不符合要求。具体来说,它需要版本 ~=1.2(即 >= 1.2.0 且 < 2.0.0),但当前安装的版本是 2.1.2,超出了允许的范围,所以解决方案就是你需要将 idf-component-manager 降级到符合要求的版本。(解释:该命令会安装一个大于等于 1.2.0 但小于 2.0.0 的版本)即可,后面的python.exe是可执行程序了。
2025-01-14 12:38:55
580
原创 第四章:烧入软件的使用
第四章:烧入软件的使用51单片机烧入软件STC-ISP的使用1. 不需要安装,是一个可执行程序,直接打开软件2. 详细介绍芯片型号选择,选择板载芯片SCT89C52RC开发板串口选择烧入的.hex固件先检测一下是否可以读取到芯片烧入固件即可3. 常用功能,可以帮助我们进行开发结尾第三章软件安装到此结束,如需技术支持,可以私信我或者留下您的联系方式,我是代码之外,期待与你的下次相遇
2024-11-02 20:41:38
156
原创 RTOS共享资源保护
UCOS共享资源保护在UCOSIII中对于共享资源访问的方式有以下几种:关中断的方式禁止任务调度信号量的使用互斥信号量的使用通过下面的表格的分析,我们可以知道他们的使用场景和一些细微的差别资源共享的方法使用场景关中断、开中断方式前提条件:当访问共享资源的速度很快(读取或者写入极少变量时:如喂狗操作、FLASH写数据、需要和中断服务程序共享变量或者数据结构等等)以至于访问共享资源所花的时间小于UCOSIII的中断关闭时间。影响:由于使用该方式会影响中断延迟,所以
2021-11-23 18:23:18
451
原创 从零认识结构体-二
结构体的对齐访问一:为什么我们要学习结构体的对齐方式呢?话不多说我们先上代码#include <stdio.h>struct MyStruct{ char s1; int s2;};int main (void){ MyStruct MyStruct; MyStruct.s1 = 't'; MyStruct.s2 = 12; char* p = (char*)(&MyStruct); printf("*p = %c\n", *p); int*
2021-11-11 17:03:32
392
原创 通信协议:SPI
STM32模拟SPI通信协议SPI的简介:SPI是串行外设接口的缩写,是一种高速的,全双工、同步的串行通信总线;SPI也可以实现一主多从,而实现一主多从是通过CS片选来实现,于IIC有些不同;SPI需要至少4根线,分别是MISO、MOSI、SCLK和CS。与IIC通信相比,SPI使用的引脚多几根,但是SPI的通信远远高与IIC,所以SPI的应用也是非常的广阔的。SPI通信图:...
2021-11-07 14:40:35
271
原创 通信协议:IIC
STM32模拟IIC协议一:IIC通信接口的历史IIC(Inter-Integrated Circuit)其实总的一个名称就是IICBUS,所以在中文上叫做集成电路总线,它是一种串行通信总线,可以实现一主多从。由飞利浦公司在1980年为了让主板、嵌入式系统用以了连接周围设备发展而来。二:IIC通信接口的特点 1.双线制:一根SCL(时钟同步线);一根SDA(数据传输线)2.半双工通信:从上图我们可以看到,IIC通信只有一根数据线SDA,所以IIC通信是半双工的3.同步通信:有同步时钟线S
2021-11-06 19:46:45
1517
原创 从零开始认识结构体—1
初识结构体结构体概述:1.结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。2.结构体和其他类型基础数据类型一样,例如int类型,char类型只不过结构体可以做成你想要的数据类型。以方便日后的使用。3.在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言无法操作数据库,所以在项目中通过对结构体内部变量的操作将大量的数据存储在内存中,以完成对数据的存储和操作。从结构体到数组的进步之处:1.结构体可以认为是从数组发展
2021-11-06 16:15:50
314
原创 内存从哪里来2
程序中内存从哪里来-堆内存堆内存详解:1. 操作系统对内存管理器:堆管理器是操作系统的一个模块,堆管理器内存分配灵活,按需分配。2. 大块内存:堆内存内存管理器者总量很大的操作系统内存块,各个进程可以按需申请使用,使用完之后手动释放。3. 脏内存:堆内存也是反复使用的,而且使用这用完释放前不会清楚,因此堆内存也是脏的。4. 临时性:堆内存只在malloc和free之间属于我这个进程,而且是可以访问的。在malloc之前和free之后都不能再访问,否则会有不可预料的后果。在程序中堆内存是使用:#
2021-11-05 13:10:42
95
原创 内存从哪里来一
带你从零开始认识内存一:程序执行需要内存的支持 对于程序来说,内存就是程序的立足之地(程序是被放在内存中运行的);程序的运行时必须要有内存来存储一些临时变量二:内存的管理是由操作系统来完成的(1)内存本身在物理上是一个硬件器件,有硬件系统来提供(2)内存是由操作系统来统一管理。为了内存管理方便又合理,所以操作系统提供了很多的机制(栈、堆、数据区)来让我们程序员来使用内存。这些机制彼此不同,各自有各自的特点,我们可以通过自己的实际情况来选择某种方式来获取内存。三种内存来源:栈内存(stack
2021-11-04 14:05:31
523
原创 深入了解字符串和字符数组
深入了解字符串和字符数组一:深入认识sizeof和strlen(1).sizeof是C语言的一个关键字,也是C语言的一个运算符,很多人可能会误认为sizeof是个函数,但实际上不是,sizeof运算符的作用是用来返回一个类型的或者一个变量所占用的内存字节数。为什么我们需要sizeof呢?,主要的一个原因是int、double等等类型的大小与各个平台的内存有关;二是C语言除了ADT(抽象数据类型:一个数据元素集合以及在这些数据上的操作)之外还有UDT,这些是自定义类型的数据是无法一眼就可以看出来的。=
2021-11-03 15:52:22
684
原创 双链表的知识分析
双两表的引入首先,我们应该分析有单链表之后为什么又出现双链表?看名字可以知道双链表就是在单链表的基础上延伸出来的,也决定了它的出现是为了完善单链表的某些缺点。通过上一篇我们对单链表的分析(加一个超链接),我们可以清楚的知道,单链表是对数组的一个扩展,解决了数组的大小比较死板的不容易扩展的问题,但同时也出现了新的问题。在单链表中,单链表的各个节点之间只由一个指针单向链接,所以单链表只能经由指针单向移动,也就是说一旦指针移动经过某个节点就无法回来,如果在操作这个节点,除非从头指针开始再遍历一次,其他的
2021-08-25 12:26:08
284
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人