自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 基于System-Verilog的FPGA设计与仿真

虽然Verilog HDL 在早期的数位电路设计中得到了广泛应用,但随着技术的发展和电路复杂度的增加,Verilog HDL 在某些方面已经显得有些不足以满足设计者和验证工程师的需求。SystemVerilog主要用于复杂的SoC(系统芯片)设计和验证,尤其是在需要高级验证技术和系统级建模的场景中。它引入了面向对象编程(OOP)的概念,如类、继承、封装和多态性,这使得设计和验证更加模块化和可重用。支持更高级的并发构造,如fork和join,以及disable语句,用于更精细的控制并发执行和同步。

2024-06-15 18:54:06 1297

原创 红外超声波雷达测距

接收端:TL074是一种四运算放大器,具有高电压双极晶体管(简称 三极管)的输入放大特性,它可以作为信号放大器,对接收到的超声波信号进行放大,以增强其幅度和信噪比(信噪比 是指一个电子设备中信号和噪声的比值,其计算单位是dB 也就是分贝数来表示,通俗地讲放大器的输出信号的功率于输出的噪声的比值,一般来讲,信噪比越大,输出的信号里面混着的噪声就越小,信号也就越好,声音的质量也就越好,因此一般信噪比用来衡量一个音频器件的好坏,比如:蓝牙耳机,音响)。由此通过发射信号到收到的回响信号时间可以计算得到距离。

2024-06-14 19:07:25 1216

原创 HLS入门

因此,在使用HLS进行硬件设计时,需要充分理解HLS的特性和限制,并结合具体的应用场景和需求来选择合适的设计方法和工具。HLS(High-Level Synthesis)是一种硬件描述语言编程技术,它可以将高级语言(如C/C++)转换为硬件描述语言(如VHDL或Verilog),以便将其用于FPGA(Field-Programmable Gate Array)或ASIC(Application-Specific Integrated Circuit)的设计中。因此,它对硬件层面的知识和经验要求较高。

2024-06-14 17:09:40 1094

原创 基于FPGA的VGA协议实现

有些不带VGA接口而带有DVI(Digital Visual Interface数字视频接口)接口的显卡,也可以通过一个简单的转接头将DVI接口转成VGA接口,通常没有VGA接口的显卡会附赠这样的转接头。大多数计算机与外部显示设备之间都是通过模拟VGA接口连接,计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。VGA接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。

2024-06-14 16:11:09 724

原创 Nios实验入门实践——用Nios软件编程方式完成LED流水灯显示并使用串口输出“Hello Nios-II”字符到笔记本电脑

1、实验目的(1)学习 Quartus Prime 、Platform Designer、Nios II SBT 的基本操作;(2)初步了解 SOPC 的开发流程,基本掌握 Nios II 软核的定制方法;(3)掌握 Nios II 软件的开发流程,软件的基本调式方法。2、实验内容(1)在DE2-115开发板上用Nios软件编程方式完成LED流水灯显示(2)用Nios软件编程通过DE2-115开发板串口输出“Hello Nios-II”字符到笔记本电脑串口助手3、实验原理。

2024-05-14 23:08:29 855

原创 ROS机器人小车建模仿真与SLAM

在xacro文件夹中新建“my_camera.urdf.xacro”"“my_car_camera.urdf.xacro”“my_laser.urdf.xacro”文件。加载robot_description时使用command属性,属性值就是调用 xacro 功能包的 xacro 程序直接解析 xacro 文件。1、在urdf文件夹中新建一个xacro文件夹,并在xacro文件夹中新建my_base.urdf.xacro文件。orbslam2+kitti数据序列图像。2、 核心:编写 urdf 文件。

2024-05-07 09:57:29 692

原创 Ubuntu系统安装opencv

开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库。OpenCV的应用领域包括:2D和3D功能工具包、运动估计、面部识别系统、手势识别、人机交互、移动机器人、动作理解、物体识别、分割和识别、实体影像立体视觉:来自两个摄像机的深度感知、运动跟踪、增强现实等。

2024-03-16 15:35:35 8125 3

原创 ROS通信模式编程

source /home/lyy/catkin_ws/devel/setup.bash#该环境变量设置只对当前终端有效,lyy是用户名。存放工程开发相关文件的文件夹,其中主要包括src,build,devel,install文件夹。catkin_init_workspace#初始化,使其成为ROS的工作空间。二、在创建的功能包learn_action的src目录下创建CPP文件。#将上面命令放置到~/.bashrc文件中,让其对所有终端都有效。四、在CmakeLists.txt文件中添加依赖。

2024-03-15 23:02:22 600

原创 Ubuntu18.04安装ROS——实现小海龟仿真

ROS(机器人操作系统,Robot Operating System),是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。安装ROS系统需要注意安装对应ubuntu版本的型号,需要进行下载源换源,有可能会遇到安装问题,可以上网进行查找,大多数都可以解决。

2024-03-03 19:56:26 955 1

