自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 System-Verilog 实现DE2-115 流水灯

SystemVerilog是一种硬件描述语言(HDL),它用于设计和验证电子系统,特别是在集成电路(IC)和系统级芯片(SoC)的设计过程中。SystemVerilog是Verilog语言的一个超集,它添加了许多新的特性和增强功能,使得设计者可以更高效地进行工作。集成电路设计:SystemVerilog用于设计从简单的门电路到复杂的SoC(System on Chip)。仿真和原型设计:用于快速原型设计和仿真,以验证设计的功能和性能。形式验证:与形式验证工具结合使用,以数学方式证明设计的属性。

2024-06-16 17:20:39 556

原创 基于STM32F103超声波测距 、和HC-SR04的12路RS485与Modbus设计方案

一. 采用stm32F103和HC-SR04超声波模块, 使用标准库或HAL库+ 定时器中断,完成1或2路的超声波障碍物测距功能。1)测试数据包含噪声,程序需要进行滤波处理;将测距数值通过串口上传到上位机串口助手;2)根据障碍物距离远近,控制一个蜂鸣器(可以用LED灯代替)发出频率不同的声音(或LED不同闪烁),即输出占空比变化的PWM波形;3)在没有超声波模块硬件的场景下,先使用Keil中的仿真逻辑分析仪,观察分析对应管脚上的时序波形,判读是否符合协议规范。

2024-06-01 18:03:24 142

原创 HLS入门

①点击project->project settings->synthesis->browser->选择顶层函数。②点击project->Run C Simulation(输出01交替,表示C仿真结果正确)点击Source,右键后,选择New File,创建文件。右键Test Bench,选择New File。点右边那一列三个点选器件。

2024-05-25 17:03:45 446

原创 基于FPGA的VGA协议实现显示 条纹-文字-图片

由于 VGA 接口传输的是模拟信号,其信号容易受到干扰,因此 VGA 在高分辨率下字体容易虚,信号线长的话,图像有拖尾现象。RGB分为RGB888,RGB565和RGB332三种不同长度的颜色信号,RGB888表示红绿蓝三个信号各占8个比特,RGB565则红绿蓝分别占5,6,5个比特。根据VGA协议的定义,VGA的行同步信号HSYNC,在每一行开始时产生一个高电平脉冲,场同步信号在每一帧开始时产生一个高电平脉冲。协议包含的信号:HS行同步信号,VS场同步信号,RGB三种颜色信号一共5种信号。

2024-05-21 15:51:53 677

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

在左侧 ”Component Library” 标签栏中的查找窗口输入 On Chip 找到 ”On-Chip Memory(RAM or ROM)” 后点击 Add,修改size如图中的大小。- 将 cpu 的 clk 和 reste_n 分别与系统时钟 clk_0 的 clk 和 clk_reset 相连。- 将 nios2_qsys_0 重命名为 cpu,点击 ”Rename” 即可重新命名。- 在 ”Name” 列中将 jtag_uart_0 重命名为 jtag_uart。

2024-05-14 18:00:08 1072

原创 在ROS中完成一个机器小车的模型创建,传感器配置,仿真环境的设置,并控制机器小车进行运动。(2)

在src目录下输入以下命令:urdf文件夹中添加一个box_urdf.urdf文件,输入代码如下1.2 在 launch 文件中集成 URDF 与 Rviz在launch目录下,新建一个 box_launch.launch 文件1.3 在 Rviz 中显示模型在这个文件夹下打开终端输入命令,启动launch文件rviz 启动后,会发现并没有盒装的机器人模型,这是因为默认情况下没有添加机器人显示组件,需要手动添加,添加方式如下如果没有颜色,或者报错no TF data可以重新打开一个终端窗口

2024-05-07 11:18:30 430

原创 在ROS中完成一个机器小车的模型创建,传感器配置,仿真环境的设置,并控制机器小车进行运动。(1)

