- 博客(17)
- 收藏
- 关注
原创 实验三---红外超声波雷达测距
总体来说,Modbus协议由于其简单性、可靠性和广泛应用性,成为了工业控制领域中的一种主流通信标准,支持多种设备间的数据交换和控制操作。这样设计的车载超声波雷达能够稳定、精确地测量距离,并通过RS485和Modbus协议与其他设备进行通信,适用于智能汽车等各种应用场景。TIM1配置:由上面可知HC-SR04的使用需要us级的延迟函数,HAL库自带只有ms的,所以需要自己设计一个定时器。:Modbus协议使用功能码来指定执行的操作,如读取数据、写入数据或执行特定的控制功能。2、SYS配置:Debug设置成。
2024-07-13 10:21:06
923
原创 基于FPGA的VGA协议实现
OSC_50, //原CLK2_50时钟信号VGA_CLK, //VGA自时钟VGA_HS, //行同步信号VGA_VS, //场同步信号VGA_BLANK, //复合空白信号控制信号 当BLANK为低电平时模拟视频输出消隐电平,此时从R9~R0,G9~G0,B9~B0输入的所有数据被忽略VGA_SYNC, //符合同步控制信号 行时序和场时序都要产生同步脉冲VGA_R, //VGA绿色VGA_B, //VGA蓝色VGA_G);//VGA绿色//外部时钟信号CLK2_50。
2024-07-13 09:42:09
375
原创 第二周--ROS通信模式编程
在ROS程序设计实践中,需要掌握ROS节点、话题和服务的定义和使用方法,了解ROS的消息传递机制和服务调用机制,同时还需要掌握编写ROS程序的基本方法和技巧,才能实现机器人的各项功能,然后就是ROS Kinetic动作编程实践的代码结构比较复杂,包含了多个ROS节点和多个源文件。先定义msg文件,在工作空间catkin_ws/src内learning_communication的功能包内创建文件夹msg,并在msg内创建文件number.msg文件,在把上面的文件内容复制进文件。//订阅小乌龟的位置信息。
2024-07-13 09:34:08
308
原创 FPGA VGA显示协议
行同步带从右移动到左边,表示行同步信号回扫完毕,列同步带从下边移动到上边,表示场同步信号回扫完毕。RGB分为RGB888,RGB565和RGB332三种不同长度的颜色信号,RGB888表示红绿蓝三个信号各占8个比特,RGB则红绿蓝分别占5,6,5个比特。根据VGA协议的定义,VGA的行同步信号HSYNC,在每一行开始时产生一个高电平脉冲,场同步信号在每一帧开始时产生一个高电平脉冲。每次行或列扫描完成后,是同步信号的回扫时间,分别在行列方向产生一条移动的同步带,这条带内,显示器不显示图像(全黑)。
2024-06-16 19:45:14
620
原创 Nios-II编程入门
① 在 Quartus-II 界面,点击Tools,然后点击 Nios II Software Build Tools for Eclipse 打开 Nios II SBT for Eclipse。下面使用 Nios II Software Build Tools for Eclipse 来完成当前项目的软件开发。② 启动 Workspace 选择当前的项目目录,点 Ok。三、基于NIOS-II软核流水灯实现(软件设计)添加 Nios II 32-bit CPU。标签栏中的查找窗口输入。
2024-06-16 19:36:45
898
原创 嵌入式RTOS多任务程序设计.
在每个任务中实现相应的功能:例如在任务A中控制GPIO口控制LED灯的亮灭,在任务B中同样控制GPIO口但是LED的频率和任务A不同,串口发送任务C在周期性发送“hello uc/OS!这是一项相对复杂的任务,需要逐步了解嵌入式RTOS及其API、STM32F103 MCU的使用方法,以及如何使用串口和IO口进行控制。构建任务:按照要求构建至少3个任务,并分配相应的优先级,例如亮灯任务A的周期是1s,亮灯任务B的周期是3s,串口发送任务C的周期是2s。准备好STM32F103开发板,并配置开发环境。
2023-11-30 19:48:37
443
1
原创 IIC协议采集温湿度
总的来说,软件I2C和硬件I2C都是实现I2C总线通信协议的方式,其选择取决于应用的具体要求和资源限制。1. 学习I2C总线通信协议,使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出。软件I2C的优点是灵活性更高,可以使用任意的GPIO引脚来实现,适用于低速设备或资源受限的应用。首先,阅读AHT20数据手册,根据其通信协议和寄存器配置,编写驱动程序完成I2C总线访问和AHT20温湿度传感器的数据读取。
2023-11-18 21:53:49
1021
1
原创 定时器&PWM应用编程
我们可以使用定时器生成一定频率的脉冲信号作为超声波发射信号,然后使用另一个定时器测量接收到的脉冲信号的时间差,从而计算出距离。一. 使用STM32F103的 Tim2~Tim5其一定时器的某一个通道pin(与GPIOx管脚复用,见下图),连接一个LED,用定时器计数方式,控制LED以2s的频率周期性地亮-灭。对于步骤一,我们需要编写程序配置定时器,使用定时器的计数功能实现 LED 的周期性亮灭。三. 再接上,采用定时器的另外一个通道,编程采集上面的pwm输出信号,获得其周期和脉宽,并重定向输出到串口显示。
2023-11-07 21:24:07
52
原创 基于中断/DMA的串口通信
"USB/TTL转232"模块是一种将TTL电平转换为RS-232电平(或将RS-232电平转换为TTL电平)的转换模块。在中断处理函数中,判断接收到的字符是否为"stop"或"start",根据不同的字符执行相应的操作。与RS-232电平相比,TTL电平(Transistor-Transistor Logic)使用的是0V和5V的电压表示逻辑0和逻辑1。使用HAL库(或标准库)的方式,初始化USART1串口,将波特率设置为115200,数据位设置为8位,停止位设置为1位,校验位设置为无校验位。
2023-11-04 21:28:57
63
1
原创 STM32/51单片机编程入门(点亮LED)
一般情况下,通过寄存器操作的方法进行对外部设备的数据读写,需要涉及到设置一些相关的寄存器,例如初始化 GPIO 端口的寄存器、设置定时器计数器的寄存器等。作用:告诉编译器该变量的值可能会在程序执行期间被意外地修改,需要在每次对变量进行访问时都重新读取该变量,并且禁止编译器对变量的一些优化,以确保对该变量的访问按照程序的定义进行。需要注意的是,在实际嵌入式开发中,对于寄存器的访问常常需要结合具体的芯片手册和硬件外设的寄存器映射表来进行正确的操作。变量时都要重新从寄存器中读取最新的值,而不是使用之前的缓存值。
2023-11-02 14:33:04
94
原创 嵌入式Linux系统开发基础
一:编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。2) 请在windows系统下用你熟悉的编译工具编译主程序main1.c 并运行。进入保存有 main1.c 和 sub1.c 文件的目录。结果将会在终端中显示。
2023-11-02 14:16:38
52
原创 GCC背后的故事&C程序常量变量的地址分配
3)将x2x、x2y目标文件用 ar工具生成1个 .so 动态库文件, 然后用 gcc将 main函数的目标文件与此动态库文件进行链接,生成最终的可执行程序,记录文件的大小,并与之前做对比。下载并阅读材料 “用gcc生成静态库和动态库.pdf” 和 “静态库.a与.so库文件的生成与使用.pdf”,确保你对静态库和动态库的生成和使用有基本的了解。对比静态库和动态库生成的可执行文件大小可以看出,动态库生成的可执行文件通常更小,因为它不会将库的代码复制到最终可执行文件中,而是在运行时加载库文件。
2023-10-31 20:21:06
57
原创 STM32简单串口通信
为了获得更准确和可靠的结果,使用示波器是更好的选择。但是,如果没有示波器的情况下,Keil的软件仿真逻辑分析仪功能提供了一种较为简单和方便的观察串口输出波形的方式。RS232电平与TTL电平的区别:RS-232电平用于传输数据的串口通信标准中,使用正负12V表示逻辑1和逻辑0,而TTL电平则使用3.3V或5V表示逻辑1和逻辑0。设置USART1波特率为115200,1位停止位,无校验位:进入stm32CubeMX,选中USART1并设置波特率为115200,停止位为1位,校验位为无。
2023-10-29 19:57:52
43
1
原创 一. 了解并掌握STM32中断原理,HAL库函数开发方法。使用HAL库方式完成下列任务 二. 在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能等。
通过观察波形,您可以确认LED流水灯按照预期的方式在不同的GPIO端口上闪烁,并且高低电平转换的频率是正确的。通过观察GPIOC的Pin_8、Pin_9和Pin_10的状态变化,您可以确定高低电平转换的周期。编写代码:在Keil中,打开main.c文件,编写你的代码来控制LED的闪烁。构建和下载代码:在Keil中,点击构建按钮来编译你的代码,并将生成的hex或bin文件下载到STM32开发板上。创建一个新的项目:打开STM32CubeMX,选择你使用的STM32系列芯片,然后创建一个新的工程。
2023-10-27 22:31:26
106
原创 以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只_(或更多)红绿蓝LED 搭建电路,使用GPIOA/GPIOB/GPIOC端口控制LED灯,轮流闪烁,间隔时长1秒等。
在这个例子中,我们将 GPIOA 的 0~7 号管脚配置为输出模式,GPIOB 的 0~5 号管脚配置为输出模式,GPIOC 的 13~15 号管脚配置为输出模式。在使用软件循环延时的情况下,准确的LED闪烁周期主要由三个方面决定:GPIO端口切换速度、软件延时函数的准确性和其他代码的执行时间。在程序实现中,需要根据实际连接的LED灯的管脚和颜色来配置对应的GPIO端口,并根据需要设置输出高电平或低电平来点亮或关闭LED灯。选择的目录中创建一个新的文件夹,用于存储工程文件。
2023-10-17 22:08:06
1417
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人