作为一个从机械转行到嵌入式的工程师,我深刻理解初学者面临的困惑。嵌入式领域分支众多,初期选择Linux还是单片机确实是个让人纠结的问题。我当年就在这个问题上纠结了好久,走了不少弯路。 其实,我之所以能在嵌入式领域站稳脚跟,很大程度上得益于正确的学习路径选择。正因如此,我最近录制了《STM32实战快速 ...
第十五章 GPTIMER实验 1)实验平台:正点原子DNESP32S3开发板 2)章节摘自【正点原子】ESP32-S3使用指南—IDF版 V1.6 3)购买链接:https://detail.tmall.com/item.htm?&id=768499342659 4)全套实验源码+手册+视频下载地址 ...
序 笔者在上网浏览时发现了这个项目[0]。刚好另一个DIY会需要对Attiny85进行烧写,并且感觉自己做一个USBasp来干这个事比较有趣,于是就买材料打板子准备DIY一个USBasp。这篇随笔是用来记录过程的,希望也能方便别的对此感兴趣的并且也想DIY的读者。 注意 笔者的电脑环境是Arch G ...
判断存储方式是大端存储还是小端存储 联合体(union)是C语言中的一种数据结构,允许不同类型变量共享同一段内存单元。通过覆盖技术实现内存复用,同一时间仅存储一个成员的值。用C语言可以判断存储方式。。 大端存储:低地址存储低字节 小端存储:低地址存储高字节 //判断是大端存储还是小端存储 //用户 ...
什么是ElasticStack ElasticStack早期名称为elk elk代表了三个组件 ElasticSearch 负责数据存储和检索。 Logstash 负责数据的采集,将源数据采集到ElasticSearch进行存储。 Kibana 负责数据的展示。类似Granfa 由于Logstash ...
作为一个在嵌入式领域摸爬滚打了好几年的老兵,我想分享一下我学习STM32的心路历程和方法论。坦白说,刚开始接触STM32时,我也是一脸懵逼。机械专业毕业的我转行做嵌入式,第一份工作被调剂到电子部门,实际却是做单片机开发,那段日子真是痛并快乐着。 最近我把这些年积累的STM32学习经验整理成了一个《S ...
基于Qt 5.13.2的高性能CAN通信实现方案 1. 环境配置与依赖 # Qt工程配置(.pro文件) QT += core gui widgets serialbus CONFIG += c++17 LIBS += -lsocketcan # Linux平台需安装libsocketcan 2. ...
读写锁 对于互斥锁而言,凡是涉及临界资源的访问一律加锁,这在并发读操作的场景下会大量浪费时间。要想提高访问效率,就必须要将对资源的读写操作加以区分:读操作可以多任务并发执行,只有写操作才进行恰当的互斥。Linux系统就提供了一种读写锁。 (1)读写锁的初始化 pthread_rwlock_t rwl ...
总线单极性步进电机扩展板采用紧凑型设计,兼容XIAO系列主控板直连或独立使用,支持级联16个模块。板载ULN2003达林顿管驱动芯片(单通道500mA/整片2.5A),可适配28BYJ-48等5线4相步进电机(5-24V宽压供电),提供单步/全步/半步三种驱动模式,配备双固态电容稳压、防反接保护和可... ...
串口通信 1.0 电平通信标准(物理层) 1.1 TTL 特点: 容易受到电磁干扰 传输距离短(板级设备间通信 <0.5米) 全双工通信 输出电平 1: 2.4V ~ 5V(3.3V) 0:0V ~ 0.4V 异常:0.4 ~ 2.4V 输入电平 1: 2.0V ~ 5V(3.3V) 0:0V ~ ...
线程的属性练习 设计一个程序,要求在程序中创建两条子线程,主线程创建一个线程的属性对象,并对线程的属性对象进行初始化之后,要求创建的子线程的属性设置为分离属性,子线程A输出”hello”,子线程B输出”world”,主线程创建子线程之后就终止。 #include <pthread.h> #inclu ...
高性能C#.NET HttpClient数据发送方案 为了实现高速数据产生环境下稳定可靠地向服务端发送数据,同时不影响数据源性能和界面响应,我将设计一个基于生产者-消费者模式的异步解决方案。 方案设计 核心组件 数据生产者:高速生成数据的模块 并发队列:作为缓冲区,解耦生产者和消费者 数据消费者:从 ...
作为一个本硕都学机械,却阴差阳错进入嵌入式行业的老兵,这个问题我能聊一整天。十几年前我还在工厂车间穿着工装和机床打交道,偶然接触到单片机后就一发不可收拾。 转行这条路我走得异常艰辛,踩过的坑比写过的代码还多。去年我终于把这些年的经验教训整理成了《STM32实战快速入门》(点击直达)课程,就是为了帮那 ...
示例位于 \examples\peripherals\gpio\generic_gpio 文件夹内 GPIO示例逻辑简单,直接看代码理解。 /* GPIO示例 此示例代码位于公共域(或CC0许可,由您选择。) 除非适用法律要求或书面同意,否则本软件按“原样”分发,不作任何保证或 任何形式的条件,无论 ...
目录一、概述二、官网地址三、安装部署1、官网2、Github下载四、基础设置1、比较方法2、高亮对比五、食用方式1、Ctrl+O打开2、比较结果3、校对/删除六、附配色方案对比 一、概述 WinMerge:免费开源的文件和文件夹比较工具,支持比较文件夹内容,能显示文件大小和日期的差异,还可基于正则表 ...
ARM Cortex-M3/M4初学习 0. 架构与核心特性 0.1 指令集架构 基于ARMv7-M架构,支持Thumb-2指令集(混合16/32位指令集) 基于哈佛架构,数据和指令分布存储在独立的空间中 0.2 流水线 三级流水线: 取值(Fetch) - 译码(Decode) - 执行(Exec ...
上一节:硬件 本节:软件实现 物理页帧管理 内核->空闲内存->物理页帧->分配->存放 可用物理页的分配和回收 Link文件中关于操作系统bin文件的内存设计 内容os\src\linker-qemu.ld: OUTPUT_ARCH(riscv) ENTRY(_start) BASE_ADDRES ...
PID算法及其优化 1. 经典PID公式 位置式PID公式 增量式PID公式 PID适用范围: 线性时不变低阶(二阶及以下)控制系统,当然可以通过一些优化来一定程度上解决非线性和将高阶系统简化至二阶以下 1.1 离散位置式PID公式 u(k) = P * error_now + I * error_ ...
背景:首次接触docker。 1、拉取镜像。 2、通过初始镜像开启一个容器,并将容器重新设置一个tag,查看容器,通过exec开启终端,注:docker名称必须是小写的,查看docker容器列表。 docker run -it 861b7388600f91f3a0b82a496821eeb88733 ...
WowKey命令行运维工具,Linux设备的自动化、批量化、标准化的运维解决方案,解放运维人,提升企业运维效率和质量。 有人能理解做设备的运营维护工作的痛苦所在吗? 如果你的运维工作中,只维护个位数数量级别的设备,那无所谓—— 通用的简单的远程人机交互式的设备登录,然后执行Shell 命令的维护方式 ...