创建功能包,添加依赖。用的是Ubantu 20.04新建两个文档,jubot_base.urdf(放urdf文件夹下)display_jubot_base_urdf.launch(放launch文件夹下)config里的rviz文件是保存生成的,不用写Unified Robot Description Format,统一机器人描述格式,简称为URDF上图展示了模型的环节(link)与关节(joint)坐标关系,在基础模型之上,我们为机器人添加尺寸大小。由于每个环节的参考系都位于该环节的底部,关节也

2024-04-27 23:09:17 736

原创 ROS Kinetic通信编程:话题、服务、动作编程 opencv学习使用

接上篇,继续学习ROS通信编程基础。

2024-03-15 21:16:44 543 3

原创 Ubuntu16.04安装ROS Kinetic——实现小海龟仿真 详细过程记录

机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便、功能强大,特别适用于机器人这种多节点多任务的复杂场景。说明:ROS是一个适用于机器人编程的框架, 这个框架把原本松散的零部件耦合在了一起, 为他们提供了通信架构。

2024-02-28 15:32:38 2393 4

原创 学习WIFI模块 ESP8266-01S 遇到的问题总结

但是我没有焊线的材料,而且我发现3.3v和GND端口都连在USB-TTL上会很快就变得很烫,于是我就把有stm32c8t6插在上面的面包板用两根跳线通上电(如果不会可以往下翻有图,3.3连正极那一列,G连负极那一列),用公对母杜邦线让他们共3.3v并且共地(GND)了。ESP8266-01S需要连GND和3.3V的都用杜邦线插在通电的面包板上,在面包板左边那一列分别接在负极和正极上。上图这个接线是b站博主将两根杜邦线焊接在一起的解决办法,这样就可以共用一个3.3v了,GND同理。

2023-12-29 00:47:28 2851 13

原创 用CubeMX将FreeRTOS移植到STM32F103C8T6 详细过程记录

Free即免费的,RTOS的全称是Real time operating system,中文就是实时操作系统。注意:RTOS不是指某一个确定的系统,而是指一类操作系统。比如:uc/OS,FreeRTOS,RTX, RT-Thread等这些都是RTOS类操作系统。FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。

2023-12-25 18:34:30 1293 3

原创 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-12-25 17:12:55 827

原创 汉字点阵与OLED屏显

汉字的区位码编码规则是指将汉字分成若干个区域(block),每个区域有一个固定的大小(block size),然后在每个区域内按按照一定的顺序排列汉字(block order),最后将所有区域和汉字按按照一定的格式组合成一个完整的汉字(block format)。汉字的字形数据存存储格式是指将每个汉字转换成一个或多个点阵(glyph),然后在每个点阵上绘制出相应的线条和填充色,最后将所有点阵按按照一定的顺序排列成一个完整的图形(glyph)。都为’ 0 ‘(定义为模式0),则在时钟的前上升沿采样数据。

2023-12-21 23:20:20 993 1

原创 HDLBits Verilog基础编程练习(1)

wire 的中文可以翻译为导线,但 Verilog 中的 wire 和现实中的导线不同,wire 应该理解为一个信号,信号是有方向性的。输入端口是由模块外部的信号驱动的,而输出端口则又会驱动另一个外部信号。你也可以在其他的编辑器上完成代码的编写,然后使用上传功能,上传你的 v 文件,这样会有些繁琐,但你可以利用到编辑器的语法补全,代码片段等特性。然后封装这个1位全加器为自定义的一个子电路模块(比如名称为OneAdder),然后新建一个项目,用1位全加器串行级联方式完成一个4位全加器的设计,并进行功能测试。

2023-12-19 22:28:28 1024

原创 STM32基于I2C协议的温湿度传感器的数据采集

