自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在DE2-115开发板上使用SystemVerilog编写流水灯程序

在DE2-115开发板上使用SystemVerilog编写流水灯程序。

2024-06-03 20:38:53 189

原创 基于stm32和HC_SR04超声波模块的测距和报警

这次作业实现了HC_SR04模块的超声波测距,通过stm32不仅使得编程能力有更多提升,也对HC_SR04模块有了更加深刻的认识。

2024-05-28 12:39:12 923

原创 HLS入门实现一个led灯的闪烁

HLS(High-Level Synthesis),HLS是高层次综合的简称,至于层次的理解。一般分为系统级、算法级、RTL级、门级,开关级。一般认为RTL级及以下设计是可用的,“层次”即从什么角度去描述想要实现的功能。譬如,a xor b采用门级描述就是a,b是一个异或门的输入;而采用高一点层次描述就是a+b。显然,越低层次的描述越困难HLS就是从高层次描述,之后综合成可用的网表文件的技术。这里的“高”指采用C、C++等编写程序,而不是传统的HDL语言。

2024-05-24 21:40:42 848

原创 基于DE2-115平台的VGA显示

图像显示设备在日常生活中随处可见,例如家庭电视机、计算机显示屏幕等,这些设备之所以能够显示我们需要的数据图像信息,归功于视频传输接口。常见的视频传输接口有三种:VGA 接口、 DVI 接口和 HDMI 接口,目前的显示设备都配有这三种视频传输接口。三类视频接口的发展历程为 VGA → DVI → HDMI。其中 VGA 接口出现最早,只能传输模拟图像信号;随后出现的 DVI 接口又分为三类: DVI-A 、 DVI-D 、 DVI-I ,分别可传输纯模拟图像信号、纯数字图像信号和兼容模拟、数字图像信号。

2024-05-24 19:43:59 979

原创 基于Nios-II实现流水灯和串口通信

从图 1.1 控制 LED 闪烁的系统框图可知,其它逻辑与 Nios II 系统一样可存在于 FPGA中。然后点击 Start 开始下载,下载成过后关闭,回到 Eclipse 主界面(如果无法进行start,可能是未安装驱动或驱动未更新),然后在菜单栏中选择 Run →Run Configurations。然后连接时钟,复位线和s1(s1需要连接cpu的data_master和instrucation_master两条线),右键单击项目名称,在弹出的菜单中选择 Build Project,如下图所示。

2024-05-12 20:20:38 918

原创 orbslam2+kitti数据序列图像

下载链接:https://gitcode.com/raulmur/ORB_SLAM2/overview?下载Eigen3.3.7:https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz。链接:https://www.cvlibs.net/datasets/kitti/eval_odometry.php。在控制台输入:export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}

2024-04-27 20:18:30 390

原创 ROS中机器小车的仿真实验

(1)在URDF建模和xacro建模中我们已经完成了关于如何创建一个小车模型,这里以在xacro建模篇中构建的小车模型为例,修改其对应的碰撞属性和惯性矩阵,将其导入gazebo中显示。在xacro文件夹中新建“my_camera.urdf.xacro”"“my_car_camera.urdf.xacro”“my_laser.urdf.xacro”文件。在urdf文件夹下新建一个xacro文件夹,在文件夹中新建my_base.urdf.xacro文件。(3)建立两个文件,launch文件,urdf文件。

2024-04-26 20:09:37 364

原创 ROS基础——话题、服务、动作编程

而最基本ROS工程包中会包括CmakeLists.txt和Package.xml这两个文件,其中Package.xml中主要包含本项目信息和各种依赖(depends),而CmakeLists.txt中包含了如何编译和安装代码的信息。2、使用catkin_create_pkg命令去创建一个叫comm(通信)的包,这个包依靠std_msgs、roscpp、rospy。5、开始测试,在最开始的终端开始回车,切换到我们最后建立的终端,也开始回车!2、在开始运行我们的程序之前,在原来的终端、把程序注册。

2024-03-15 19:09:13 1995 1

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

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。更多详细内容可以参考fr=aladdin。

2024-03-03 17:22:56 446

原创 简单周期CPU的Verliog代码的实现、通过在proteus上进行C51仿真LED流水灯实验

中央处理器,即CPU,作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。在CPU内部,电平从低到高变化的瞬间称为时钟上升沿,两个相邻时钟上升沿之间的时间间隔称为一个时钟周期。单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。

