自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux shell脚本

脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析指令并执行(它不需要编译)。此文件为Linux系统为每个用户设置环境变量,当用户第一次登陆时,该文件会被执行。系统的公共环境变量在这里设置,开始自启动的程序,一般也在这里设置。它接收用户输入的命令,并把它送入内核去执行,是一个命令解释器。①chmod +x xxx.sh(添加可执行权限) ./xxx.sh(执行脚本)自动执行:写到其他脚本中,利用脚本去调用。./xxx.sh 先按照#!可以手动执行脚本或自动执行脚本。

2023-12-17 13:49:36 443 1

原创 ubuntu交叉编译工具略讲

在 Linux 进行 C 语言开发,里面使 用 GCC 编译器进行代码编译,但是 Ubuntu 自带的 gcc 编译器是针对 X86 架构的!交叉编译器有很多种,我们使用 Linaro 出品的交叉编译器,Linaro 一间非营利性质的开放 源代码软件工程公司,Linaro 开发了很多软件,最著名的就是 Linaro GCC 编译工具链(编译器)。3、这个 GCC 编译器是编译 ARM 架构代码的,也就是编译出来的可执行文件是在 ARM 芯 片上运行的。1、它肯定是一个 GCC 编译器。

2023-12-16 11:20:24 474

原创 Makefile基础规则

由于 main 还不存在,因此第一条规则会执行,第一条规则依赖于文件 main.o、input.o 和 calcu.o这个三个.o 文件,这三个.o 文件目前还都没有,因此必须先更新这三个文件。最后一个规则目标是 clean,它没有依赖文件,因此会默认为依赖文件都是最新的,所以其对应的命令不会执行,当我们想要执行 clean 的话可以直接使用命令“make clean”,执行以后就会删除当前目录下所有的.o 文件以及 main,因此clean 的功能就是完成工程的清理。这是Makefile 的语法要求。

2023-12-16 10:40:38 443

原创 Linux GCC 编译流程

就是将汇编出来的多个二进制目标文件链接在一起,形成最终的可执行文件,链接的时候还会涉及到静态库和动态库等问题。就是展开所有的头文件、替换程序中的宏、解析条件编译并添加到文件中。是将经过预编译处理的代码编译成汇编代码,也就是我们常说的程序编译。GCC 编译器的编译流程是:预处理、编译、汇编和链接。就是将汇编语言文件编译成二进制目标文件。

2023-12-13 08:57:02 421

原创 嵌入式Linux必备命令

修改为:`df命令可以用来显示系统中磁盘分区的空间使用情况,可以显示磁盘分区的总容量、已用空间、可用空间等信息,可以用该命令来检查磁盘是否已满或需要清理垃圾文件。修改为:`free命令可以用来显示系统中内存的使用情况,可以显示系统总内存、已用内存、空闲内存等信息,可以用该命令来查看系统内存是否充足或内存泄漏的情况。`chmod`命令用于更改文件或目录的权限,可以授予或剥夺用户、群组和其他用户的读、写和执行权限。该命令需要两个参数:要更改权限的文件或目录的名称,以及文件或目录的权限参数。

2023-12-10 16:21:47 1032

原创 STM32DAC应用

第三个参数 DAC_LFSRUnmask_TriangleAmplitude 用来设置屏蔽/幅值选择器,这个变量只在使用波形发生器的时候才有用,这里我们设置为 0 即可,值为DAC_LFSRUnmask_Bit0。//使能DAC通道1。

2023-12-10 15:27:53 648

原创 STM32DMA应用

DMA全称Direct Memory Access,即直接存储器访问。简单来讲,它的功能是把数据从一个地址搬运到另一个地址。通常有三个传输方向,分别是内存到内存,内存到外设和外设到内存。直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。比如在串口接收或者发送时可以直接利用DMA将接收内容直接搬运到接收数组。或者利用DMA将准备发送的数据搬运到发送的缓冲区。

2023-12-10 11:41:32 910

原创 STM32AD多通道转换

