- 博客(27)
- 收藏
- 关注
原创 Linux系统远程操作和程序编译
当执行该命令时:系统会查找OpenCV的.pc配置文件并从配置文件中读取头文件路径、库文件路径和依赖关系,再输出完整的编译和链接选项。修改Ubuntu网络配置文件:sudo nano /etc/network/interfaces。配置VNCserver:sudo nano /home/lyy/.vnc/xstartup。// 父进程写,子进程读。指令:sudo nano /etc/resolv.conf。–libs获取链接时需要的标志,包括:库文件路径。在终端中连接树莓派指令:ftp +树莓派ip。
2025-06-19 22:31:52
923
原创 嵌入式编译工具链熟悉与游戏移植
6.make 按照Makefile中 install对应的项目规则把相关库文件复制到公共系统目录中。3.确认文件,cmake将读取CMakeLists.txt内容生成一个 Makefile文件。7.进入examples目录,选择一个程序运行:程序出现窗口,表示代码正常运行。9.进入游戏目录,进行环境准备,执行常规的环境依赖配置。参看一下 mininim 具体依赖哪些动态支持库。10.make正式编译 mininim 源代码。2.安装mininim 软件所依赖的库。8.下载mininim仓库源码。
2025-06-19 22:23:01
314
原创 树莓派实验
PWM(Pulse Width Modulation,脉宽调制) 是一种通过调节信号脉冲宽度来模拟不同幅度模拟信号的技术。它通过周期性地改变信号的占空比(即在一个信号周期内,高电平持续时间的比例)来控制输出强度,从而实现对设备如LED亮度、电机转速等的精确控制。PWM的核心在于其输出频率和占空比的可调节性,使得数字设备能够模拟模拟信号的效果。这一技术在嵌入式系统中应用广泛,适用于多种控制场景。
2025-06-02 21:24:08
1205
原创 守护进程编程
守护进程是计算机中的一种特殊后台服务进程,通常在系统启动时自动运行,独立于用户终端,长期驻留在系统中执行特定任务。守护进程是操作系统服务可靠性的关键,确保核心功能持续可用而不受用户操作干扰。在后台运行,不依赖用户交互,无控制终端,默默执行任务。其生命周期长,从系统启动到关闭持续运行,除非手动终止或遇到错误。6.关闭所有打开的文件描述符,重定向标准输入/输出/错误。1.fork创建子进程,并退出父进程。建立 SSH反向代理:(树莓派)检查ssh:(树莓派、阿里云)编写一个C程序:(简单加法)
2025-04-20 23:03:01
1102
原创 Linux系统调用编程
虚拟内存:进程看到的是虚拟地址空间(32位系统通常为4GB),由操作系统和硬件动态映射到物理内存或磁盘(Swap空间)。分页:内存被划分为固定大小的页(通常4KB),通过页表(Page Table)实现虚拟地址到物理地址的转换。定义:进程是程序的一次执行实例,拥有独立的地址空间、资源(如内存、文件描述符等)和系统状态。独立性:每个进程有独立的虚拟地址空间,互不干扰(通过进程间通信(IPC)才能交互)。定义:线程是进程内的执行单元,共享同一进程的地址空间和资源,但拥有独立的栈和寄存器。
2025-04-04 23:09:30
768
原创 STM32技能综合巩固
这里的启动文件和分散加载文件有点不好理解,当说“由启动文件决定了 0x00000000和0x00000004地址存储什么内容”时,指的是启动文件定义了这两 个关键地址处的内容:一个是堆栈指针的初始值,另一个是指向复位处理程序的 指针。因此,内核 离开复位状态后,读取内部FLASH的0x08000000地址空间存储的内容,赋值 给栈指针MSP,作为栈顶地址,再读取内部FLASH的0x08000004地址空间存 储的内容,赋值给程序指针PC,作为将要执行的第一条指令所在的地址。
2025-04-01 21:36:36
1375
原创 温湿度采集与OLED显示
软件I2C,又称为模拟I2C,是通过微控制器的通用输入输出(GPIO)引脚,由软件程序模拟I2C协议的时序来实现的。软件I2C的优势在于灵活性高,可以在没有硬件I2C模块的微控制器上实现I2C通信,或者在硬件I2C模块被占用时作为一种替代方案。使用硬件I2C时,开发者通常只需要通过硬件寄存器配置I2C模块的参数(如时钟速度、设备地址等),然后通过硬件I2C模块提供的接口进行数据的读写操作。//CRC校验后,读取AHT20的温度和湿度数据。
2024-06-29 22:12:29
866
原创 ucOS-III多任务程序
任务间通信与同步:为了在任务之间进行有效的通信,uC/OS提供了多种机制,如信号量、互斥量和消息队列。在uC/OS中,每个任务都被赋予一个优先级,系统根据任务的优先级来决定哪个任务应该运行。它使用了一种基于优先级的抢占式调度策略,高优先级的任务可以打断低优先级的任务。uC/OS的核心是一个抢占式多任务内核,它支持任务的优先级调度。中断管理:中断管理是嵌入式系统的一个重要方面,uC/OS通过快速中断处理机制来响应中断,并且提供了能够在中断服务例程(ISR)中使用的系统调用。中的以下图中的8个文件添加到。
2024-06-14 19:44:23
1625
原创 基于I2C协议的OLED显示(利用U82G库)
0.96寸OLED屏通常具有较低的分辨率,因此显示的汉字可能需要使用较小的点阵尺寸,如12x12或16x16。在显示汉字时,OLED屏幕的优势在于其高对比度和宽视角,使得汉字即使在不同的观看角度下也能清晰显示。SDA上的数据在SCL为高电平时必须是稳定的,只有在SCL为低电平时,SDA上的数据才允许改变。个汉字的点阵图案被映射到一个二维阵列中,阵列中的每个点对应屏幕上的一个像素。从的串行通信协议,用于连接低速的外围设备。当SCL为高电平时,SDA由高电平向低电平跳变,表示一个数据传输的开始。
2024-06-11 22:56:11
898
原创 定时器与PWM的LED控制
占空比(Duty Cycle)是指高电平持续时间与整个周期时间的比例。占空比的范围通常是0%到100%,当占空比为0%时,输出电压为0;PWM(Pulse Width Modulation,脉冲宽度调制)是一种常用的信号控制技术,通过调制脉冲的宽。STM32F103拥有多种定时器,包括高级定时器(TIM1和TIM8)、通用定时器(TIM2、TIM3、PWM信号是一种周期固定、宽度可变的脉冲信号。TIM4、TIM5)和基本定时器(TIM6和TIM7)。脉冲宽度调制(PWM):控制电机速度或LED亮度。
2024-05-31 15:41:43
613
原创 HAL库LED点灯
RCC:SYS:GPIO_OUTPUT:Clock Configuration:Project Manager:在while(1)中输入:HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // 灯1亮HAL_Delay(1000); // 延时1sHAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 灯1灭Keil编译:GPIO:SYS:EXIT:Keil编译:
2024-05-24 21:02:42
237
1
原创 中断编程入门
/ 等待发送数据寄存器为空。if (USART1->SR & USART_SR_RXNE) { // 检查接收数据寄存器非空。
2024-05-19 22:28:46
1334
1
原创 stm32串口通信入门
TTL到RS-232转换:由于TTL电平和RS-232电平不兼容,CH340芯片内部进一步将这些TTL电平的串行数据信号转换为RS-232电平的信号,这样就可以与遵循RS-232标准的设备进行通信。CH340芯片将接收到的RS-232电平信号转换为TTL电平,然后再将TTL电平信号转换为USB协议格式的数据,通过USB接口发送到计算机。RS-232电平:在RS-232标准中,逻辑“1”用-3到-15伏特之间的电压表示,而逻辑“0”用+3到+15伏特之间的电压表示。// 使能GPIOC时钟。
2024-05-12 22:21:16
676
1
原创 stm32F103的LED亮灭
寄存器,例如引脚PA2与PB8的高低电平数据(1或0)肯定放在不同的寄存器里,那么怎么区分不同的寄存器呢?通过地址,不同的寄存器有不同的地址,就像老张行李寄存处在101号店铺,老王行李寄存处在258号店铺。LED控制函数:A_LED_LIGHT、B_LED_LIGHT和C_LED_LIGHT分别用于设置三个LED的状态。器码都是0或1,只是特别的规定下,数据寄存器里面存放的0和1表示数据,指令寄存器里存放的表示指令。存放数据的寄存器是最好理解的,如果你需要读取一个数据,直接到这个寄存器所在的地方来。
2024-05-06 19:35:49
824
原创 单总线温度采集
统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。--------------初始化函数----------------------------------写一字节函数--------------------------------读取温度函数--------------------------------读取一字节函数----------------//写"1" 在15微秒内拉低。//写"0" 拉低60微秒。
2024-04-25 15:40:21
756
1
原创 单片机定时器与串口通信
乙机接收到的8位二进制数据有可能出错,需进行奇偶校验,其方法是将乙机的RB8和PSW的奇偶校验位P进行比较,如果相同,接收数据;方波音频信号周期1ms,因此T1的定时中断时间为0.5 ms,进入中断服务程序后,对P1.7求。用2位数码管显示计时时间,最小计时单位为“百毫秒”,计时范围0.1~9.9s。T0定时时间定为50ms,采用中断方式进行溢出次数累计,满20次,则秒计数变量second加1;第3次按一下计时功能键,秒表清0。第2次按一下计时功能键时,停止计时,将计时的时间值送到数码管。
2024-04-21 18:18:53
1531
1
原创 汇编程序与周期性任务设计
假设时钟频率为 1 MHz,那么 LED 灯大约每隔 5 x 1/1,000,000 = 5/1,000,000 秒变化一次状态,约等于 5微秒。假设 Delay 函数的循环次数为 N,每次循环包含两条指令,即 “MOV R6, #250” 和 “DJNZ R6, D2”,所以 Delay 函数的总时钟周期数为 1us + 4us = 5us。对于指令 “MOV R6, #250”,其指令周期数为1,时钟周期数为1,所以对应的时钟周期总数为 1 x 1 = 1us。
2024-04-01 20:32:54
365
原创 基于SDCC和Edsim51的代码仿真
打开Windows命令提示符,输入“d:”等进入相应硬盘,再输入“cd ”及上述.c文件地址进入对应的代码路径。for (j = 0;for (j = 0;// 将P1端口置为低电平,LED点亮。P1 = 0xFF;// 将P1端口置为高电平,LED熄灭。P1 = 0xFF;delay(500);// 延时500毫秒。delay(500);// 延时500毫秒。
2024-03-17 17:31:05
715
1
原创 51单片机架构与汇编指令
S1: (RL为累加器循环左移,故设置P2的状态,需要先将P2的给累加器A。MOV P2,#0FEH (P2端口与LED灯相连,设置灯的初始状态为1111 1110,即D0亮。MOV P1, # 0xFF:将0xFF这个数据存入P1端口,以点亮所有LED灯。MOV R0,#50H (给R0,R1赋初值,用于延时函数的循环次数。P1:51单片机上的一个I/O端口,用于控制LED灯。0xFF:十六进制数,表示所有的LED灯都点亮。
2024-03-10 18:31:48
731
2
原创 Verilog编程基础练习
2)Verilog中,reg寄存器类型用于always模块内被赋值的信号,wire导线类型用于always模块内未被赋值的信号。3-8译码器模块的输出信号out是在always块中被赋值的,所以应定义为reg类型,不能改成wire类型。不能将output reg [7:0] out改为output [7:0] out,因为wire类型的信号可以有多个驱动器,而reg类型的信号只能有一个驱动器。1)两者的电路总体思路一致,差异在于Verilog的电路图将中间接线部分合为一个整体。仿真测试结果与真值表一致。
2023-12-17 19:00:17
488
1
原创 组合逻辑电路的分析与设计
7段数码显示管是由7个单独LED二极管组合而成,常用来显示0-9这些数字,它可以用4个输入项A-B-C-D和7个输出项a-g的逻辑关系真值表来表示。用”与非“门设计一个表决电路:当四个输入端ABCD中有三个或四个为1时,输入端才为”1“。
2023-11-16 12:53:53
799
1
原创 编码器解码器电路设计
编码器(Encoder)的逻辑功能是将2的n次方个输入信号的高/低电平信号编成一个对应的n位二进制代码。译码器(Decoder)的作用正好与编码器相反,是将一个N位二进制代码(N个输入信号)转译为2的n次方个输出的高/低电平信号(或者另一种代码)。假如有四个病房,四个病人的病情情况不同,分别对应优先级:最高、高、中、低。优先级低的会被优先级高得中断,可以用LED灯的亮灭或者LED数码管情况来代表病人的求助与否。
2023-11-15 20:47:01
1012
原创 基本逻辑门电路分析
选用74LS20四输入端两与非门一个,74LS20芯片14引脚接入+5V,74LS20芯片7引脚接入地0V,并按图1-1接线,按表1-1改变A、B、C、D的状态,观察输出端Y的状态,并记录数据。选用74LS00二输入端四与非门两个,74LS00芯片14引脚接入+5V,74LS00。数字电路实验箱,74LS00二输入端四与非门,74LS20四输入端两与非门。芯片7引脚接入地0V,并按图1-2接线,改变A、B、C、D的状态,观察输。出端Y的状态,并记录数据在表1-2。
2023-10-24 22:50:40
152
原创 二进制数原码-反码和补码的数字电路
2) 负数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。1位全加器接受三个输入:两个待相加的位(A和B),以及来自前一位的进位(C_in)。2)进位(C_out)输出有两部分组成,一部分是A和B的与(AND)运算结果,另一部分是(A和B的)异或运算结果与C_in的AND运算结果,然后再通过或(OR)运算得出。它可以将两个输入位(A和B)相加,并产生两个输出:和(S)和进位(C)。2)进位(C)输出是输入位的与(AND)运算结果,然后再与(NOT)运算结果。
2023-10-22 20:41:52
228
1
原创 程序编译环境设置
用于在文件或标准输入中查找匹配的文本的命令,支持多种正则表达式和选项。:用于实时监控系统进程和资源占用情况的命令,支持交互式操作和多种选项。:用于显示文件或目录磁盘空间占用情况的命令,支持多种选项和格式。:用于显示文件系统磁盘空间占用情况的命令,支持多种选项和格式。:用于显示当前目录下文件和目录列表的命令,支持多种选项和格式。:用于在 Ubuntu 中安装、升级、删除软件包的命令。:用于显示系统进程的命令,支持多种选项和格式。:用于创建新目录的命令,支持多种选项。:用于切换当前工作目录的命令。
2023-10-22 17:24:50
112
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