2024-01-05 20:12:24 1953 1

原创 FPGA编程实现一位全加器

再改用 Verilog编程(3种模式:门电路、数据流和行为级描述),完成这个4位全加器设计,并观察Verilog代码编译综合后生成的 RTL电路,与之前电路图设计的4位全加器电路进行对比。如果仿真波形的逻辑功能正确,就连接的实验室 DE2-115开发板硬件上,完成引脚绑定,烧录,再拨动按钮开关,进行加法器 正确性的验证。先选择Node Finder这个选项,然后再点击List,之后点击’>>',然后点击两次OK,就可以回到上面的那个界面,并且,此时信号也添加成功了。3、半加器的输出表达式。

2023-12-21 14:45:02 604

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

OSRdyList[0]为OS_RDY_LIST类型,从上面OS_RDY_LIST结构体可以看到成员变量:HeadPtr和TailPtr分别指向OS_TCB,我们知道OS_TCB是可以用来构造链表的,因此同一个优先级下的所有任务是通过链表来管理的,HeadPtr和TailPtr分别指向这个链表的头和尾,NbrEntries用来记录此优先级下的任务数量,图5.5.2表示了优先级4现在有3个任务时候的就绪任务列表。任务控制块是用来记录与任务相关的信息的数据结构,每个任务都要有自己的任务控制块。

2023-11-24 18:43:15 138 1

原创 基于STM32的0.96寸OLED显示屏显示数据

SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。SPI 是一个环形总线结构,由 ss(cs)、sck、sdi、sdo 构成,时序主要是在 sck 的控制下,两个双向移位寄存器进行数据交换。其实,整个显示屏也是一个点阵,显示过程就是将显示屏整个点阵中的每个小点进行改变,从而实现显示。硬件:PC机,STM32开发板(本过程采用的是野火stm32mini开发板),0.96寸OLED显示屏,下载器(本过程采用ST_Link)上升沿发送、下降沿接收、高位先发送。

2023-11-19 17:31:26 483 1

原创 I2C总线通信协议及实操stm32通过I2C实现温湿度(AHT20)采集

通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。使用: 需要在控制产生 I2C 的起始信号时,控制作为SCL 线的 GPIO 引脚输出高电平,然后控制作为 SDA 线的 GPIO 引脚在此期间完成由高电平至低电平的切换,最后再控制SCL线切换为低电平,这样就输出了一个标准的 I2C 起始信号。硬件IIC:一块硬件电路,硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,硬件(固件)I2C是直接调用内部寄存器进行配置。

2023-11-18 17:02:21 243 1

原创 STM32实现定时器和LED呼吸灯

定时器在嵌入式系统中是个基础服务,比如RTOS就要依赖SysTick提供时钟节拍去实现线程延时、线程时间片轮询调度等,定时器可以分软件定时器和硬件定时器,我们还经常听到SysTick,RTC实时时钟等,定时器在生活中的应用也很常见,比如闹钟。软件定时器的功能与硬件定时器类似,但是实现方式不同,软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受数目限制的定时器服务,一般使用SysTick作为基础时钟。2.4配置GPIO,配置LED(PA5,设置为GPIO_OutPut)

2023-11-06 21:05:06 507

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

DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。我们知道,数据传输,首先需要的是数据的源地址、数据传输位置的目标地址、传递数据多少的数据传输量、进行多少次传输的传输模式。DMA所需要的核心参数,便是这四个。DMA用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。DMA的作用就是实现数据的直接传输,而去掉了传统数据传输需要CPU寄存器参与的环节。

2023-10-27 21:22:48 99 1

原创 STM32cubeMX+HAL库实现串口通信&中断串口通信

project manager设置。用keil打开刚才建的项目,烧录,并用串口助手运行。

2023-10-27 19:19:54 311 1

原创 stm32中断实现LED灯亮灭

在处理器中,中断是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中止当前程序的执行,转而去为处理紧急的事件,待处理完毕后再返回被打断的程序处继续往下执行。中断都在挂起等待的状态,先按抢占优先级排序,抢占优先级高的先行,抢占优先级相同,就按子优先级排序,子优先级高的先行,子优先级还相同,那就按IRQ编号小的先行。程序的执行无非就是寻找地址,中断也是程序的一部分,而它的地址却是由内核来确定的,而且是不允许修改的。⑥恢复被保护的状态,执行中断返回指令,回到被中断的程序。