看似简单但实际操作会遇到问题,问题一:扫描模式下,启动列表后,里面的每一个单独的通道转换完成之后不会产生任何标志位,也不会触发中断,无法知道某个通道是否转换完毕,只有在整个列表转换完成后才会产生一次EOC标志位,才可触发中断;还有一个方法,单次转换、非扫描模式基础上,在每次触发转换之前,手动更改下列表第一个位置的通道,比如第一次转换先写入通道哦,之后触发、等待、读值;

2023-12-10 11:04:07 512

原创 线程与进程

当然不是,多线程也有它的缺点、劣势, 譬如多线程编程难度高,对程序员的编程功底要求比较高,因为在多线程环境下需要考虑很多的问题, 例如线程安全问题、信号处理的问题等, 编写与调试一个多线程程序比单线程程序困难得多等等缺点,多进程编程通常会用在一些大型应用程序项目中,譬如网络服务器应用程序,在中小型应用程序中用的比较少。多进程编程的劣势:多个进程同时运行(指宏观上同时运行),微观上依然是轮流切换运行,进程间切换开销远大于同一进程的多个线程间切换的开销,通常对于一些中小型应用程序来说不划算;

2023-11-12 15:36:22 54 1

原创 CAN通信详解

CAN通信采用两根线路,CAN高和CAN低,通过差分信号进行传输。其传输速率高,通信距离远,最高可达1Mbps(距离小于40M),最远可达10KM(速率低于5Kbps)。同时,CAN通信具有错误检测、错误通知和错误恢复功能,保证了数据传输的可靠性。在实际使用过程中,为了调试和测试的方便,CAN总线的物理层通常会提供一些额外的功能。CAN通信是一种串行通信协议,由德国BOSCH公司开发,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。

2023-11-12 09:40:23 442 1

原创 通信方式分类

半双工通信:指可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替地进行。比如:RS485,IIC,CAN等。全双工通信:指通信的任意时刻,线路上存在A到B和B到A的双向信号传输。比如:UART,RS232,SPI等。单工通信:指发送端只能发送信息,不能接收信息,接收端只能接收信息,不能发送信息;比如:UART(通用异步收发器),CAN,单总线。并行通信:指一组八位数据一起发送,通常需要八条数据线进行传输。串行通信:指数据一位一位地发送,通常使用一条数据线进行传输。比如:SPI,IIC通信接口。

2023-11-12 09:12:43 267 1

原创 嵌入式控制系统常用的通信方式

以上是嵌入式控制系统中常见的通信方式,不同的通信方式适用于不同的应用场景,需要根据具体需求进行选择。

2023-11-12 08:42:05 642 1

原创 STM32HAL库和标准库的趋势

随着STM32芯片应用的广泛,对于高效、简洁、易用的库的需求也越来越高。STM32HAL库作为ST公司新推出的库,具有更高的抽象整合水平,更关注各外设的公共函数功能,便于定义一套通用的用户友好的API函数接口,可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库相比标准库,所用的API函数不一样,两者也相互独立,但HAL库的开发者无需关注底层的实现细节,从而提高了开发效率。相比之下,标准库虽然提供了更底层的接口,可以更好地控制资源的利用,但相对来说开发效率较低,且移植性较差。

2023-11-12 08:21:37 405 1

原创 STM32中断优先级判断

当两个中断的抢占优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果程序正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个。STM32中有两个优先级的概念——抢占式优先级和响应优先级,优先级判断是先判断抢占优先级,然后再判断响应优先级。具有高抢占优先级的中断可以打断具有低抢占式优先级的中断,即中断嵌套。

2023-11-06 21:38:48 644

原创 STM32可以跑Linux吗?

MMU是现代计算机操作系统中一个重要的组成部分,它能提高系统的稳定性和安全性。在内存管理方面,MMU通过页面表实现虚拟内存管理,当CPU发出一个虚拟地址时,MMU会通过页面表查找并将其转换为对应的物理地址。MMU是一种硬件模块,它位于中央处理器(CPU)内部,负责在CPU和内存之间实现虚拟内存管理。STM32有没有内存管理单元MMU,它负责虚拟地址到物理地址的映射。操作系统有两种 用MMU的 和 不用MMU的。CPU有两种 带MMU的 和 不带MMU的。不带MMU的有 Cortex-M系列。