软件I2C的优点是可以在没有硬件I2C接口的设备上实现I2C通信。然而,由于软件I2C是通过软件模拟的,其速度可能相对较慢,并且对CPU的处理能力要求较高。需要注意的是,软件I2C和硬件I2C在使用上有一些差异,特别是在初始化、配置和操作方面。具体的方法和接口可能因不同的平台和微控制器而有所不同,因此在实际应用中需要根据具体的硬件和软件环境选择合适的I2C实现方式。"软件I2C"和"硬件I2C"都是指用于实现I2C(Inter-Integrated Circuit,双线串行总线)通信协议的不同方法。

2023-12-10 19:18:50 155 2

原创 定时器&PWM应用编程 PWM模式呼吸灯

定义:PWM是一种数字信号,通常用于控制电路。它在预定义的时间内以高电平(5V或3.3V)和低电平(0V)之间切换。我们通常将高电平称为1,低电平称为0。主要参数占空比:PWM信号高电平时间占整个周期的百分比。如果信号始终为高电平,则占空比为100%;如果始终为低电平,则占空比为0%。频率:PWM信号的频率决定了一个周期内的速度。就是一秒钟PWM有多少个周期。STM32的MDK编译器可以选择5MHZ,10MHZ,20MHZ和50MHZ。周期T=1/频率f。

2023-11-24 11:16:52 137 3

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

其中,RS-232是一种常用的串口通信标准,定义了用于串行通信的电气特性和信号传输规范。总结而言,选择USART1进行传输,并将串口设置为异步工作模式,并开启USART1的全局中断可以提供更灵活和高效的串口通信方式,同时提高系统的并发性和实时性能,简化编程过程,使代码更加优化和可维护。这样可以实现异步通信的同时,及时响应数据的到达或发送完成事件,提高系统的实时性能和效率。USB/TTL转RS-232模块是一种用于将USB接口转换为RS-232电平的设备,常用于连接计算机和串口设备之间的通信。

2023-10-28 20:58:17 228 2

原创 STM32在CubeMX使用HAL库实现按键控制流水灯亮灭

当你将GPIO模式设置为"上升和下降都可触发"时,GPIO引脚会监测其输入电平的变化,并在引脚电平从低电平(0)变为高电平(1)或从高电平(1)变为低电平(0)时触发相应的中断或事件。在GPIO引脚上选择Pull-up或Pull-down电阻的目的是为了确保在引脚未连接到外部设备或信号时,引脚的电平保持在已定义的状态(高电平或低电平),从而避免电平浮动或不确定性。由上面提供的资料,如果HSE被配置为主时钟(SYSCLK)的输入源,那么APB2总线的时钟也将来自HSE通过PLL的输出。

2023-10-27 20:04:08 3019 2

原创 STM32F103点亮流水灯 寄存器方式和标准外设库方式

又因为其为推挽模式输出,其最大速度为2MHz,所以4位寄存器的配置就是CNF5【00】MODE5【10】,【0010】换算为十进制为【2】,因此GPIOB_CRH|=0x00200000。又因为其为推挽模式输出,其最大速度为2MHz,所以4位寄存器的配置就是CNF9【00】MODE9【10】,【0010】换算为十进制为【2】,因此GPIOB_CRH|=0x00000020。STM32点亮LED的操作过程是:CPU给指令->GPIO收到指令->配置内部寄存器->配置IO口模式->控制LED亮灭。

2023-10-17 20:42:49 300

原创 Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址,进行对比分析

具体的映射关系和地址范围可以在芯片的参考手册中找到,手册会指定Flash、SRAM、寄存器和其他外设的起始地址和范围,以及访问这些地址时的读写权限和功能描述。定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数的内部就是无效的,再使用就会报错。在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件。

2023-10-16 11:19:11 97 1

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

