- 博客(38)
- 收藏
- 关注
原创 数组名什么时候表示地址,什么时候表示整个数组空间
2. 利用sizeof求数组空间大小。例如:sizeof(array);3. 在使用取地址符&,求整个数组地址。例如:int array[5];除了以上表示整个数组的情况,其他所有情况都是表示首元素地址。以下情况表示整个数组。
2025-01-09 20:13:02
208
原创 按键的短按、长按和连续的划分
在实际生活中,我们使用到的按键在短按、长按和按键松开时都会触发不同的功能。按键短按后松开和长按后松开的应用比短按和长按的应用较少,我了解的按键短按后松开和长按后松开的应用是在点动控制中。(长按持续)对应的操作(例如让显示的数字一直加一或一直减一),直到松开(这时候就可以添加一个按键长按后松开的对应操作,不过这是可选的)。假设0ms~750ms为短按的判定时间范围,750ms~900ms为持续的判定时间范围。如果还不松开,每隔150ms便检测一次当前按键的状态,如果仍为松开,就触发一次按键。
2024-05-11 14:06:00
1550
原创 通过单总线实现单片机之间的数据传输
这里要用稍微复杂一些的信号,例如使用600us的高电平+200us的低电平表示逻辑1,用200us的高电平+600us的低电平来表示逻辑0。这样组合起来,可以轻易的分辨出当前接收的是0还是1,也可以避免当多个相同的0或1连续发送/接收时,对于接收方来说无法分辨这其中有几个0和1的情况。一个简单的格式头可以根据引脚空闲状态的低电平来设置,假设引脚的空闲状态为高电平,那么可以使用连续的低电平来作为格式头。的20%左右(时间不用很严谨,因为不同的单片机内部的时钟不同,可以允许一定范围内的误差)。
2024-05-11 13:35:53
1063
原创 [已废弃]RF-315MHz和RF-433MHz通用解码程序
由于在网上逛了一圈没有发现有用的、可以移植的RF315/RF433解码函数,我就自己用逻辑分析仪看RF-315MHz解码模块和RF-433MHz解码模块的数字输出,试着写出了它的解码函数。最后在实际的使用上,它可以对解码模块输出的每一帧信号进行解码,并且可以抵抗RF-433模块空闲时,引脚输出的无规律的脉冲的干扰(实际上这是RF-433模块一直在检测有无信号传入,并实时输出)。
2024-05-11 11:25:10
1722
1
原创 进程和线程的区别(以及什么时候使用它们)
每个进程都有自己独立的虚拟地址空间,包括代码、数据、堆和栈等,并且拥有独立的进程控制块(PCB)。不同的进程间,资源相互独立,一个进程不可以直接访问其他进程的内存空间。线程是进程内部的一个执行单元或子任务,线程共享进程的同一地址空间、全局变量、文件描述符等资源。每个线程拥有独立的程序计数器(PC)、栈和局部变量(类似函数),但不拥有自己的、独立的地址空间。另外,同一进程内的线程之间,若线程发生了错误,可能会影响其他线程,甚至是整个进程。,一个进程的崩溃不会直接影响另一个进程(除非使用了进程间通信)。
2024-04-16 20:30:11
412
原创 FreeRTOS基本介绍
RTOS,Real Time Operating System,实时操作系统,是指具有。FreeRTOS提供了信号量、二值信号量、互斥锁、消息队列等同步机制,以实现。FreeRTOS中,任务的四种状态:运行、挂起、阻塞、就绪。它(RTOS)的首要任务是调动所有资源完成实时控制任务的工作(调度等算法(合作式的调度算法目前已经停止维护)。FreeRTOS是一款。、能支持实时控制系统工作的操作系统。FreeRTOS支持。),其次才是提高工作效率。
2024-04-13 10:28:17
292
原创 内存分布
内存分布一般指的是虚拟内存分布。每个进程都有自己的虚拟内存空间,在32位系统中,每个进程对应的虚拟内存空间为4GB(实际上是用多少再分配多少,不会一次性占用4GB)。
2024-04-02 20:32:48
567
原创 程序的耦合和内聚
即模块内部各个部分的紧密程度越高越好,模块与模块间的关系越稀疏越好。功能类似的程序都在一个模块内,有利于查找修改等操作。这样当一个模块出现错误时,不会影响到其他模块。,表示一个模块内部各个部分的紧密程度。,表示两个或多个模块之间的关系。
2024-04-02 17:17:20
376
原创 [C语言]volatile关键字的含义和应用场景
在C语言中,volatile直译为“易变的”,当它修饰变量后,编译器能够知道不要对该变量进行优化,让CPU每次直接从内存中读取该变量的值(而不是被优化后,让CPU在寄存器中生成该变量的拷贝,直接从寄存器读取变量的值)。
2024-03-27 18:34:28
357
原创 嵌入式的定义
就是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于对于体积、可靠性、功耗、性能等方面有严格要求的。嵌入式的英文翻译为Embedded,直译是嵌入之中的,指的就是嵌入式系统。关键点:应用、计算机技术、可裁剪、专用的、计算机系统。,要求嵌入式开发人员对嵌入式知识体系有清晰的认知。
2024-03-27 18:16:48
838
原创 使用RTOS与编写裸机应用程序,它们所需的堆栈大小取决于什么?
-FreeRTOS官网->支持->常见问题->内存使用情况、启动时间以及上下文切换时间。
2024-03-14 13:43:46
156
原创 FreeRTOS中,二进制信号量和互斥锁的区别
能够暂时地将互斥量持有者的优先级提升至所有等待此互斥量的任务所具有的最高优先级。持有互斥量的低优先级的任务"继承"了等待互斥量的任务的优先级。机制,但二进制信号量没有。因此,二进制信号量是实现同步的更好选择,而互斥锁是实现简单互斥的更好选择。-- FreeRTOS官网->内核->开发者文档->FreeRTOS互斥锁。补充:二进制信号量,也称为二值信号量,即只具有0和1两种状态的信号量。--FreeRTOS实时内核使用指南->互斥量(及二值信号量)互斥量,也称互斥锁。
2024-03-14 10:04:11
502
原创 [C语言]数组名什么时候表示地址,什么时候表示整个数组空间
如:int array[5];如:sizeof(array);除了以上表示整个数组的情况,其他所有情况都是表示首元素地址。3. 在使用取地址符&,以下情况表示首元素地址。
2024-01-19 08:57:31
498
原创 PLC实验5-机械手动作的模拟实验(基于STEP 7-MicroWIN SMART软件)
这时再打开SQ2,表示机械手到了上限位,那么YV5会被点亮,表示机械手到了上限位后,开始向左移动,直到SQ4被打开,YV5才熄灭,HL被点亮,表示机械手回到了原位,这样机械手的一轮操作便结束了。再打开SQ2,表示机械手到了上限位,此时YV3指示灯熄灭,之后断开SQ4,表示机械手离开的左限位,同时,YV2保持点亮,YV4指示灯会被点亮,表示机械手正在夹着工件向右移动。之后再断开SQ1,表示机械手离开了下限位,这时YV3指示灯点亮,表示机械手正在上升,同时YV2保持点亮的状态,此时机械手是边加紧工件边上升。
2023-12-07 15:36:49
7461
原创 DSP实验4-FIR和IIR算法的实现——基于TMS320VC5509
观察时域波形时,要注意设置”Start Address”起始地址和”DSP Data Type”DSP数据类型这两项,否则后续观察到的波形可能会有误。同样,要注意设置”Start Address”起始地址和”DSP Data Type”DSP数据类型这两项,否则后续观察到的波形可能会有误。关闭FIR的工程文件,打开IIR的工程文件,在实验提供的光盘目录”DSP\VC5509\DSP5509_examples\IIR.pjt”。在图中,除了基波和较明显的高次谐波,还能看到它们之间有许多微小的杂波。
2023-12-04 20:58:47
1264
原创 PLC实验4-水塔水位模拟实验(基于STEP 7-MicroWIN SMART软件)
当水池水位低于水池低水位界(S4 为 ON 表示),阀 Y 打开进水(Y 为 ON)定时器开始定时,4 秒后,如果 S4 还不为 OFF,那么阀 Y 指示灯闪烁,表示阀 Y 没有进水,出现故障,S3 为 ON后,阀 Y 关闭(Y 为 OFF)。最终,基本实现所有功能,需要注意的是,当S3由开启变为关闭时,Y对应的灯又会亮起(不过这样可以理解为 水池从满--> 变为水池未满,于是Y对应的电机又可以继续给水池抽水),由于当时实验课程已近尾声,不能再加以调试和改进,只能呈现该版本的顺序功能图。
2023-11-29 19:47:20
15004
1
原创 STM32智能语音学习笔记day06(主要为代码,无新知识点)
代码中,最外部的while循环用来控制显示字符串中的一个字符,当指针str超出字符串后,while循环跳出,函数返回。while循环中,还做了判断,判断当前要显示的字符是否超出了屏幕的x轴,如果超出,则换行显示。接着判断要显示的字符是否超出了屏幕的y轴,如果超出,需要自己想解决方法,例如:滚动显示,延迟再分页显示,清屏再接着显示。我采用的是清屏再继续显示字符串剩下的内容。
2023-11-21 16:21:55
490
1
原创 STM32智能语音学习笔记day05
本次使用的是1.3寸、7脚、单色、SPI通信的OLED屏幕。它有 132 * 64像素,但是在封装的时候,左右各覆盖了两列的像素,只能使用中间的128*64像素,所以使用的时候,跟0.96寸OLED一样,要注意先找到每一行的第三个像素,再填入数据。
2023-11-17 20:23:28
110
原创 STM32智能语音学习笔记day04
它使用IIC通信,能够测量温度和湿度。虽然看到它的丝印层上写有SHT20/21/25,其实它使用起来是一样的。
2023-11-17 11:49:13
426
原创 STM32智能语音学习笔记day03
还要将USB转TTL模块的GND与STM32所在的电路板的GND相连,才能在PC的串口调试助手上观察STM32发送的消息。因为STM32的串口发送数据时,先将数据放入串口发送数据寄存器,串口发送数据寄存器有数据后,串口发送移位寄存器会将串口发送数据寄存器的数据搬运到发送移位寄存器,再进行数据发送。SYN6288E一帧的数据最小单位由字节组成,我第一时间想到的是移位操作,但是一帧最大可以是206字节,因此定义一个数组(或者是申请一片连续的空间,需要会单片机的内存管理知识),再往里面填入数据,组成一帧的数据。
2023-11-16 15:35:19
313
原创 STM32智能语音学习笔记day02
define LED2_GPIO_CLOCK RCC_APB2Periph_GPIOC // LED灯(绿灯)对应的GPIO组的时钟#endif#define LED2_GPIO_PORT GPIOC // LED所在的GPIO组#endif#define LED2_PIN GPIO_Pin_13 // LED所在的GPIO组上的具体引脚#endif#endif#endif/*** @brief LED初始化函数*/// GPIO初始化要用到的结构体// 使能GPIOC 的时钟。
2023-11-15 15:56:45
1096
原创 STM32智能语音学习笔记day01
本次使用到的芯片型号:STM32F103C8T6ST: 意法半导体M: 微控制器32: 代表家族,32对应32位的MCU/MPUF: 代表产品类别,F为基础型103: 这三位数字代表特定功能,103为STM32基础型C: 代表引脚数,C对应了 48 或 49引脚。
2023-11-14 10:28:26
191
1
原创 PLC实验3-十字路口交通灯实验(基于STEP 7-MicroWIN SMART软件)
这次终于是基于STEP 7-MicroWIN SMART软件了,前面几次是基于v4.0 STEP 7 MicroWIN SP9软件,但是它的工程可以在SMART中打开。
2023-11-09 08:56:42
16939
2
原创 DSP实验2&实验3-点亮LED和调试——基于TMS320VC5509
添加头文件的路径:如果工程有引用的头文件,且头文件与main函数所在的.c文件不在同一路径下,需要在"Build Option编译选项"->"Linker"->"Libraries"->"Search Path (-i)"中填写头文件的路径。在项目栏对工程右键,选择"Add Files to Project...",将工程对应的路径下的"led_5509.c"、"sdram_init.c"、"util.c"和"VC5509.cmd"添加到工程中(按住ctrl键可以同时选中多个,一并添加到工程中)。
2023-11-08 21:27:01
1468
1
原创 PLC实验2-LED数码显示实验(基于STEP 7-MicroWIN SMART软件)
移位寄存器位(SHRB)指令将DATA数值移入移位寄存器。S_BIT指定移位寄存器的最低位。N指定移位寄存器的长度和移位方向(移位加=N,移位减=-N)。SHRB指令移出的每个位被放置在溢出内存位(SM1.1)中。该指令由最低位(S_BIT)和由长度(N)指定的位数定义。
2023-10-30 10:30:20
3972
1
原创 [C语言] 什么场合用枚举,什么场合用宏定义?
宏定义可以简单理解为文本替换,它在编译器预处理阶段将 要替换的文本 粘贴到宏的位置。宏定义使用于需要在多个地方使用相同的常量值的情况,例如不同的 .c文件 中(因为宏定义的作用范围是当前宏所在的 .c 文件),或者是定义一些特定的配置选项(作为宏开关)、状态码(例如用数字表示状态,结合宏替换来增加程序可读性)和字符串常量(例如文件名、文件的完整路径名)。枚举提供了一种相对于宏定义更安全、更固定的选项,使用枚举可以简化代码,并且使代码的意图更加明确,枚举的作用范围就是定义的枚举变量的作用范围。
2023-10-10 22:01:38
371
1
原创 PLC实验1.2_定时器、计数器功能的实现(基于STEP 7-MicroWIN SMART软件)
掌握定时器、计数器的正确编程方法,并学会定时器和计数器扩展方法,用编程软件对可编程控制器的运行进行监控。二、 实验说明SIMATIC 定时器可分为 接通延时定时器(TON),有记忆的接通延时定时器(TONR)和断开延时定时器(TOF)。SIMATIC 计数器可分为 递增计数器(CTU),递减计数器(CTD)和递增/递减计数器(CTUD)。在运行程序之前,首先应该根据梯形图分析各个定时器、计数器的动作状态。即, 定时器有:TON、TONR、TOF计数器有:CTU、CTD、CTUD。
2023-10-10 21:22:53
12934
1
原创 PLC实验1.1_与、或、非功能的实现(基于STEP 7-MicroWIN SMART软件)
注意:在本装置中输入公共端要求接主机模块电源的“L+”,此时输入端是低电平有效;输出公共端要求接主机模块电源的“M”,此时输出端输出的是低电平。上图中下面两排 I0.0~I1.5 为输入按键和开关,模拟开关量的输入。I0.1、I0.2、 I0.3,观察输出指示灯 Q0.1、Q0.2、Q0.3 是否符合与、或、非逻辑的正确结果。图中的接线孔通过防转座插锁紧线与 PLC 的主机相输入输出插孔相接。是 LED 指示灯,接 PLC 主机输出端,用以模拟输出负载的通与断。3. 掌握与、或、非逻辑功能的编程方法。
2023-10-10 16:06:31
1995
1
原创 通用型makefile
在当前的工程路径的终端输入:(下面的project是在makefile文件中写好的最终要生成的可执行文件的名称,可以到makefile文件中修改成自己想要的名称,例如 修改成demo,在终端make时就要输入 " make demo ")本makefile适用于大学阶段遇到的工程(也就是说大学阶段用这个makefile基本就够了)makefile在工程目录下一般起名为"makefile"或"Makefile"在含有多个.c源文件的工程中,可以通过编写makefile来进行工程管理。
2023-09-15 20:20:57
119
1
原创 立即寻址、立即数
立即寻址(Immediate addressing)是指在指令本身中包含了要操作的数据或常数的值,处理器直接使用指令中的值作为操作数进行运算,而不需要额外的内存读取操作。与直接寻址和间接寻址不同,立即寻址是另一种常见的寻址方式,它适用于需要在指令中使用常数或立即数作为操作数的场景。立即数:在立即寻址方式中直接给出的数,紧跟在操作码之后。
2023-09-12 11:12:00
470
原创 直接寻址和间接寻址
直接寻址(Direct addressing)是指在指令中明确要操作的数据的地址,处理器可以直接访问该地址并进行读取或写入操作。 间接寻址(Indirect addressing)是指在指令中给出的是一个指向要操作的数据地址,处理器首先访问该地址,再获取实际数据的地址,最后才进行相应的读/写操作。
2023-09-12 11:02:15
3144
PLC实验5-机械手动作的模拟实验-个人根据顺序功能图绘制的梯形图程序(基于STEP 7-MicroWIN SMART软件)
2023-12-07
PLC实验5-机械手动作的模拟实验-实验手册的梯形图例程(基于STEP 7-MicroWIN SMART软件)
2023-12-07
PLC实验4-水塔水位控制模拟实验-自己根据顺序功能图绘制的梯形图程序(基于STEP 7-MicroWIN SMART软件)
2023-11-29
PLC实验4-水塔水位控制模拟实验-实验手册的梯形图例程(基于STEP 7-MicroWIN SMART软件)
2023-11-29
PLC实验3-十字路口交通灯实验-自己根据顺序功能图绘制的梯形图程序(基于STEP 7-MicroWIN SMART软件)
2023-11-09
PLC实验3-十字路口交通灯实验-实验手册的梯形图例程(基于STEP 7-MicroWIN SMART软件)
2023-11-09
PLC实验2-天塔之光实验梯形图程序(基于STEP 7-MicroWIN SMART软件)(最终通过置位、复位指令实现)
2023-11-04
PLC实验2-天塔之光实验梯形图参考程序(基于STEP 7-MicroWIN SMART软件)
2023-11-04
PLC实验2-LED数码显示实验梯形图程序(基于STEP 7-MicroWIN SMART软件)
2023-10-30
PLC实验1.2-定时器、计数器和定时器扩展实验源程序(基于STEP 7-MicroWIN SMART软件)
2023-10-10
PLC实验1.1-与、或、非实验源程序(基于STEP 7-MicroWIN SMART软件)
2023-10-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人