2023-11-06 21:09:07 666

原创 Linux为什么会引入设备树?

因此引入了设备树文件,从而可精简一些臃肿的C代码。除此之外,.dts编译生成.dtb文件的过程要比.c编译生成驱动模块、加载驱动模块的过程要简单很多,也更方便我们进行开发。使用过platform_device结构体来描述led设备(硬件资源)。既然已经有了描述设备的方法了,为什么还要引入设备树呢?因为Linux内核中有很多BSP(板级支持包),不同的BSP会包含着不同的描述设备的代码(.c或.h文件)。随着芯片的发展,Linux内核中就包含着越来越多这些描述设备的代码,导致Linux内核代码越来越臃肿。

2023-11-05 17:06:34 134

原创 Linux描述设备两种方法

使用platform_device结构体来指定; 使用设备树来描述

2023-11-05 16:57:18 48

原创 什么是pinctrl子系统和gpio子系统

当pinctrl子系统配置引脚为GPIO模式后,才能用gpio子系统控制引脚。gpio 子系统是基于 pinctrl 子系统的,gpio 的 API 接口的实现很多都是基于 pinctrl 子系统的函数。pinctrl子系统 用于引脚的配置。如复用为哪种引脚(GPIO模式,I2C模式),电器特性等等。引脚有多种功能,引脚复用。GPIO只是其中一种模式。gpio子系统 用于引脚的控制。如配置输入输出,输出高低电平等等。

2023-11-05 16:52:02 48

原创 Linux驱动两种运行方式

第一种就是将驱动编译进 Linux 内核中,这样当 Linux 内核启动的时候就会自动运行驱动程序。第二种就是将驱动编译成模块(Linux 下模块扩展名为.ko)

2023-11-05 16:36:58 70

原创 标准接口与非标准接口

设备驱动框架为驱动开发和应用层提供了一套统一的接口规范, 譬如对 LED 类设备来说, 内核提供了 LED 设备驱动框架,驱动工程师编写 LED 驱动时,使用 LED 驱动框架来开发自己的 LED 驱动程序,这样做的好处就在于,能够对上层应用层提供统一、标准化的接口、同时又降低了驱动开发工程师的难度。所以在嵌入式系统中,很多硬件外设的驱动程序都是定制的。Linux 内核中为了尽量降低驱动开发者难度以及接口标准化,就出现了设备驱动框架的概念;一种设备类型,无奈只能把它归为杂项类。

2023-10-27 16:50:14 349 1

原创 Linux应用层对底层硬件操作方法

当然跟设备驱动具体的实现方式有关,通常情况下,一般简单地设备会使用 sysfs 方式操控,其设备驱动在实现时会将设备的一些属性导出到用户空间 sysfs 文件系统,以属性文。具体使用哪种方式需要根据不同功能类型设备进行选择,有些设备只能通过设备节点进行操控,而有些设备只能通过 sysfs 方式进行操控;但对于一些较复杂的设备通常会使用设备节点的方式, 譬如 LCD 等、触摸屏、摄像头等。⚫ /dev/目录下的设备文件(设备节点);⚫ /sys/目录下设备的属性文件。

2023-10-27 15:34:05 103 1

原创 LSM6DS3陀螺仪角度数据的读取

(1)调用lsm6ds3_device_id_get(&dev_ctx, &whoamI)函数读取设备ID可以验证模拟IIC是否成功。(1)imu芯片用的是IC_MIS_LSM6DS3TR。(2)在main函数里调用lsm6ds3_Get_Gyroscope();函数,效果如下图所示。初始化设置角加速度和角速度的分辨率分别是2g和125dps。(2)编写模拟I2C驱动,因为imu采用I2C通信。(3)对应的读写函数、打印函数、延时函数 的实现。设置数据输出频率833Hz。可以看得出有零点偏移。

2023-10-24 17:24:35 993 2

原创 “PL2303HXA自2012已停产,请联系供货商“ USB不识别

链接:https://download.youkuaiyun.com/download/weixin_49834395/88446422。RS485转串口 连接到电脑无法识别,显示“PL2303HXA自2012已停产,请联系供货商”。打开设备管理器,在端口(COM和LPT)中选择对应的USB COM口的旧版本驱动。