2023-10-25 18:07:55 446 1

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

(3)会跳出来一个选择型号界面 勾选上你要安装的HAL库, 点击“Install Now” 直到安装成功。(2)在part name里选择自己的芯片,点击信息栏中的具体芯片信息选中,点击start project。(1)回到STMCubeMX的主界面,创建新项目。(2)将下面代码放入主函数中(替代里面的内容)(1)打开安装好的STMCubeMX。1.安装STM32CubeMX。4.keil仿真调试。

2023-10-21 15:05:26 151 1

原创 基于寄存器与基于固件库的stm32 LED流水灯

找到魔法棒,然后选择output,点击creat hex file,如果要选择指定的文件存放地址,也可以在上方的slect folder for objects上选择指定文件夹存放。可根据程序得知,3个led灯分别于A0,B0,C15相接。然后还需要3.3接正极,此外,led灯的长的一段连正极,短的一端连负极。创建一个项目文件,将stm32的启动文件放入工程中去,并添加一个main函数。打开串口助手,选择自己存放的hex路劲。3.在main函数中添加代码。

2023-10-16 20:15:15 104 1

原创 gcc编译工具集与其中各软件的用途与ELF文件格式分析

1.BinutilsBinutils是一组二进制程序处理工具,包括:addr2line、ar、objcopy、objdump、as、ld、ldd、readelf、 size 等。这 一组工具 是开发和 调试不可 缺少的工具 ,分别简 介如下:(1) addr2line:用 来将程序 地址转 换成其所 对应的程 序源文 件及所对 应的代 码行,也可以得到所对应的函数。该工具将帮助调试器在调试的过程中定位对应的源代码位置。(2) as:主要用于汇编。(3) ld:主要用于链接。

2023-10-06 14:17:29 215 1

原创 Ubuntu、stm32下的程序内存分配问题

可以发现,Ubuntu在栈区和堆区的地址值都是从上到下增长的。将上面的代码放入nano文本编辑器中,进行编译。

2023-10-06 13:32:03 76 1

原创 gcc生成静态库.a和动态库.so

一、用gcc生成静态库和动态库函数库分为静态库和动态库。静态库在程序编译时会被连接到目标代码中,程序运行是则不需要静态库的存在。动态库在程序编译时不会被连接到目标代码中,而是程序运行时载入的。两者区别:前者是编译连接的,后者是程序运行载入的。(一)hello实例使用库1.准备过程(1). 创建一个目录(2). hello代码hello.hhello.cmain.c(3). gcc编译得到.o文件。

2023-10-05 19:53:27 131 1

原创 ARM开发:使用MDK编译stm32简单程序(闪烁LED)

这篇文章的重点是学会如何安装MDK软件、建立工程、编写代码、编译程序、仿真调试。

2023-09-24 21:56:32 198 1

原创 寄存器映射原理详解,GPIO端口的初始化设置步骤,register和volatile 这两个变量修饰符的作用

在51单片机中一个时钟把所有的都包了,而stm32的时钟是有分工的,并且每类时钟的频率不一样,因为没必要所有的时钟都是最高频率,只要够用就行,好比一个门出来水流大小,如果只要洗脸,但是出来的是和洪水一样涌出来的水,那就没必要了,消耗能源也多,所以不同的时钟也会有频率差别,或者在配置的时候可以配置时钟分频。我们不妨将寄存器和内存储器都抽象成一个大的数组,其中的每个元素都有一个字节(8位)大小,CPU寻址的时候就是以该元素为最小单位完成的。引脚悬空的情况下,读取该端口的电平是不确定的。可做KEY按键识别。

2023-09-24 19:33:12 629 1

原创 Proteus使用教程并仿真51程序——LED流水灯

1、绘制原理图。

2023-09-24 18:57:38 6060

原创 Ubuntu系统里使用gcc和Makefile编译c程序

请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。2) 请在windows系统下用你熟悉的编译工具编译主程序main1.c 并运行。在Ubuntu系统下用C语言编写一个简单的输出 hello word的程序,并编译有、运行之;

2023-09-14 19:28:17 144 1

空空如也

空空如也

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

TA关注的人

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