原创 FPGA编程入门

然后通过4个1位全加器的串行级联,完成一个4位全加器的 原理图设计;再改用 Verilog编程(3种模式:门电路、数据流和行为级描述),完成这个4位全加器设计,并观察Verilog代码编译综合后生成的 RTL电路,与之前电路图设计的4位全加器电路进行对比。进入4位全加器的设计环节,我先是通过4个1位全加器的串行级联,在原理图中完成了设计。然后封装这个1位全加器为自定义的一个子电路模块(比如名称为OneAdder),然后新建一个项目,用1位全加器串行级联方式完成一个4位全加器的设计,并进行功能测试。

2023-12-22 18:36:05 1118

原创 STM32F103C8移植RT_Thread

(2)打开 CubeMX,从菜单栏 help 进入 Manage embedded software packages 界面,点击 From Url 按钮,进入 User Defined Packs Manager 界面,其次点击 new,填入上述网址,然后点击 check。2、找到Middlewares/RT-Thread/RTOS/kernel文件夹下的board.c文件,修改串口USART2为USART1。2、选择 RealThread, 然后根3.1.5版本的,然后点击 OK 按钮。

2023-11-27 21:42:13 1041

原创 STM32F103C8T6基于HAL库移植uC/OS-III

MDK-ARM\uCOS-III\Ports\ARM-Cortex-M3\Generic\RealView路径下选中以下文件,Add添加。MDK-ARM\uC-LIB\Ports\ARM-Cortex-M3\RealView路径下选中下图最后一个文件,Add添加。MDK-ARM\uC-CPU\ARM-Cortex-M3\RealView路径下选中以下文件,Add添加。MDK-ARM\uCOS-III\Source路径下选中以下全部 .c .h 文件,Add添加。

2023-11-27 21:09:10 980

原创 使用串口传输文件

本次实验较为简单,需要注意的是接线波特率设置等。

2023-11-26 20:15:42 752 1

原创 STM32F103OLED屏显

通过本次实验,能较为熟练地使用AHT20模块和OLED模块,实现了显示温湿度数据和学号姓名的滚动显示,OLED实验较为有趣,今后使用其他模块实验,可用于显示调试。

2023-11-23 18:49:52 316

原创 点阵汉字的字模读取与显示

了解了汉字点阵的编码规则后,我们就可以在图片上显示任何我们想要的文字。撰写代码时要注意添加文字所在的位置,防止运行后图片上未显示出所加字符。在logo.txt文件当中输入你想要显示的文字的时候需要用ANSI编码进行编写,不然中文会出现乱码。

2023-11-20 16:52:40 367 1

原创 STM32F103通过IIC协议实现温湿度(AHT20)的采集

​ IIC通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。

2023-11-14 20:44:18 435

原创 定时器&PWM应用编程

分频系数那里虽然写的是71,但系统处理的时候会自动加上1,所以实际进行的是72分频。n1,然后更改输入捕获的信号级性(上升沿或下降沿),当再次检测到ICx信号上相应的边沿后,计数器(CNT)的当前值再次被锁存到捕获/比较寄存器(TIMx_CCRx)中假设为。选中定时器2,配置定时器2的时钟源为内部时钟,分频系数为71,向上计数模式,计数周期为5000,使能自动重载模式。在选定的时钟源(可以是内部的也可以是外部的)和预分频器TIMX_PSC的驱动下,根据设置的计数模式(向上、向下、中央对齐)自动。

2023-11-05 22:11:10 139

原创 基于中断/DMA的串口通信

(3)在main.c中重写USART1_IRQHandler函数,同时记得删掉stm32f1xx_it.c中的同名函数。2、添加一个USART1_SR的地址,然后将模式改为bit,最后点击close。2、选择STM32F103C8T6芯片。(4)main函数外重写中断处理函数。(2)发送“ start ”继续输出。(1)发送“ stop ”停止输出。2、使用串口调试助手观看效果。(2)main函数代码设置。3、main.c总代码。5、设置USART1。1、打开keil项目。

2023-11-02 12:27:45 105 1

原创 STM32中断LED

(7)点击project manager,配置好自己的路径和项目名,然后IDE那项改为MDK-ARM,点击generate code创建keil项目。(1)打开.uvprojx文件(或者在上一步选择open project)(6)进入 code generate界面,选择生成初始化.c/.h文件。(5)设置引脚,A1,B3, B5, B9(B9 设置为EXTI)(1)回到STMCubeMX的主界面,创建新项目。(2)在main.c中main函数外创建函数。(2)在part name里选择自己的芯片。

2023-10-30 20:21:23 52 1

原创 stm32cubeMX使用HAL库点亮LED流水灯

(7)点击project manager,配置好自己的路径和项目名,然后IDE那项改为MDK-ARM,点击generate code创建keil项目。引脚为低电平的灯亮,高电平的灯不亮,高低电平转换周期(LED闪烁周期)为1s左右。(1)打开.uvprojx文件(或者在上一步选择open project)(2)选择需要安装的型号,点击“Install Now” 直到安装成功。(1)回到STMCubeMX的主界面,创建新项目。(3)线路连接,灯插在前面选择的引脚处。(5)设置引脚,A7,B9,C13。