2023-10-19 19:59:44 2505

原创 Linux单片机与虚拟机网络通信之配置

2,设置uboot环境变量,确保ubuntu主机和开发板的IP地址在同一个网段内。2,Linux图形化界面设置网络 DNS服务器可以用计算机的。5, 网络重启:service network restart。3,ping ubuntu主机IP 是否可以ping通。3,ping baidu.com 是否可以ping通。1,查看计算机网络,将虚拟网络与以太网桥接。1,查看虚拟网络IP地址,子网掩码,网关。4,单片机启动时修改启动环境变量。

2023-10-16 18:52:02 275 2

卡尔曼滤波资料及仿真实现

卡尔曼滤波是一种用于估计系统状态的数学方法。它通过融合来自传感器的实际测量值和系统模型的预测值,以改善状态估计的准确性。卡尔曼滤波器通过递归地更新状态估计和协方差矩阵来实现。

2024-04-16

VL53L0X驱动文件,适配STM32F4

VL53L0X驱动文件,适配STM32F4

2023-12-09

51单片机外部中断实现

用外部中断来控制单个led的亮灭(按一次亮,按一次灭)

2023-12-09

51单片机精准定时/精准延时

用定时器精准控制一个led的亮灭,延时1s

2023-11-09

51单片机-秒表课程设计

(1) 最小时间为10ms加一次 加到100为1s; (2) 加到60是变为1分钟; (3) 按键功能 S1 开始计时; S2 停止计时; S3 清零; 要求:S3必须使用外部中断;

2023-11-09

stm32cubemx

版本win-v6-9-2

2023-11-09

17年电赛的板球控制系统 stm32f103代码

搭配openmv模块,项目很成功

2023-10-25

全国大学生电子设计大赛 stm32F103程序模板

MPU6050、IMU901陀螺仪、PID算法、滤波算法、PWM控制小车代码、编码器程序、定时器、OLED、矩阵按键、OPENMV数据接收驱动等等

2023-10-25

PL2303HXA自2012已停产,请联系供货商的解决办法

win10 Prolific USB-to-Serial Comm Port 串口驱动安装

2023-10-19

51单片机(STC89C52) 模拟带小数的计算器 代码

模拟计算器,可以计算小数

2023-10-17

51单片机(STC89C52) 模拟四路抢答器 代码

四路抢答器 其中主持人操控S5与S6两个按键。选手共四位,分别操控S1--S4中的一个按键。 当主持人按下抢答开始按键S5后,倒计时开始,计时10s。 此后最先按下按键的选手号码将显示与数码管上,并且蜂鸣器发出响声,后来按下的将无显示。 若十秒计时结束后,再按下按键也不会显示。 若主持人没有按开始键,就有选手抢答,则视为犯规。 此时犯规的选手号码将被显示于数码管上(最多显示三位犯规选手,不显示时间),同时,蜂鸣器一直发出长笛声报警 而当主持人按下清零键S6后,一切状态均恢复,可以开始新一轮的抢答。 按键和数码管功能简介 S5 抢答开始 S6 清零 S1--S4 分别为1到4号选手按键 数码管:两段显示时间 一段显现选手号码

2023-10-17

51单片机(STC89C52) 模拟电梯控制 代码

1.电梯 用矩阵键盘和数码管,完全模仿电梯,初始状态为1楼,电梯上的时候必须上到选定的最高楼层才能开始下,电梯下的时候必须下到选定的最低楼层才能开始上,所按的楼层要求停3秒,经过没按的楼层时显示1秒,八个数码管,前六个代表1-6楼,按中的楼层要显示,到达按中的楼层后,该楼层不显示,没选中的楼层不显示,最右边的数码管显示目前所在的楼层 电梯拓展: 1.选定的楼层再按一次取消 2.倒数第二个数码管可以显示现在的状态,上升(1)下降(7)还是停止(0) 3.电梯在运行的过程中可以再次选择要停止的楼层(上升状态是选择更高的楼层,下降是选择低的楼层)

2023-10-16

空空如也

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

TA关注的人

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