自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

学习和掌握System Verilog基本语法,在DE2-115开发板上重新设计之前做过的Verilog练习流水灯

2024-06-15 21:45:11 803

原创 STM32系列(HAL库)——F103C8T6通过HC-SR04超声波模块实现测距

采用stm32F103和HC-SR04超声波模块, 使用标准库或HAL库+ 定时器中断,完成1或2路的超声波障碍物测距功能。

2024-06-01 20:45:44 416

原创 HLS入门

Vivado HLS是 Xilinx公司2010年收购AutoESL以后重新打造的高层次综合工具,它可以让用户通过添加适当的directives(制导语句)和constrains(约束),将其C/C++/System C代码直接转换成FPGA RTL( Verilog ,VHDL, System C)代码。让用户可以在算法开发环境而非通常的硬件开发环境中只需专注于算法规格和算法的C实现,Vivado HLS 工具会自动考虑 FPGA微观实现架构,并可生成可综合的 FPGA RTL代码。

2024-05-25 22:54:28 614

原创 【FPGA实验】基于DE2-115平台的VGA显示

通过Verilog编程,实现以下VGA显示,并对照VGA协议信号做时序分析:1)屏幕上显示彩色条纹;2)显示自定义的汉字字符(姓名-学号);3)输出一幅彩色图像。

2024-05-24 09:34:45 868

原创 【FPGA】Nios-II编程入门

在DE2-115开发板上分别用 Verilog和 Nios软件编程两种方式完成LED流水灯显示,理解两种方式的差异;

2024-05-14 21:29:01 590

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

我们的机器人模型可看作一个两轮差速驱动的机器人,通过调节两个轮子的速度比例,完成前进、转向、倒退等动作。此时需要加入驱动机器人运动的动力源,为使用ROS控制驱动机器人,需要在模型中加入transmission元素,将传动装置与joint绑定。我们直接加入gazebo提供的libgazebo_ros_diff_drive.so两轮差速插件,可以将其应用到现有的机器人模型上。现在的xacro文件可以通过launch文件打开,并且用键盘控制节点进行小车的控制。在urdf文件夹下打开终端,图形化显示URDF模型。

2024-04-27 21:03:26 385

原创 【嵌入式】ROS通信编程

-----

2024-03-16 13:28:22 1408 1

原创 【嵌入式】ROS1.0环境安装与配置

