- 博客(24)
- 收藏
- 关注
原创 基于Nios-II实现流水灯
这让我感到非常兴奋和满足,因为我不仅实现了预期的功能,还学到了很多实用的知识和技能。在设计过程中,我需要考虑硬件和软件之间的协同工作、资源的合理分配以及性能的优化等方面的问题。Nios II包括三种产品:Nios II/f(快速)、Nios II/s(标准)和Nios II/e(经济),分别对应不同的性能需求和FPGA使用量。分配中断号:在”IRQ”标签栏下点选”Avalon_jtag_slave”和 IRQ 的连接点就会为”jtag_uart”核添加一个值为 0 的中断号。加入Apply 后,Run。
2024-06-15 16:12:03
1222
原创 Nios-II编程入门
实验内容一. 实验目标:学习 Quartus 、Platform Designer、Nios-II SBT 的基本操作;初步了解 SOPC 的开发流程,基本掌握 Nios-II 软核的定制方法;掌握 Nios-II 软件的开发流程,软件的基本调试方法。二. 实验过程:1、完成以下实验:1) 在DE2-115开发板上分别用 Verilog和 Nios软件编程两种方式完成LED流水灯显示,理解两种方式的差异;
2024-06-03 19:28:46
1005
原创 实验三---红外超声波雷达测距
@param {*} main.c中重定义void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)* @param {*} main.c中重定义void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) //捕获回调函数。//读取红外传感器的值。
2024-05-27 20:44:38
602
原创 【FPGA实验】基于DE2-115平台的VGA显示
有些不带VGA接口而带有DVI(Digital Visual Interface数字视频接口)接口的显卡,也可以通过一个简单的转接头将DVI接口转成VGA接口,通常没有VGA接口的显卡会附赠这样的转接头。//如果该行有数据 则颜色为红色。VGA_BLANK, //复合空白信号控制信号 当BLANK为低电平时模拟视频输出消隐电平,此时从R9~R0,G9~G0,B9~B0输入的所有数据被忽略。
2024-05-26 21:50:19
729
原创 HLS入门
高级语言的抽象程度较高,而硬件设计需要精确的细节控制,这两者之间的映射是一个复杂的过程。:尽管HLS提高了抽象级别,但设计者仍然需要学习如何有效使用HLS工具,以及如何编写适合硬件实现的高级语言代码。如何在高级语言级别进行有效的调试,并在硬件级别验证功能正确性,是HLS面临的重要问题。手工设计可以进行更细粒度的优化,而HLS工具的自动化优化难以达到相同的精度。:HLS在处理复杂的控制逻辑时可能表现出局限性。总体来说,HLS作为一种前沿的设计技术,正在不断进步,并有望在未来的硬件设计中发挥越来越重要的作用。
2024-05-25 14:11:02
1226
原创 ROS机器人小车建模仿真与SLAM
一、参考网上资料,在ROS中完成一个机器小车的模型创建,传感器配置,仿真环境的设置,并控制机器小车进行运动。1.1 前置准备1.1.1 urdf模型+rviz可视化创建功能包,添加依赖。用的是Ubantu 20.04cd catkin_ws #进入工作空间catkin_create_pkg jubot_demo urdf xacro #创建功能包、添加依赖mkdir urdfmkdir meshes #存放渲染机器人模型的文件。
2024-05-07 22:37:26
1039
原创 ROS基础学习—话题、服务、动作编程
/service回调函数,输入参数req,输出参数res,该函数提供两个int值求和的服务,int值从req里获取,返回数据装入res内,这些数据类型都定义在srv文件内部,函数返回一个boolean值。//订阅小乌龟的位置信息。本次实验,我对ROS中话题,服务的理解更加深入了,同时学习了action动作编程相关的知识,并完成了分布式通信控制小海龟,做的内容比较多,提升了我的动手能力。//初始化std_msgs::String类型的消息,这里使用标准的String消息,只有一个数据成员data。
2024-03-15 22:35:32
791
1
原创 Ubuntu18.04安装ROS并实现小海龟仿真
/赋值完毕后,发送到主题"/cmd_vel"。$ catkin_create_pkg my_turtle_package rospy roscpp #新建my_turtle_package包。#include<geometry_msgs/Twist.h> //运动速度结构体类型 geometry_msgs::Twist的定义文件。//vel_pub会在主题"/cmd_vel"(机器人速度控制主题)里广播geometry_msgs::Twist类型的数据。//左右(+-) m/s。
2024-03-03 17:59:36
677
原创 第10周--IIC协议采集温湿度
开始通讯时,主设备先发送一个起始信号(S),主设备发送一个地址数据(由7bit的从设备地址,和最低位的写标志位组成的8bit字节数据),然后,主设备释放SDA线,并等待从设备的应答信号(ACK),从设备应答主设备后,主设备再发送要读取的寄存器地址,从设备应答主设备(ACK),主设备再次发送起始信号(Sr),主设备发送设备地址(包含读标志),从设备应答主设备,并将该寄存器的值发送给主设备;通过STM32F103的I2C接口,可以方便地与AHT20温湿度传感器进行通信,实现数据的采集和控制。
2023-12-28 14:41:25
948
1
原创 定时器&PWM应用编程
例如,如果一个脉冲信号的周期为T,高电平持续时间为t,则该脉冲的占空比(即高电平时间与周期的比值)就是t/T。而STM32中的定时器是一个重要的外设,它总共包含8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM5、TIM6)。一. 使用STM32F103的 Tim2~Tim5其一定时器的某一个通道pin(与GPIOx管脚复用,见下图),连接一个LED,用定时器计数方式,控制LED以2s的频率周期性地亮-灭。
2023-12-28 14:25:21
1013
1
原创 FPGA编程入门
/输入信号,ain表示被加数,bin表示加数,cin表示低位向高位的进位。//输出信号,cout表示向高位的进位,sum表示本位的相加和。通过仿真结果,可以发现得到的结果与真值表中是相吻合的。通过仿真结果,可以发现得到的结果与真值表中是相吻合的。2.1.2在半加器电路基础上,实现1位全加器电路。2.1.2在半加器电路基础上,实现1位全加器电路。5.2四位全加器的Verilog编程实现。5.2四位全加器的Verilog编程实现。2.1完成一个1位全加器的设计并测试。2.1完成一个1位全加器的设计并测试。
2023-12-20 22:24:36
1545
1
原创 【嵌入式】基于HAL库的STM32F103C8T6移植uCOS
欢迎来到RTOS多任务环境!综上所述,本实验的目标是在STM32F103C8T6上成功移植uCOS,并通过实践掌握嵌入式系统中操作系统的移植和应用技术,为嵌入式系统开发提供更多的功能和性能优化。简化开发流程:通过移植uCOS到STM32F103C8T6上,可以利用uCOS提供的任务管理、事件驱动等功能,简化开发流程,提高代码的可重用性和可维护性。资源管理和共享:uCOS提供了丰富的资源管理和共享机制,可以有效地管理系统资源,如任务栈、信号量、消息队列等,提高系统的可靠性和稳定性。
2023-11-30 15:35:58
1076
原创 【嵌入式】点阵汉字的字模读取与显示
我可以通过读取点阵汉字的字模数据,并结合OpenCV的图像处理功能,实现汉字的显示、识别和处理。随着计算机技术的发展和国际化的需求,机内码已经成为了广泛使用的汉字编码方式,保证了汉字在计算机系统中的准确表示和处理。打开一个名为"logo.txt"的文本文件(其中只有一行文本文件,包括你自己的名字和学号),按照名字和学号去读取汉字24*24点阵字形字库(压缩包中的文件HZKf2424.hz)中对应字符的字形数据,将名字和学号叠加显示在此图片右下位置。点阵字库的存储方式决定了字库的占用空间和字形的显示效果。
2023-11-29 16:41:06
2426
1
原创 基于标准外设库的LED流水灯
电路连接方面,需要将LED灯珠的正极连接到单片机I/O口,负极接地,同时串联适当的电阻以保护LED灯珠。LED流水灯实验是基于STM32F103标准外设库的一个基础实验,通过这个实验,我们可以了解如何使用STM32F103的标准外设库来控制LED灯的亮灭和模式。通过这个基于STM32F103标准外设库的LED流水灯实验,我掌握了如何使用STM32F103的标准外设库来控制LED灯的亮灭和模式。本实验的主要目的是探究LED流水灯的控制方式,了解单片机的内部资源和外设库的使用方法。
2023-11-11 17:38:57
180
1
原创 STM32F103C8T6核心开发板下,采用串口中断方式实现多形式的“hello windows”通信输出实例演训
与接收到字符“s”和“t”的区别在于要将接收到的连续字符保存到一个字符数组里,进行判别匹配。通过本次学习,希望大家能够掌握在STM32F103C8T6核心开发板下,通过串口中断方式实现多形式的“hello windows!中断方式不必等待数据的传输过程,只需要在每字节数据收发完成后,由中断标志位触发中断,在中断服务程序中放入新的一字节数据或者读取接收到的一字节数据;当stm32接收到字符“s”时,停止持续发送“hello windows!当接收到字符“t”时,持续发送“hello windows!
2023-11-08 23:26:33
239
1
原创 STM32的USART串口通讯入门
在没有示波器条件下,使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。用此功能观察上题中的串口输出波形,并分析时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。本文仅简单介绍在嵌入式系统开发环境下,通过STM32系统与上位机(win10)的连接,完成一个简单的“hello windows!在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察串口输出波形,并分析时序状态正确与否,计算波特率实际为多少。win10采用“串口助手”工具接收。
2023-11-01 14:38:31
133
1
原创 STM32基于HAL库流水灯实验
外设库提供了对单片机I/O口的操作函数,如延时、计数器、中断等。通过这次实验,不仅理解了STM32cubemx的基础原理知识,同时通过在stm32cubeMX的开发环境下,运用HAL库编程实现LED流水灯及Keil环境下的仿真运行,观察其波形,又进一步加深了我对这部分知识的理解与运用。
2023-11-01 13:19:02
182
1
原创 Ubuntu、stm32下的程序内存分配问题(堆栈、局部全局变量等)
我们在重温全局常量、全局变量、局部变量、静态变量、堆、栈等概念的时候也要在Ubuntu(x86)系统和STM32(Keil)中分别进行编程、验证(STM32 通过串口printf 信息到上位机串口助手)如局部数组,超过某个数量需定义为全局数组,因为局部数组同样储存在堆栈中,最重要的是搞清楚原理并加以运用且最好是不要调用太深。全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量、未初始化的静态变量在相邻的另一块区域。//"123456"放在常量区。
2023-10-07 20:02:45
125
1
原创 gcc生成静态库.a和动态库.so
通过用gcc生成静态库和动态库的练习过程,我们能够熟练的生成静态库和动态库。在删掉静态库的情况下,运行可执行文件,发现程序仍旧正常运行,表明静态库跟程序执行没有联系。gcc -o hello main.c -L. -lmyhello或gcc main.c libmyhello.so -o hello。注意:对于自定义的静态库,main.c还可以放在-L.和-lmyhello之间,否则myhello没有定义。在执行可执行文件,会报一个错误,可见当静态库和动态库同时存在的时候,程序会优先使用动态库。
2023-10-07 19:49:53
99
1
原创 嵌入式开发基础----register和volatile关键字
一·,register和volatile的解释register:在函数内部定义变量时,默认是auto类型,即分配给变量内存。如果定义一个变量用register关键字,那么编译器尽可能把变量存放在CPU内部寄存器中,这样就不必通过内存寻址来访问变量,提高访问效率volatile:这个是嵌入式开发必须知道的。用volatile修饰变量或地址,相当于告诉编译器这个值会随时发生变化,每次使用都要去内存中重新读取它的值。
2023-09-24 21:32:40
189
1
原创 寄存器映射原理详解,GPIO端口的初始化设置步骤
我们可以找到每个单元的起始地址,然后通过 C 语言指针的操作方式来访问这些单元,如果每次都是通过这种地址的方式来访问,不仅不好记忆还容易出错,这时我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。指令、地址寄存器与数据寄存器类似,里边存放的都是0和1,毕竟单片机也只认识机器码,机器码都是0或1,只是特别的规定下,数据寄存器里面存放的0和1表示数据,指令寄存器里存放的表示指令。
2023-09-24 21:08:54
2039
1
原创 ARM开发:使用MDK编译stm32简单程序(闪烁LED)
(1)首先点击 魔法棒,然后在弹出的窗口内,点击 Debug,勾选 Use Simulator ,再选择 ULINK2/ME Cortex Debugger ,并点击 Settings。(6)复制粘贴完后,点击左上角保存按钮,在弹出的窗口内,输入文件名main.c(如果不加后缀,就不会是.c文件),点击保存,而后Text1文件就变成了main.c文件。//GPIOA_BASE=0x40000000+0x10000+0x0800=0x40010800,该地址为GPIOA的基地址。
2023-09-24 20:30:14
223
1
原创 Proteus使用教程并仿真51程序——LED流水灯
通过阅读本文章,学习到了如何使用Proteus创建工程、原理图界面的使用、设计一个简单的51原理图、使用Keil软件编译Hex文件,Proteus仿真软件使用起来十分方便,不过要更加熟练的掌握还需要上网查阅更多的资料,希望本文章能帮助到您一点。(7)使用 LBL 为支线标记编号,连接到主线的支线,需要对支线进行编号才能正常连接,否则后面需要正常实验成功(使用方法:点击 LBL 后,在左键单击支线上,修改值)(2)点击保存按钮,再命名为main.c文件(一定要加.c后缀,不然就不是C文件了),再点击保存。
2023-09-24 19:05:15
4212
2
原创 Ubuntu系统下使用gcc指令和makefile编译C程序
我们这次在Ubuntu系统上编写C语言并运行的实验,我使用了gcc直接编译和Makefile进行编译这两种编译,并且在整个过程中,通过gcc这种“原始”的编译工具,我深刻的理解到了如何从C语言源程序编译为可执行文件的过程,但也让我们忽略了整个编译过程中的各个步骤的作用,而这些编译过程会使我们更加了解整个C语言的源程序,也让我更加牢固知识点。作用:编译main1.c文件为目标文件main1.o,然后链接sub1.o目标文件生成main1可执行文件。2.gcc编译过程(以编译hello.c为例)
2023-09-15 23:12:21
372
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人