- 博客(35)
- 收藏
- 关注
原创 基于Chisel的FPGA流水灯设计
Chisel是一种基于Scala的硬件构造语言,它允许设计者使用高级的编程概念来构建硬件。Chisel的设计哲学是“不要重复自己”(DRY),这意味着它鼓励设计者通过参数化和模块化来重用代码。
2024-06-01 14:48:08
1216
原创 STM32F103C8T6 & HC-SR04超声波模块——超声波障碍物测距(HAl库)
HC-SR04是一款常用的超声波测距模块,它能够通过发送超声波脉冲并接收其回波来测量物体与传感器之间的距离。这种模块广泛应用于机器人、智能小车、智能家居等领域,可以用于测量墙壁距离、障碍物距离、物品距离。本次实现了STM32F103C8T6微控制器和HC-SR04超声波测距模块的结合应用,并通过LED闪烁频率表现出来。通过CubeMX的图形化配置和Keil5的开发环境,项目简化了开发流程,提高了开发效率。此外,项目还提供了对超声波测距原理的深入理解,以及如何通过软件控制硬件来实现特定功能的方法。
2024-05-25 13:26:10
1443
原创 HLS入门(Xilinx Vivado 2019.2)——点亮LED仿真
HLS是一种设计方法,使用HSL可以更快地开发电子系统,特别是那些需要特定硬件加速的复杂系统。通过使用HLS,你可以用高级语言(如C或C++)编写代码,然后自动转换成硬件描述语言(HDL),从而加速开发过程。此次学习了如何使用Xilinx Vivado HLS 2019.2版本来实现一个简单的LED点亮仿真项目。这个过程包括了创建项目、添加源文件、编写C/C++代码、配置HLS工具、进行仿真与综合,以及最终的验证和实现步骤。
2024-05-22 12:53:57
1197
原创 FPGA的VGA实现
不同分辨率的VGA显示时序是类似的,仅存在参数上的差异,如图 18.1.5所示。与之类似,场同步信号在在一个场扫描周期中完成一帧图像的显示,不同的是行扫描周期的基本单位是像素点时钟,即完成一个像素点显示所需要的时间;逐行扫描是扫描从屏幕左上角一点开始,从左像右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;VGA 显示器显示图像,并不是直接让图像在显示器上显示出来,而是采用扫描的方式,VGA用的扫描的方式,一般是逐行扫描。
2024-05-18 12:10:33
1110
原创 基于Nios-II的流水灯
从”System Contents”标签栏,双击建立好的 cpu 进入 Nios II Processor 的配置界面,配置 Reset Vector 和 Exception Vector 为””onchip_ram.s1”,点击 Finish。在”IRQ”标签栏下点选”Avalon_jtag_slave”和 IRQ 的连接点就会为”jtag_uart”核添加一个值为 0 的中断号。在”Size”栏中的”Total memory size”窗口中输入 40960(即片上内存的大小为 40KB),
2024-05-08 22:43:59
757
原创 ROS仿真小车与SLAM
加载robot_description时使用command属性,属性值就是调用 xacro 功能包的 xacro 程序直接解析 xacro 文件,然后启动launch文件。在xacro文件夹中建my_camera.urdf.xacro my_car_camera.urdf.xacro my_laser.urdf.xacro文件。先编译配置launch文件,退到主目录catkin_ws下,执行catkin_make。成功之后,再执行 catkin_make install。
2024-05-06 20:09:39
915
原创 【Arduino&Quartus】在小脚丫STEP CYC10上安装PulseRain Reindeer并在软核上运行基础功能
老资料坑都有点多,需要一个一个解决问题,其次遇到实在没办法的问题,可以直接去软件论坛发帖求助,这样比较简单,或者直接退版本。
2024-04-03 20:23:28
1092
原创 【Ubuntu-20.04】OpenCV-3.4.16的安装并对图片与视频处理
【Ubuntu-20.04】OpenCV-3.4.16的安装并对图片与视频处理一、安装OpenCV-3.4.161.下载OpenCV-3.4.16安装包2.将安装包放到/home,并解压3.使用 cmake 安装 opencv4.配置环境5.查看 opencv 的版本信息二、处理图片(一)创建文件夹 code ,进入文件夹(二)创建test1.cpp 文件(三)编译文件(四)执行程序三、处理视频(一)虚拟机获取摄像头权限(二)播放视频1.创建一个 test2.cpp 文件2.编译并运行 test2.cpp
2024-03-13 12:36:40
1526
原创 【Ubuntu 20.04】ROS——话题、服务与动作编程
-----在这次学习中,我学会了在ROS中创建工作空间以及功能包,并对话题、服务与动作有了更深的了解。
2024-03-12 16:00:29
1139
原创 【Ubuntu22.04】ROS2-Humble——命令行操作
将上面的画圆命令中的接口turtle1改为turtle2后,第二个小海龟也开始画圆。输入后,在key中操作turtle1,完成后按ctrl+c结束录制。turtlesim的数据大部分是通过话题来发布和订阅来的。可查看到多了一个turtle2。
2024-03-06 15:12:28
601
原创 Ubuntu22.04——ROS2安装以及小海龟画圆
ROS2-humble因为是才出来的版本,所以教程有点难找,还是建议使用ROS,不然很折磨。如果可以,尽量去直接阅读ROS2的手册进行操作。下面引用中有humble的手册。
2024-02-29 22:06:22
1689
原创 FPGA——计数器
在FPGA中,计数器作为一种基本的数字逻辑单元,发挥着至关重要的作用。无论是定时与测量、分频功能、同步逻辑设计还是复杂算法的实现,计数器都为各种应用提供了强大的支持。
2024-01-28 14:51:24
2150
原创 FPGA——Verilog语法基础
硬件描述语言(Hardware Description Language),简称为HDL,HDL是一种电子系统硬件行为描述结构描述数据流描述的语言, 用它可以表示逻辑电路图逻辑表达式复杂数字逻辑系统的逻辑功能,并且可以从顶层到底层逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(Electronics Design Automation,EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去再用。
2024-01-27 17:25:40
892
原创 FPGA——状态机
首先,FPGA是Field Programmable Gate Array的简写,翻译过来就是“现场可编程门阵列”。它是一个集成电路,可以对其反复配置以执行无限多的功能。具体而言,FPGA就是由可编程逻辑功能块和可编程I/O模块排成阵列组成,并由可编程的内部连线连接这些逻辑功能块和I/O模块来实现不同的设计,而一般来说,现在都是用的Verilog来进行这些方面的编程。
2024-01-07 15:40:47
1995
原创 Proteus仿真51程序——使用C语言与汇编语言编写LED流水灯
因为是用汇编语言写的,所以不需要使用keil的.start文件,新建文件时跳出的弹窗选择NO。并且汇编程序的后缀名为.asm。因为要在Proteus上进行仿真,所以将文件的output中的生成hex文件勾选上,不会的看之前文章。GIF帧率太低所以跳帧后出现隔一个LED亮一个的现象。再点击编译后,就可得到hex文件。
2023-12-23 23:42:08
669
原创 单周期CPU处理器的Verilog设计
中央处理器,即CPU,作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。在CPU内部,电平从低到高变化的瞬间称为时钟上升沿,两个相邻时钟上升沿之间的时间间隔称为一个时钟周期。单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。
2023-12-23 20:30:35
1163
1
原创 FPGA编程入门——HDLBits练习、Quartus编写加法器
HDLBits是一个在线的Verilog编程学习网站。可以在上面通过例程快速上手学习Verilog编程,不过因为是全英文的,所以建议看不懂的地方可以参考HDLBits 中文导学来学习。通过半加器能更快构建全加器,再通过全加器可以构建多位全加器,因为时间原因,没能上板测试四位全加器,所以只给出1位全加器。
2023-12-16 21:43:00
133
1
原创 STM32CubeMX&Keil——STM32F103C8T6:移植ucOS
通过将ucOS文件移植到STM32F103C8T6,可以在ucOS的基础上创建多个任务,十分方便的进行多任务的运行
2023-11-24 20:52:21
212
1
原创 Keil&STM32C8T6——基于SPI的OLED屏显汉字
OLED即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示,OLED 效果要来得好一些。
2023-11-15 13:23:41
439
1
原创 图片上打印汉字
利用汉字点阵在图片上打印汉字还是蛮简单的,过程总结一下就是从txt文件里读取数据,然后以16进制存放在数组里,而16进制对应的就是机内码,就可以由此分辨出汉字和字符,也可以通过这个来计算汉字区位码读取字符阵,而opencv的作用就是根据点阵图利用circle函数画实心圆代替像素点来绘字和字符。
2023-11-13 18:24:37
65
原创 电脑间使用串口通信传输数据
本次实验通过两个usb to ttl在两台pc机之间进行了大文件的传输,实验结果表明,串口的实际传输速率是要低于理论速率的。
2023-11-13 17:02:31
1335
原创 STM32Cube&Keil——STM32C8T6:基于IIC协议的温湿度采集(奥松AHT20温湿度传感器)
IIC通信协议是一种简单而有效的串行通信协议,广泛应用于各种电子设备之间的数据传输。它具有以下几个特点:简单:IIC通信协议仅使用两根信号线,使得它在硬件电路实现上非常简单。双向传输:数据线(SDA)用于主设备和从设备之间的双向数据传输,使得主设备可以向从设备发送控制指令,并接收从设备返回的数据。多从设备:IIC支持多个从设备连接到同一条总线上,每个从设备都有独立的地址,主设备可以通过地址字节确定要与哪个从设备通信。
2023-11-12 14:27:17
286
2
原创 STM32CubeMX & Keil——STM32F103C8T6:PWM控制LED灯
通过使用定时器PWM模式对输出的控制可以使LED实现呼吸效果,并控制其时间及亮度。
2023-10-30 23:12:06
2608
1
原创 Keil——STM32F103C8T6:ST-Link烧录出现报错 No target connected
如果像方法五一样的问题,将boot0置1就可以进行烧录了,不过建议把原来的工程文件选项修改一下,改为Serial wires后重新进行编译和烧录,后续boot0置0也正常使用,至此在Keil中使用ST-link多次烧录程序不报错。
2023-10-28 08:11:06
1083
1
原创 STM3CubeMX&Keil——STM32F103C8T6:HAL库实现DMA串口通信
①DMA(Direct Memory Access)全称为:直接内存访问。②DMA既可以指内存和外设直接存取数据这种内存访问的计算机技术,又可以指实现该技术的硬件模块(对于通用计算机PC而言,DMA控制逻辑由CPU和DMA控制接口逻辑芯片共同组成,嵌入式系统的DMA控制器内建在处理器芯片内部,一般称为DMA控制器,DMAC)。③DMA用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。
2023-10-27 22:41:55
1675
2
原创 STM32CubeMX&Keil——STM32F103C8T6的USART串口通信及中断
RS232是一种串行通信接口标准,其电平表示为负电平和正电平,适用于长距离和抗干扰要求较高的通信环境。与之相比,TTL电平具有低电压范围和较短的传输距离,适用于短距离通信和成本敏感的应用。打开main.c文件,在void SystemClock_Config(void);之后定义全局变量char c;//指令 0:停止 1:开始\r\n";//输出信息//提示1//提示2//提示3int flag=1;
2023-10-22 12:54:07
4362
3
原创 STM32CubeMX——基于HAL库的LED流水灯
本次使用hal库进行流水灯实验,发现使用hal库对单片机编程更加便捷,并且更简单,只需在CubeMX中完成大多数前期的配置,自己编写核心代码即可,并且使用此方式代码与文件格式更加规范。
2023-10-20 21:23:11
180
1
原创 STM32——Keil:F103C8T6基于寄存器与固件库的LED流水灯
寄存器是存储代码的硬件,由多个具有存储器组合而成。在冯诺依曼结构中的计算机中,具有重要的作用,用于存储数据。
2023-10-14 12:15:56
392
1
原创 Ubuntu——ubuntu与stm32的变量分配以及stm32F10x的存储器地址映射
局部变量只在定义它的函数内部有效,其他函数不能使用它(因为每个函数有自己的独立空间,其他函数要用它的时候空间已经被回收)。① 默认分配的ROM区域是0x8000000开始,大小是0x10000的一片区域,那么这篇区域是只读区域,不可修改,也就是存放的代码区和常量区。② 默认分配的RAM区域是0x20000000开始,大小是0x5000的一片区域,这篇区域是可读写区域,存放的是静态区、栈区和堆区。stm32的栈区的地址值是从上到下减小的,堆区则是从上到下增长的,其他区也是从上到下增长。①代码区:存放代码;
2023-09-22 15:28:13
105
原创 STM32F10C8T6学习记录—— 第一节 stm32工程模板
9.在工程选项中添加此文件夹的头文件路径,点击魔术棒工具,打开工程选项,在C/C++中Include Paths旁的右边三个点,新建路径,将Start路径添加。因Keil中工程文件改名不方便,所以为便于管理,需将工程文件放入文件夹中,以文件夹名描述工程的功能,而工程名称均使用Project。①其中stm32f10x.h文件为stm32外设寄存器描述文件,用以描述stm32有哪些寄存器和它对应的地址。此时工程完成了寄存器开发的文件导入,若仅使用寄存器开发工程,即可开始开发。stm32从这些文件开始执行。
2023-09-22 12:53:58
324
原创 Ubuntu——gcc:gcc介绍以及静态库与动态库的生成与使用
调用动态库的时候有几个问题会经常碰到,有时,明明已经将库的头文件所在目录 通过 “-I”include 进来了,库所在文件通过 “-L”参数引导,并指定了“-l”的库名,但通过 ldd 命令察看时,就是死活找不到你指定链接的 so 文件,这时你要作的就是通过修改LD_LIBRARY_PATH 或者/etc/ld.so.conf 文件来指定动态库的目录。这样,加入的目录下的所有库文件都可见。当静态库和动态库同名时,gcc 命令将优先使用动态库,默认去连/usr/lib 和/lib 等目录中的动态库。
2023-09-21 20:06:16
909
原创 嵌入式——关于STM32的一些理解
所有寄存器都需要时钟才能配置,寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值。任何MCU的任何外设都需要有时钟,STM32为了让用户更好地掌握功耗,对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。
2023-09-16 16:20:04
229
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人