- 博客(30)
- 收藏
- 关注
原创 基于System-Verilog的FPGA设计与仿真
基本结构:了解模块(module)、端口声明(input/output)、wire和reg数据类型。数据类型:掌握位宽(bit-width)、整数(integer)、实数(real)等数据类型。运算符:学习位运算符、算术运算符、关系运算符和逻辑运算符。控制流:理解条件语句(if, case)、循环语句(for, while, repeat, foreach)。并发构造:学习always块、initial块和assign语句。任务和函数:掌握如何定义和调用任务(task)和函数(function)。
2024-06-18 15:58:25
460
原创 关于智能汽车的一些思考
Modbus协议已经成为工业领域通信协议的业界标准(De facto),并且是工业电子设备之间常用的连接方式。它是一种基于主从结构的通信协议,定义了一系列规范和命令格式,用于实现不同设备之间的数据传输和通信。本设计旨在开发一款12路车载超声波雷达系统,采用STM32F103作为主控制器,结合HC-SR04超声波模块实现距离测量。系统通过RS485接口和Modbus协议与外部设备通信,提供稳定可靠的数据传输和交互功能。
2024-05-27 22:48:59
687
原创 STM32系列(HAL库)——F103C8T6通过HC-SR04超声波模块实现测距
超声波是振动频率高于20kHz的机械波。它具有频率高、波长短、绕射现象小、方向性好、能够成为射线而定向传播等特点。HC-SRO4是一款尺寸完全兼容老版本,增加UART和IIC功能的开放式超声波测距模块,默认条件下,软件与硬件完全兼容老版本HC-SRO4;可以通过电阻设置成UART或IIC模式。2CM盲区,4.5M典型最远测距,2.2mA作电流。采用升级解调芯片RCWL-9206,带UART与IIC功能MCU:使其外围更加简洁,工作电压更宽(3-5.5V),接口功能更多。
2024-05-27 22:24:26
2335
原创 FPGA学习-VGA显示
一、VGA原理(一)VGA协议VGA(Video Graphics Array)是IBM在1987年随PS/2机⼀起推出的⼀种视频,具有分辨率⾼、显⽰速率快、颜⾊丰富等优点,在彩 ⾊显⽰器领域得到了⼴泛的应⽤。不⽀持热插拔,不⽀持⾳频传输。对于⼀些嵌⼊式VGA显⽰系统,可以在不使⽤VGA显⽰卡和计算机的 情况下,实现VGA图像的显⽰和控制。VGA显⽰器具有成本低、结构简单、应⽤灵活的优点。(二)VGA端口结构VGA端口是视频输出端口,端口一共包含15个管脚,如下图在通常使用的连接方法
2024-05-26 22:43:31
1130
原创 HLS入门-LED闪烁仿真
HLS(High-Level Synthesis)是一种硬件描述语言编程技术,它可以将高级语言(如C/C++)转换为硬件描述语言(如或Verilog),以便将其用于FPGA设计中。
2024-05-22 22:17:08
563
原创 基于Nios-II实现流水灯
在 C/C++ Projects 视图中右击 hello_led_0 工程文件夹,然后在弹出的快捷菜单中选择 Run As→Nios II Hardware 运行程序,也可以在菜单栏中选择 Run →Run Configurations,如下图所示。配置 Run Configurations,转到”Target Connection”标签栏,点击右侧的 Refresh Connections 将 USB-Blaster 加入,如下图所示.右键重命名为uart,并按图进行时钟线,复位线,数据线的连接。
2024-05-12 17:09:40
546
原创 Ubuntu20.04下OpenCV3.4.16的安装及使用示例
如果设置为一个视频的文件名,比如:man.mp4 ,则会将视频读取并循环显示每一帧。while 循环体中的 Mat 数据结构其实是一个点阵,对应图像上的每一个点,点的集合形成了一帧图像,有关 Mat 详解请看:OpenCV中Mat数据结构 语句:waitKey(30) ,中的参数单位是 ms 毫秒,也就是每一帧间隔 30 ms ,该语句时不能删除的,否则会执行错误,无法播放视频或录制视频。选择 “ USB控制器 ” ,将 “ USB兼容性 ” 设置为 “ USB 3.1 ” ,并点击确定。
2024-03-14 23:32:15
1567
原创 ROS话题与服务编程:控制小乌龟画圆,并且通过代码订阅小乌龟的实时位置并在终端打印
/赋值完毕后,发送到主题"/turtle1/cmd_vel"。//声明一个geometry_msgs::Twist 类型的对象vel_cmd,并将速度的值赋值到这个对象里面。//vel_pub会在主题"/turtle1/cmd_vel"(机器人速度控制主题)里广播geometry_msgs::Twist类型的数据。#include<geometry_msgs/Twist.h> //运动速度结构体类型 geometry_msgs::Twist的定义文件。//左右(+-) m/s。再在终端1运行画圆程序。
2024-03-14 22:53:56
1009
原创 ROS—话题、服务、动作编程
在learning_communication/src中创建DoDishes_server.cpp和DoDishes_client.cpp。//创建一个Publisher,发布名为chatter的topic,消息类型为std_msgs::String。//创建learning_communication::AddTwoInts类型的service消息。//创建一个名为add_two_ints的server,注册回调函数add()//创建一个client,请求add_two_ints_service。
2024-03-14 22:48:17
763
原创 Quartus-II13.1三种方式实现D触发器及时序仿真
填写工程名称根据使用的FPGA,进行选择芯片系列及类型直接Next完成工程创建,点击Finish。
2023-12-19 17:20:06
2905
1
原创 STM32F103C8T6移植uCOS基于HAL库
ifdef CPU_CFG_INT_DIS_MEAS_EN //如果使能了测量中断关闭时间。#ifdef CPU_CFG_INT_DIS_MEAS_EN //如果使能了测量中断关闭时间。#if OS_CFG_SCHED_ROUND_ROBIN_EN //当使用时间片轮转的时候。#if OS_CFG_SCHED_ROUND_ROBIN_EN //当使用时间片轮转的时候。
2023-11-30 21:06:13
938
原创 I2C总线通信协议及实操stm32通过I2C实现温湿度(AHT20)采集
IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps 以上。注意IIC是为了与低速设备通信而发明的,所以IIC的传输速率比不上SPII²C最重要的功能包括:只需要两条总线;
2023-11-12 15:54:21
386
1
原创 STM32字符串中断串口通信
main函数代码char c;//??s:??t:??//????int flag=0;//??0:????1.????//??????//?flag?1????????//?flag?0?????//??//???????1???????flagflag=1;//???????0???????//??????/***/
2023-11-01 17:53:20
106
1
原创 STM32中断串口通信
main函数代码char c;//??s:??t:??\r\n";//????int flag=0;//??0:????1.????//??1//??2//??//??????//?flag?1????????//?flag?0?????//??//???????0???????flagflag=0;//???????1???????flagflag=1;//???????
2023-10-28 15:46:14
102
1
原创 STM32外部中断模式控制灯亮灭
A4输出控制灯的亮灭,设置为GPIO_Output A1持续输出高电平,设置同上 A7持续输出低电平,设置同上 C13个人习惯开启做测试用,设置同上 B5模拟开关,设置为GPIO_EXTI5。
2023-10-27 19:27:08
83
1
原创 STM32F103C8T6寄存器方式实现LED流水灯
/PA5推挽输出,把第23、22、21、20位变为0010。//------------------------主函数--------------------------//----------------GPIOA配置寄存器 ------------------------//----------------GPIOB配置寄存器 ------------------------//----------------GPIOC配置寄存器 ------------------------
2023-10-16 22:21:34
379
1
原创 基于固件库的STM32LED流水灯
1.新建文件夹2.打开新建的工程文件夹,在文件夹下新建如下文件3、CMSIS文件夹下存放的文件如下其中startup中存放的文件为启动文件4、DOC文件存放客户说明文件 5、Libraries文件夹存放库文件 将路径:en.stsw-stm32054_v3-6-0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries 下的inc和src两个文件夹复制到新建的Libraries文件夹中。
2023-10-16 22:14:00
145
1
原创 Ubuntu、stm32下的程序内存分配问题(堆栈、局部全局变量等)
全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。
2023-10-05 19:08:47
61
原创 GCC编译器背后的故事
gcc -c hello.s -o hello.o # 用gcc进行汇编 as -c hello.s -o hello.o # 用as进行汇编。gcc hello.c -o hello # 动态链接 gcc -static hello.c -o hello # 静态链接。gcc -S hello.i -o hello.s #-S 使 GCC 在执行完编译后停止,生成汇编程序。gcc -c hello.s -o hello.o #-c 使 GCC 在执行完汇编后停止,生成目标文件。
2023-09-29 00:02:22
107
1
原创 Ubuntu18.04下用gcc生成.a静态库和.so动态库
创建一个文件夹test1,保存本次练习的文件。这步本人是在做完后才截图的,所以显示文件已存在。
2023-09-28 00:54:56
204
原创 关于对STM32F103系列芯片地址映射和寄存器映射的相关思考
相同点:一.都需要通过特定的寄存器或变量来进行数据传输和操作。二.对变量或外设的操作都需要使用特定的指令或库函数。三.对变量或外设的操作都需要考虑数据的读写顺序和正确性。差别:一. 对变量的操作是在内存(RAM)中进行,而对外部设备的操作是通过控制外设对应的寄存器来实现的。二. 对变量进行的操作通常只涉及到单个变量,而对外部设备的操作可能会同时涉及多个寄存器。三. 对变量进行的操作速度相对较快,而对外部设备的操作可能会有一定的延迟,需要考虑时序和时钟等问题。
2023-09-24 15:48:51
80
1
原创 ARM开发:使用MDK编译stm32简单程序(闪烁LED)
define LED0 MEM_ADDR(BITBAND(GPIOA_ODR_Addr,8)) //#define LED0 *((volatile unsigned long *)(0x422101a0)) //PA8 //定义typedef类型别名 typedef struct { volatile unsigned int CR;//粗略延时 void Delay_ms( volatile unsigned int t) { unsigned int i,n;
2023-09-21 23:24:49
328
原创 Proteus 51程序设计和仿真——流水灯
/51单片机编程常用的头文件 #include <reg51.h> #include <intrins.h> //延迟函数 void delay_ms(int a) { int i,j;Proteus和C51网上的安装包和教程很多,过程也比较简单,这里就不再赘述。
2023-09-21 20:58:56
2588
原创 Ubuntu系统下gcc和Makefile编译C语言程序
步骤一 命令:gcc -c sub1.c 作用:将sub1.c程序转换为目标文件sub1.o 步骤二 命令:gcc main1.c sub1.o -o main1 作用:编译main1.c文件为目标文件main1.o,然后链接sub1.o目标文件生成main1可执行文件 步骤三 执行./main1命令,即可执行编译生成的main1程序。使用devC++编译运行。
2023-09-15 20:03:02
145
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人