2023-10-30 16:24:18 109 1

原创 HAL库中断方式进行串口通信

2、添加一个USART1_SR的地址,然后将模式改为bit,最后点击close。2、选择STM32F103C8T6芯片。(3)main函数外重写中断处理函数。2、使用串口调试助手观看效果。(1)发送“ # ”停止输出。(2)发送“ * ”继续输出。(2)main函数代码设置。5、设置USART1。1、打开keil项目。

2023-10-29 20:25:36 80 1

原创 基于标准外设库的STM32流水灯

STM32F10X_HD,USE_STDPERIPH_DRIVER 中的逗号是英文逗号。输入GPIOA_ODR.0,回车。Display Type选择 Bit。②、复制相关库文件到对应文件夹。①、在User文件夹中创建。点击魔法棒旁边的三个正方体。右下角红框添加头文件路径。完成后点击OK退出。

2023-10-17 22:57:55 55

原创 STM32基于寄存器的LED流水灯实验

这次试验,我学会了使用keil编译文件并烧录到STM32上进行实验,完成流水灯实验,虽然过程中遇到许多问题,但在网络的帮助下成功解决,让我受益良多。

2023-10-16 22:43:48 96 1

原创 Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址

1、全局常量:在程序中定义的全局范围内不可改变的常量,它们的值在整个程序执行过程中都保持不变。2、全局变量:在程序中定义的全局范围内可改变的变量,它们可以在程序的任何位置被访问和修改。3、局部变量:在函数或代码块中定义的变量,它们的作用域仅限于函数或代码块内部,在外部无法访问。4、静态变量:在函数内或代码块内用 static 关键字修饰的变量,它们的生存期会延长到整个程序的执行过程中,但作用域仍然限于所在的函数或代码块内部。

2023-10-06 22:36:57 145 1

原创 gcc编译工具集中各软件的用途及ELF文件介绍

(一)准备工作编辑一个简单的c语言程序hello.c\n");return 0;(二)编译过程1、预处理将.c文件处理生成.i文件hello.i代码片段2、编译将.i文件编译生成.s 文件hello.s代码片段3、汇编将目标 hello.s 文件汇编生成目标文件 hello.ohello.o目标文件为ELF格式的可重定向文件。4、链接可生成可执行程序使用size查看大小使用ldd查看可执行文件链接的其他动态库。

2023-10-05 23:35:43 180

原创 用gcc生成静态库和动态库和静态库.a与.so库文件的生成与使用

在两个案例的练习下,能初步使用静态库和动态库,了解了两者之间的差别,实验过程较为顺利,通过网络能较快的解决其中的问题,但想要完全熟练使用还需要更多的练习和努力。

2023-10-05 19:53:36 858

原创 register和volatile 关键字的作用

volatile用于告诉编译器,这个变量可能会被难以预见的外部因素改变,因此每次使用它时,都需要从内存中读取它的实际值,而不是使用保存在寄存器中的拷贝。register用于提示编译器,这个变量可能会频繁地使用,将其储存在寄存器中可以更快地访问。在C语言中,register和volatile是两种特殊的变量修饰符,它们在嵌入式编程中经常被使用,而在一般的PC编程中可能不常见。在这个例子中,input被声明为volatile,意味着它可能会被外部硬件随时改变,因此每次使用它时,都需要从内存中读取它的实际值。

2023-09-25 21:24:41 121 1

原创 STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置的一般步骤

1、寄存器的基本含义寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。2、地址映射和寄存器映射原理。

2023-09-25 21:10:09 279 1

原创 一个stm32的简单程序

本文的重点在于工程的创立和设置的调整,许多东西需要自己上网查询,还需不断学习进步。

2023-09-24 21:37:49 348 1

原创 熟悉Proteus ,完成C51程序仿真

通过本章学习,我更加深入了解到Proteus的使用,了解了程序仿真的整个过程,绘制一个简单的原理图,使用keil运行一个程序。实验中也让我看到许多自己的问题,需要不断查找资料完善自我。

2023-09-24 20:07:47 273 1

原创 Ubuntu系统使用gcc和makefile编译文件

从本次实验中,我们可以看出Windows系统的Vscode具有简单易用的优势,使得编译过程更加便捷。而在Ubuntu系统中,虽然gcc和makefile的组合也能够完成编译任务,但相对于Windows系统来说,步骤更加繁琐。在实际工作中,我们可以根据项目的需求来选择合适的编译环境。如果项目较小且需要快速上手,那么Windows系统下的Vscode可能是个不错的选择;如果项目较大且需要更多的自定义配置,那么Ubuntu系统下的gcc和makefile可能更加适合。

2023-09-14 21:45:19 264 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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