自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Ubuntu配置ROS2环境 & 使用串口通信

在myserial_pkg功能包中,setup.py中的console_scripts的方括号里添加节点。在myserial_pkg中的myserial_pkg文件夹下新建一个myserial_node.py。因为我MCU中运行了一个RTOS的队列串口打印,所以接收到的在windows上串口助手上是。当前终端运行myserial_node订阅者节点。在package.xml添加内容。

2025-02-26 22:06:22 407

原创 线程间通信

事件是一种同步对象,线程可以等待某个事件的发生,而其他线程可以通过触发事件来通知等待的线程。在 Linux 下,可以使用。屏障用于确保多个线程在达到某个点之前都被阻塞,然后再一起继续执行。在 Linux 下,可以使用。线程共享同一进程的地址空间,因此可以直接通过全局变量或堆内存进行通信。读写锁允许多个线程同时读取共享资源,但在写入时只允许一个线程操作。互斥锁用于保护共享资源,防止多个线程同时访问。信号量可以用于控制线程对共享资源的访问。

2025-02-25 10:11:51 276

原创 进程间通信中间件---ZeroMQ

ZeroMQ(也称为 ØMQ 或 0MQ)是一个高性能的异步消息传递库,专为分布式或并发应用程序设计。它提供了多种通信模式(如请求-响应、发布-订阅等),并且可以在多种传输协议(如 TCP、IPC、PGM 等)上运行。ZeroMQ 的设计理念是“消息队列”,但它并不像传统的消息队列那样需要单独的中间件服务器,而是直接嵌入到应用程序中。在我使用过程中感受到最直观的一点就是“

2025-02-22 23:16:25 1016

原创 移植Cherry USB

在usbd_initialize中需要填入USB寄存器基地址,busid填0,USB基地址在STM32F103中是。1.下载cherryUSB源码。cherryUSB使用MSC。

2025-02-21 12:01:30 408

原创 泰山派Linux环境下自动烧录脚本(EMMC 2+16G)

输入./download -h获取帮助信息 ,其中各个IMG/TXT烧录的地址和路径都在前几行修改即可。脚本名字: download.sh。

2025-02-04 21:53:13 328

原创 RK3566-移植5.10内核&Ubuntu22.04

记录了本人使用泰山派(RK3566)作为平台并且成功移植5.10.160版本kernel和ubuntu22.04,并且成功配置&连接网络的完整过程。

2025-02-04 16:56:05 3006 10

原创 ubuntu解决普通用户无法进入root

它会创建一个UID小于系统普通用户UID范围的账户,并且不会为这个用户创建同名的组(即用户的主组ID与用户ID相同)。4.重新编译rootfs,烧录,验证(或者在在当前界面使用 su - zhangqi ,这样也可以进入@zhangqi用户,尝试sudo)将@zhangqi 和ROOT一样的权限,如果sudoers不可修改,使用chmod +w /etc/sudoers 添加修改权限。是Bash shell的路径,这意味着该用户登录后将使用Bash作为其默认shell。,也会为用户创建主目录。

2025-01-26 18:35:54 828

原创 网络通信---MCU移植LWIP

通过在MCU上部署LWIP实现ping响应

2025-01-20 19:57:38 1362 2

原创 为ARM64架构移植Ubuntu20.04换源的发现

解决了ubuntu更换国内源之后无法使用apt的问题

2025-01-14 18:14:28 712 2

原创 Cortex-M --- 中断向量表