进入ROSwiki官网(https://wiki.ros.org/cn/noetic/Installation/Ubuntu)后,选择ROS镜像源。参考:https://blog.csdn.net/qq_52187415/article/details/129330316?然后将鼠标聚焦到输入最后一个命令的窗口,通过键盘的上下左右键,分别控制小海龟的前进,后退,左转,右转。然后,安装rosdepc,执行初始化rosdepc,更新rosdepc。进入设置,找到关于,然后进入软件更新。打开三个终端、分别输入。

2024-03-15 14:13:50 1279 1

原创 第15周实验--FPGA编程入门

1位全加器logisim电路4位全加器设计。

2023-12-21 23:02:53 393

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

学习嵌入式实时操作系统(RTOS),以uc/OS-III为例,将其移植到stm32F103上,构建至少3个任务(task):其中两个task分别以1s和3s周期对LED等进行点亮-熄灭的控制;另外一个task以2s周期通过串口发送“hello uc/OS! 欢迎来到RTOS多任务环境!”。记录详细的移植过程。

2023-11-24 23:57:58 67 1

原创 汉字点阵与OLED屏显

SPI(Serial Peripheral interface)是串行外围设备接口,SPI 接口主要应用在 EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,STM32 也有 SPI 接口。

2023-11-19 23:08:25 76

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

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

2023-11-18 14:52:32 65 1

原创 定时器&PWM应用编程

外部 MCU 给模块 Trig 脚一个大于 10uS 的高电平脉冲;声速温度公式:c=(331.45+0.61t/℃)m•s-1 (其中 330.45 是在 0℃)另一方面,输入捕获模块返回的回响信号,记录高电平时间;随后计算,向串口打印输出。一方面,trig信号通过调节PWM波的占空比来输出;不用配置TIM3,配置TIM2如下。距离=T*C/2 (C 为声速)20℃声速: 342.62M/S。40℃声速: 354.85M/S。0℃声速: 330.45M/S。通过本次定时器的学习,

2023-11-05 12:04:18 56 1

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

其中DTR/DSR和RTS/CTS用于硬件流控。DTR/DSR状态表明DTE和DCE处于可用状态,有时候设备上电这两个信号即有效,表示设备本身可用使用,但要开始进行数据传输通讯,则需要RTS/CTS流控信号。RTS即DTE发送数据时,该信号有效(ON),向DCE请求发送数据;CTS是对请求发送RTS信号的响应,当DCE已经准备好接收数据时,该信号有效(ON),通知DTE可用使用TXD发送数据了。比如A向B发送数据简单如下逻辑:1.A先设置RTS为1,表示要发数据给B。

2023-11-02 16:49:16 52 1

原创 STM32简单串口通信

其中DTR/DSR和RTS/CTS用于硬件流控。DTR/DSR状态表明DTE和DCE处于可用状态,有时候设备上电这两个信号即有效,表示设备本身可用使用,但要开始进行数据传输通讯,则需要RTS/CTS流控信号。RTS即DTE发送数据时,该信号有效(ON),向DCE请求发送数据;CTS是对请求发送RTS信号的响应,当DCE已经准备好接收数据时,该信号有效(ON),通知DTE可用使用TXD发送数据了。比如A向B发送数据简单如下逻辑:1.A先设置RTS为1,表示要发数据给B。

2023-10-28 00:19:50 64 1

原创 基于HAL库的流水灯

(7)进入 code generate界面,选择生成初始化.c/.h文件,后面点击generate code,选择open project,然后就到KEIL5了。1.如上面一所说的新建项目,在左上角PartNumber选择自己的芯片,然后选中信息栏中自己的芯片,点击右上角start project,然后配置系统调试接口。注意:由于STM32CubeMX是Java实现的,需要安装jdk环境。(2)在左上角PartNumber选择自己的芯片,然后选中信息栏中自己的芯片,点击右上角start project。

2023-10-21 17:40:02 684 1

原创 基于寄存器&标准外设库的LED流水灯实验

(2)然后回到固件库Libraries->CMSIS->CM3->DeviceSupport->ST->STM32F10x中,找到一个.h文件和两个system开头的文件,它们分别为STM32的外设寄存器描述文件和配置时钟文件,将它们三个也复制到start下。(1)找到刚刚解压好的固件库,点击Libraries->CMSIS->CM3->DeviceSupport->ST->STM32F10x->setup->arm,这些为STM32的启动文件,全选启动文件并复制到start。

2023-10-16 13:23:32 218 1

原创 Ubuntu和stm32下的C程序内存分配问题实例

代码区和常量区的内容是不允许被修改的,ROM(STM32就是Flash Memory)也是不允许被修改的,所以代码区和常量区的内容编译后存储在ROM中。)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数的内部就是无效的,再使用就会报错。stm32的栈区的地址值是从上到下减小的,堆区则是从上到下增长的。

2023-10-07 22:02:22 54 1

原创 Linux GCC常用命令和GCC编译器背后的故事实例

为创建可执行文件,链接器必须要完成的主要任务是:符号解析(把目标文件中符号的定义和引用联系起来)和重定位(把符号定义和内存地址对应起来然后修改所有对符号的引用)。在 Linux 系统中,执行二进制文件时的动态库搜索路径的顺序通常为:首先搜索编译目标代码时指定的动态库搜索路径; 在 Linux 系统中,gcc 编译链接时的动态库搜索路径的顺序通常为:首先从 gcc命令的参数-L 指定的路径寻找;再从默认路径/lib、/usr/lib、/usr/local/lib 寻找。和/usr/lib寻找。

2023-10-07 20:36:54 70 1

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