将x2x、x2y目标文件用 ar工具生成1个 .a 静态库文件, 然后用 gcc将 main函数的目标文件与此静态库文件进行链接,生成最终的可执行程序,记录文件的大小。(或 #gcc main.c libmyhello.so -o hello 不会出错(没有 libmyhello.so 的话,会出错),但是接下来./hello 会提示出错,因为虽然连接时用的是当前目录的动态库,但是运行时,是到/usr/lib 中找库文件的,将文件 libmyhello.so 复制到目录/usr/lib 中就 OK 了)

2023-10-07 19:28:08 421 1

原创 51单片机与STM32 嵌入式C语言程序的思考

register关键字用于建议编译器将变量存储在寄存器中,以提高访问速度;volatile关键字用于指示编译器该变量的值可能在程序执行期间发生变化,以确保每次访问都从内存中读取最新的值。在嵌入式C程序中,这两个关键字常用于优化和确保对变量的正确访问。

2023-09-24 21:42:24 154 1

原创 STM32 GPIO输出实现led闪烁

GPIO_Init函数,用结构体的参数来初始化GPIO口,用法是先定义一个结构体,给它们赋值,然后再调用这个函数,这个函数就会自动把外设的各个参数配置好。这里我用的不是STLINK 用的是DAPmini 所以在keil5里面的debug里要选择CMSIS-DAP Debugger。选择的是GPIO输出中的推挽输出,推挽输出就是可以输出高低电频,直接驱动小功耗器件。这里采用的是低电频点亮的方式。

2023-09-24 21:06:30 483 4

原创 使用Protues 8.6和keil 5 mdk 仿真51单片机流水灯

因为我之前有安装过keil5 进行一些51单片机的实验,下载好keil5 mdk 过后,我先把原先keil5 安装目录下的C51文件夹复制到mdk的安装目录,又用stc-isp 添加型号和头文件到keil 中,可以看到创建工程时下拉列表中就可以选择AT89C51的型号了。这个时候创建51的工程时会提示没有对应的路径无法编译,所以我就把原先keil5 安装目录下的TOOLS.INI里面 [C51]以及后面的所有信息都复制粘贴到了keil5 mdk 安装目录中的TOOLS.INI里面作为补充信息。

2023-09-24 15:57:27 554 1

原创 在Ubuntu系统编译C语言程序,gcc与makefile的应用

直接使用gcc 的命令有限制,不过系统会提示安装gcc的命令,安装好后先复习一下gcc命令:常用gcc编译命令选项假设源程序文件名为test.c。无选项编译链接用法:#gcc test.c作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。选项 -o用法:#gcc test.c -o test作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。选项 -E。

2023-09-10 20:40:39 140 4

原创 《Web应用基础》课程结业报告

一开始对于整个网络的布局,我并没有什么头绪,所以我在b站上搜索了一些别人做的静态网页。参考了几个过后,我发现基本上都是需要一个好看的导航栏,还要有高清的图片作为展示,

2023-07-03 02:00:59 75 1

原创 Javascript&TypeScript 学习总结

JavaScript 是 Web 的编程语言。所有现代的 HTML 页面都可以使用 JavaScript。

2023-06-29 17:16:21 76 1

原创 学习CSS的总结

CSS是级联样式表(Cascading Style Sheets)的缩写。HTML 用于撰写页面的内容,而 CSS 将决定这些内容该如何在屏幕上呈现。网页的内容是由 HTML的元素构建的,这些元素如何呈现,涉及许多方面,如整个页面的布局,元素的位置、距离、颜色、大小、是否显示、是否浮动、透明度等等。

2023-06-28 23:27:20 57 1

原创 掌握的HTML知识学习总结

HTML是超文本标记语言(HyperText Markup Language)的缩写。是一种用于定义内容结构的标记语言。在浏览器中看到的任何网页背后都是一个 HTML 文档,只要在网页上点击鼠标右键->查看源代码就可看到。

2023-06-27 22:55:30 50 3

原创 Codeforces 4A 71A

【代码】Codeforces 4A 71A。

2022-10-18 22:40:21 101

空空如也

空空如也

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

TA关注的人

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