在执行中断服务程序之前,CPU通常会保存当前的上下文(如程序计数器和其他寄存器的值),以便在中断处理完成后能够正确返回到中断发生前的状态。可以看到在M4内核的中断向量表中共包含了91+4,默认情况下95个中断优先级,而且需要注意的是中断优先级可以是负数,例如在这里REST中断的优先级就是-3,秉承优先级数字越小,优先级越高的道理,而且从程序运行的顺序就可以看出确实是这样,在 MCU启动过程中,在获取到SP指针,指向堆栈顶部,然后使得PC指针指向复位中断的入口(在这里是。总线错误中断((BusFault)

2024-09-04 09:11:36 1392 1

原创 FreeRTOS线程同步2---队列集 & 任务通知

通讯对象可以发送事件或数据从中断到任务,或从任务到中断,但是由于任务通知依赖于任务控制块中的两个成员变量,并且中断不是任务,因此任务通知功能并不适用于从任务往中断发送事件或数据的这种情况,但是任务通知功能可以在任务之间或从中断到任务发送事件或数据。当通讯对象处于暂时无法写入的状态(例如队列已满,此时无法再向队列写入消息)时,发送任务是可以选择阻塞等待接收任务接收,但是任务因尝试发送任务通知到已有任务通知但还未处理的任务而进行阻塞等待的。如果读取任务因读取队列集而被阻塞,那么队列集将解除读取任务的阻塞。

2024-09-02 15:25:07 992

原创 FreeRTOS线程同步1---信号量

信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。其中,“同步”指的是任务间的同步,即信号量可以使得一个任务等待另一个任务完成某件事情后,才继续执行;而“有序访问”指的是对被多任务或中断访问的共享资源(如全局变量)的管理,当一个任务在访问(读取或写入)一个共享资源时,信号量可以防止其他任务或中断在这期间访问(读取或写入)这个共享资源。

2024-09-02 14:39:24 517

原创 FreeRTOS线程数据传递---消息队列

在我最初使用任务之间信息的传递/同步的时候使用的都是一整个全局变量,或者一堆结构体,但是这样不仅会使得任务之间的调试变得困难,需要连续跳转多个文件,另一个很大的弊端是会很大程度增大不同任务之间的耦合度,使得单独测试某个模块变得困难。使用消息队列能够使系统更加健壮、灵活并且容易管理,消息队列也可以使得消息的顺序得以保留,并且在高峰期使得消息有足够的缓存空间。然而,引入消息队列也会增加系统的复杂性,因此在设计时需要权衡其带来的好处与额外的复杂性。流”,这里的“沟通交流”就是消息传递的过程。

2024-09-02 14:25:06 1157

原创 FreeRTOS指南 -- 基础知识

在多任务系统中,相同优先级的任务各自运行一段及短的时间(时间片调度),高优先级的任务可以抢占低优先级的任务的CPU控制权(抢占式调度),有了优先级的多任务系统,用户可以将紧急事务放在优先级高的地方,大大提高了任务响应的实时性。单任务系统的方式,框架是在main( )函数中循环的处理,实时性差,在大循环中再紧急的函数没轮到只能等着,虽然在中断中处理一些紧急任务,但是在大型嵌入式系统中,这样的单任务系统就会显得力不从心。,即 0 是最低的优先级,这与常见的中断优先级规则相反。正在运行的任务的状态;

2024-09-02 11:22:09 386

原创 S32K144 CAN使用

S32K144是恩智浦半导体推出的一款高性能微控制器(MCU),主要针对汽车和高可靠性的工业应用。在汽车工业应用中使用CAN总线必不可少。

2024-08-07 16:48:24 2639

原创 S32K144常用外设函数(SYS,TIMER,GPIO,PWM,ADC,EXTI)

在工程开头,用于初始化时钟和初始化自动配置的GPIO。

2024-08-02 16:22:42 319

原创 Linux进程间通信(IPC)

这是指在同一进程内的多个线程之间进行数据交换和信息传递的过程。由于线程共享相同的进程地址空间,它们可以访问相同的内存区域,但为了确保数据的一致性和防止竞态条件,通常需要同步机制,比如。进程间通信方式是操作系统为用户提供的进程之间实现数据通信的方式,因为进程之间具有独立性,无法直接通信。各进程都使用的是自己的虚拟地址空间,无法通过同一地址访问同一块内存。(本质是内核中的一个计数器,主要实现进程间的同步与互斥,对资源进行计数)(匿名管道:只能用于具有亲缘关系的进程,命名管道:任何进程)

2024-07-24 16:35:20 283

原创 STM32-寄存器DMA配置指南

填写需要被传输到的存储器地址,注意这里ADC使用了3个通道,所以存储的数据类型应该是在数组里,所以需要填的是数组的第一个数据的指针,并且需要在DMA传输过程中存储器地址自增。这里使用DMA传输ADC1的数据,查看ADC1的数据地址为(uint32_t)(ADC1->DR)每次传输之后相应的计数寄存器都做一次递减操作,直到。在 DMA_CCRx 中配置数据的传输方向、循环模式、外设和存储器的增量模式、外设和存。储器的数据宽度和传输一半产生中断或传输完成产生中断的设置。当前传输的为3个数据,最大为65535。

2024-07-24 14:38:22 1273 1

原创 STM32-寄存器ADC配置指南

在STM32F中,有12位,10位,8位,6位ADC供电要求为 2.4V~3.6V。

2024-07-24 11:47:02 2483

原创 STM32-寄存器时钟配置指南

可以看到STM32的时钟启动方案是在SystemInit中,首先开启了快速易用的HSI作为系统时钟,并且关闭了所有中断,关闭了HSI14,之后在SetSysClock中重启PLL选择了HSE作为系统时钟。初始化的后期启用HSE并使用PLL来进一步提高系统时钟频率,这种方案有几个明显的好处:

2024-07-23 17:19:05 1318

原创 TCP三次握手和四次挥手的理解

介绍了TCP协议中的三次握手和四次挥手及其意义

2024-07-23 14:09:39 465

原创 Ubuntu 下修改字符模式的分辨率

Ubuntu 14.04 13.10修改字符界面分辨率,字体大小 - 行走的思想 - 博客园 (cnblogs.com)

2024-06-23 00:08:49 189

原创 Linux常用线程函数

在C语言中, pthred库允许创建,同步,控制和管理线程。线程是一个轻量级的进程,是进程中的一个可执行流。包含的头文件为常用的函数原型为。

2024-06-15 21:36:03 559

原创 Linux常用进程函数

wait函数会阻塞调用进程,直到一个子进程结束,当子进程结束时,调用进程获得子进程的退出状态,并且子进程的资源被释放。退出码0表示程序正常退出,没有错误发生。非零退出码表示程序异常终止,具体的码值有不同的含义。进程终止函数,exit()比_exit()多了个清理IO,调用退出函数的步骤,对于系统长期运行更健康。用于等待一个子进程结束,并获取子进程的退出状态,成功返回子进程PID,失败返回-1。这些判断可以直接放在wait()后面用来查看子进程退出的原因。通过获得status获得子进程的退出状态。

2024-06-15 17:30:42 315

原创 Linux常用文件函数

表示截断,如果文件存在,并且以只写、读写方式打开,则将其长度截断为0。:表示追加,如果原来文件里面有内容,则这次写入会写在文件的最末尾。:表示如果指定文件不存在,则创建这个文件。

2024-06-14 19:41:45 173

原创 Linux下的各个目录及其作用

进入根目录,使用ls查看所有文件。

2024-06-05 23:27:18 250

原创 基于CH32V307的以太网(ETH)使用记录

至此,完成了以太网了 初始化-连接-收发数据。

2024-05-22 10:40:09 3138 1

原创 [Linux] 驱动IIC外设——MPU6050

使用Linux开发板有时不只需要在内部操作,还有大部分情况需要与外界传感器进行交互,在这篇文章为大家交流使用IIC与外界设备交互。

2024-05-13 17:16:29 429 1

原创 [Linux] 串口读写

可以使用cat来读取串口中的数据,如cat /dev/ttyS3,注意 在这里使用cat的时候串口会回显输入的数据,例如我在这里串口输入 123 ,注意点发送新行。也可以读取数据并保存到txt文本文件中,如cat /dev/ttyS3 > test.txt,这里不演示。读取函数为 read(fd,&readbuf,sizeof(readbuf));设置串口的属性为115200,校验位等都是通过这个命令设置。可以直接操作串口1/3,在这里使用串口3。通过串口输入内容会通过串口返回。ls 查看当前文件夹文件。

2024-05-11 13:51:31 1969 1

原创 [Linux] 使用开机延迟sh脚本自动输出IP地址

使用串口查看开机后的ip地址

2024-05-10 15:44:54 682 1

原创 [Linux] Ubuntu使用SSH远程登陆

使用Win10通过局域网和泰山派相互建立连接达到使用Win操作Ubuntu的目的。

2024-05-06 19:17:52 396

原创 [以太网] STM32使用ETH 移植lwip

这里我直接贴出我移植好的使用STM32F407VET6移植的lwip。

2024-05-06 11:16:16 307

原创 [以太网]-lwip网络编程协议

由lwip掌握,该层由TCP / UDP 作为传输协议,对于这两协议,区别是TCP是可靠的,当数据传输错误会重新发送,UDP是不可靠的,不会重新发送接收错误的数据,在数据需要分包的时候,TCP只能在传输层分包,而UDP在网络层分包。由lwip掌握,无OS只能使用RAW接口,有OS的使用RAW/netconn/socket接口,主要的作用是把数据递交到传输层。,他们相同的特性是都支持10/100Mbit/s传输速率,都符合IEEE协议标准,不同的是,对于。,MII的引脚是16个,RMII引脚是9个,对于。

2024-05-04 20:19:16 214

原创 [Linux] Ubuntu实机下控制GPIO

该图为泰山派的IO口空间分配列表,此次要控制的IO口为GPIO1的PA4。

2024-05-03 21:25:11 2116 4

原创 CAN通讯协议详解[2]

CAN传输波特率的计算和配置

2024-04-29 20:12:29 356

原创 CAN通讯协议详解[1]

CAN总线--总线构成及其报文类型详解

2024-04-28 22:29:47 2025

原创 使用全H桥调节大功率电机的一些总结

本次使用的电机驱动是大功率全桥驱动BTS7960,最大调节频率为25KHZ,使用的电机为新永泰GA32Y-31Z直流编码器电机,电压12-24V,功率24W,最大扭矩100KG/CM。在本次调节PWM测试中发现在启动过程中的电机噪音较大,类似于电感声音,故排查,最终的结果为PWM所在的定时器预分频过高,导致电机PWM带宽过大,电机类似于一卡一卡,导致的噪声原本的预分频为720-1,自动重装载值为1000-1,故电机调节频率为PWM调节频率过低导致的噪声。现修改预分频值为4PWM频率变为18KHz。

2024-04-24 14:17:48 884

原创 大尺寸智能车的CAN驱动控制器制作(一)

本驱动板使用8个半H桥BTS7960驱动,使用CAN接口于车体主控制器通讯,最大承受电压48V 电流20A ,主控为STM32F103VET6,电机控制频率为18KHz,CAN通讯芯片为TJA1042T,全驱动板6-24V宽电压供电,采用24V降5V,5V降3.3V的方案供电,其中经过AMS1117作为降压芯片,可以有效降低主控损毁几率。在这里可以看到555电机相比于其他电机的功率大很多,所以需要大功率的电机驱动,在以往的电机驱动选型中选择了TB6612,L298N等小功率电机驱动。

2024-04-24 13:37:18 354

原创 蓝桥杯综合实训平台 使用AIP15F2K61S2/STC89C52 DS18B20温度传感器使用

这样可以让单片机避免很多浮点运算,而且数码管显示也会很简洁很方便。其实,在之前的蓝桥杯单片机比赛中,只要求大家显示整数部分而已。DS18B20以16位带符号位扩展的二进制补码形式读出。温度数据变量T_dat为16位无符号int整型,初始值为。即 T_dat = 0x0019 = 25 摄氏度。【12】判断读取结果的符号,进行正负温度的数据处理。即 T_dat = 0x0019 = 25。,即0x06 × 0.625 = 3.73。因为 T_dat 是整型。...

2022-08-08 12:06:13 1932

原创 蓝桥杯综合实训平台 使用AIP15F2K61S2/STC89C52 实训1

在训练平台上,用于本地和远程控制现场灯光的开关,并通过串口远程读取工厂的系统运行时间。

2022-08-07 16:55:41 253

空空如也

空空如也

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

TA关注的人

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