在第一次作业的程序代码基础进行改编,除了x2x函数之外,再扩展写一个x2y函数(功能自定),main函数代码将调用x2x和x2y;将这3个函数分别写成单独的3个 .c文件,并用gcc分别编译为3个.o 目标文件;将x2x、x2y目标文件用 ar工具生成1个 .a 静态库文件, 然后用 gcc将 main函数的目标文件与此静态库文件进行链接,生成最终的可执行程序,记录文件的大小。

2023-10-06 03:07:11 95 1

原创 嵌入式——“用gcc生成静态库和动态库.pdf”和“静态库.a与.so库文件的生成与使用.pdf”

创建动态库 gcc -shared -fPIC -o libmyhello.so hello.o。创建动态库 gcc -shared -fPIC -o libmyhello.so hello.o。使用库生成可执行文件 gcc -o hello main.c -L. -lmyhello。执行可执行文件 ./hello,当静态库和动态库同时存在的时候,程序会优先使用动态库。执行可执行文件 ./hello,当静态库和动态库同时存在的时候,程序会优先使用动态库。

2023-10-06 02:33:36 112 1

原创 嵌入式C程序 register和volatile 关键字

在嵌入式系统中,寄存器是位于CPU内部的高速存储器,用于存储临时数据和执行指令。使用寄存器变量可以提高程序的执行速度和效率,因为寄存器的访问速度比内存快得多。当使用register关键字声明变量时,编译器会尽可能地将该变量存储在寄存器中,以便快速访问。然而,嵌入式系统的编译器可能会忽略register关键字,因为寄存器的数量有限,编译器需要根据需要进行优化和分配寄存器。这个是嵌入式开发必须知道的。用volatile修饰变量或地址,相当于告诉编译器这个值会随时发生变化,每次使用都要去内存中重新读取它的值。

2023-09-24 13:18:20 80 1

原创 嵌入式——寄存器映射原理与外设GPIO端口的初始化设置

内存:内存数据库将数据完全加载到内存中进行处理,不需要直接与外部数据源交互。数据存储在RAM中,提供了非常快速的读写操作。高性能:由于数据直接存储在内存中,访问速度非常快。较低的延迟:无需与外部数据源交互,数据直接在内存中进行操作,因此响应时间较短。实时性:由于数据存储在内存中,可以实时处理和更新数据。外设:外部数据指的是使用传统的文件、数据库或其他数据源进行存储和访问的数据。持久性:外部数据存储在持久化介质(如磁盘)上,即使应用程序停止或计算机重新启动,数据也不会丢失。

2023-09-24 12:11:22 412 1

原创 使用MDK运行stm32程序——点亮LED灯

解决办法:1.去掉驱动文件startup_stm32f10x_md.s的只读属性,找到复制在项目下的文件右键点击属性,然后取消只读勾选。3.将此文件放在source group下面,右键点击source group然后选择add existing files。1.点击Target前的加号展开,右键点击source group,然后点击add new item。(1)点击1.mak5软件链接,然后填写信息(可随便填写),然后点击submit进行安装。参考:http://t.csdn.cn/BtdiP。

2023-09-23 16:02:13 753 1

原创 运用Proteus完成一个C51简单程序设计和仿真——流水灯

绘制原理图:绘制原理图要在原理图编辑窗口中的蓝色方框内完成。原理图编辑窗口的操作是不同于常用的Windows应用程序的,正确的操作是:用左键放置元件;①打开Keil uVision,点击Project,找到New uVision Project,点击它。③选择项目需要使用的芯片,选择完成后,点击OK(该实验要用到的芯片是AT89C51)打开刚刚生成的hex文件,点击确定,然后点击左下角三角形即可开始运行。参考:http://t.csdn.cn/NgjfU。打开画好的原理图双击单片机,然后点击编辑属性。

2023-09-21 21:26:23 2454

原创 Ubuntu系统下分别用gcc和Makefile编译简单的C程序

本文通过在Ubuntu系统上和Windows系统上编译C程序(Ubuntu系统上第一种用gcc系统命令行编译运行主程序,第二种用Makefile方式编译主程序)来达到熟悉操作的目的。

2023-09-11 19:43:59 123

空空如也

空空如也

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

TA关注的人

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