自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 自制基于jlink的无线调试器

一.无线调试器说明许多单片机支持使用SWD与JTAG接口在线仿真调试,但很多场景下(如无人机、移动机器人),我们没有办法在设备运行的过程中将线缆插到设备上进行有线调试,这时候一个可以远程debug和查看曲线的无线调试器就显得非常重要了。市面上大多数(几乎100%)无线调试器都是基于开源的CMSIS-DAP协议再加上WIFI或2.4G射频等无线通讯模块制作的,代表产品是正点原子的高速/普速版无线调试器,这种方案的优点是:1.全开源,可控性强,社区力量强;2.若硬件软件完全自制,则成本很低。segger公

2021-02-25 20:59:03 7783 10

原创 在树莓派(Raspbian)上安装ROS Kinetic Desktop(无错版)

0.说明教程说明: ROS官网上有官方的教程:Installing ROS Kinetic on the Raspberry Pi,本教程是在其基础上,填了几处坑,使之可以顺利执行(第2.3和2.5节)。有一些地方变得详细,但也有一些地方做了简化处理,大家可以对照来看。安装环境: Raspberry Pi Zero W+Raspbian buster+32G TF卡。说明: 可用cat /etc/os-release命令查看Raspbian的版本。16G的TF卡理论上应该够用,但是比较极限,推

2020-09-13 09:46:28 2178 2

原创 PS4 + ESP32 制作无线遥控器

使用 PS4 和 ESP32 制作无线遥控器

2022-08-26 22:54:41 4098 10

原创 【PMSM】二. 经典电流环、速度环设计(下)

上一篇文章讨论了永磁无刷电机电流环、速度环的建模和控制器的参数整定,这篇文章会讨论前馈、滤波、抗饱和算法以及其他一些要注意的细节,且包含了大量工程经验。结合这两篇文章的内容,我们可以完整地使用经典 PI 控制器实现电机转速的控制。

2022-08-24 14:03:39 1618

原创 【PMSM】一. 经典电流环、速度环设计(上)

本篇文章使用经典的串级 PI 控制器控制永磁无刷电机的电流环和速度环,讨论了系统的建模和控制器的参数整定。一. 电流环设计电机电流环传递函数如下:电机的传递函数为 1/(R+Ls)1/(R+Ls)1/(R+Ls),RRR 和 LLL 分别为电机的相电阻和相电感。使用一阶低通滤波器对反馈电流进行滤波,其传递函数为 1/(1+Tfs)1/(1+T_fs)1/(1+Tf​s),其中 TfT_fTf​ 为滤波器的时间常数。采用 PI 控制器进行控制,串联型 PI 控制器的传递函数为 Kp(Ki+s)/sK_

2022-05-18 21:04:56 4441 1

原创 【ADRC】一. 线性跟踪微分器

跟踪微分器(TD,Tracking-Differentiator)由韩京清研究员在《自抗扰控制技术》中提出,是自抗扰控制(ADRC,Active Disturbance Rejection Controller)的一个重要组成部分。跟踪微分器最常见的用途是安排过渡过程,但它作为一种微分器,同样也可以提取含噪信号的微分、配置系统零点、引入相角超前等。下面我们从头来梳理一下跟踪微分器提出的过程。假如我们要提取一个信号的微分,最直接也是最简单的想法便是用 (R(n+1)−R(n))/dt(R(n+1)-R(n

2022-04-30 22:44:15 5239 2

原创 LCM通信库的安装及使用

一. 安装1. Ubuntu# 安装依赖# 必选sudo apt install build-essential libglib2.0-dev cmake# 可选,可根据使用的语言选择安装sudo apt install default-jdk python-all-dev liblua5.1-dev golang doxygen# 拷贝源码git clone https://github.com/lcm-proj/lcm.gitcd lcm# 编译并安装mkdir build &am

2022-03-18 10:50:42 8543 13

原创 Keil2Makefile:将Keil工程自动转化为Makefile工程

概述传统单片机开发环境是 Keil IDE,它为开发者提供了一套非常方便的开发环境,我们只需要进行很少的设置就可以完成单片机程序的编写、编译、烧录和调试。但 Keil 也有着过于陈旧、闭源和无法跨平台等缺点,用惯了 CLion、VSCode 等现代编译器很难再习惯 Keil;而且众多的开源软件都是使用开源编译链开发的,如果我们对开源编译链没有了解的话,很难上手众多的开源项目。众多的原因使我们放弃了 Keil IDE,转向 GNU Arm Embedded Toolchain 配上现代编辑器的方案。但不可

2022-03-18 00:39:59 4496 2

原创 Windows编译安装Eigen

1.版本说明平台:Windows 10编译器:mingw,gcc/g++ 8.1.0CMake版本:3.21.3Eigen版本:3.4.02.编译安装首先到 Eigen 的官网上面下载最新的源码,3.4.0版本的源码在这里。打开 cmake-gui ,where is the source code 处选择刚刚下载并解压的源码文件夹, 在之中新建一个 build 文件夹,在 where to build the binaries 处选择该文件夹。由于 cmake-gui 生成的默认安装路径有

2021-09-28 16:00:55 4245

原创 解决openocd无法识别jlink的问题LIBUSB_ERROR_NOT_SUPPORTED

一.解决方法当我们使用 openocd + j-link 进行烧录和调试时,会接收到这样的警告:Warn : Failed to open device: LIBUSB_ERROR_NOT_SUPPORTED,最后发现找不到 j-link:Error: No J-Link device found,尽管我们能使用 j-scope,j-flash 等工具,在 KEIL 中也可以正常识别 j-link 。在 SEGGER 的维基中提到了原因:In general, it is possible to u

2021-08-24 11:31:52 12155 4

原创 小新pro16安装双系统Ubuntu-20.04

一.说明作者也有过不少Ubuntu的安装经验,但是给新买的联想小新pro16装Ubuntu-20.04的时候,还是被各种问题弄的心态爆炸,包括进入Ubuntu黑屏,只有光标闪烁;找不到无线网卡;蓝牙无法连接;无法调节亮度;笔记本合盖就关机等等。在解决了大部分问题之后,写下这篇文章记录一下。在文章发布时,作者发现并解决了这些问题,随着时间的推移,很多解决方法可能不再适用,需要读者自行判断。二.软硬件配置CPU:AMD Ryzen 7 5800HGPU:Nvidia GeForce GTX 1650

2021-08-14 22:19:58 6303 18

翻译 Ubuntu-20.04永久修改DNS服务器

可以使用 resolvconf 工具来永久更改DNS服务器。首先运行下面两条指令,安装 resolvconf :sudo apt install resolvconf sudo systemctl enable --now resolvconf.service然后,编辑 /etc/resolvconf/resolv.conf.d/head 文件,并添加所需的DNS服务器(译者:即可以将下面的两句话复制进该文件):nameserver 8.8.8.8 nameserver 8.8.4.4最后

2021-08-13 21:52:47 6815 1

原创 2021计算机系统大作业 CSAPP&Hello‘s P2P

摘 要本文基于CSAPP和计算机系统基础课程中的内容,通过hello.c这一简单程序的生命周期,讨论了计算机中的预处理、编译、汇编、链接、进程管理、存储管理、IO管理等内容。关键词: 计算机;编译;进程;存储管理;IO管理目 录第1章 概述 - 6 -1.1 Hello简介 - 6 -1.1.1 Hello的P2P过程 - 6 -1.1.2 Hello的020过程 - 6 -1.2 环境与工具 - 6 -1.2.1硬件环境 - 6 -1.2.2软件环境 - 6 -1.2.3开发与调试工

2021-06-15 21:03:55 1204 6

原创 【VESC】一.配置开发环境、烧录固件

一.介绍VESC是一个开源的无刷电机驱动器,由工程师本杰明研发,最初应用于电动滑板,但是由于其出色的性能,也渐渐在其他领域得到了应用。由于VESC的固件是基于电动滑板这个应用场景开发的,所以如果我们想将其应用在其他领域,就需要对其源码进行二次开发,修改通讯协议或增添自定义的功能。本文章分别介绍了如何在Ubuntu和Windows下搭建开发环境和烧录固件。二.Ubuntu平台1.说明系统:Ubuntu-16.04若使用Ubuntu-20.04,则安装编译工具链时会比较麻烦,具体可参考这个提问

2021-03-14 21:49:53 9276 4

原创 利用ESP8266+ESPNOW实现多点无线通信

一.ESP8266简介ESP8266是乐鑫(Espressif)制作的WiFi芯片,可以将其理解为一块带有WiFi功能的MCU,就像是stm32一样,它也有GPIO、UART、SPI、I2C、I2S等硬件资源,它也可以跑RTOS等操作系统。基于乐鑫提供的ESP8266芯片,许多厂商设计了自己的WiFi模组,比较有名的是安信可(Ai-Thinker)的ESP系列模组,正点原子也制作了它自己的模组:ATK-ESP8266,除此之外还有非常非常多种类的WiFi模组,他们很多都是基于ESP8266芯片开发的。

2021-01-21 13:56:07 10034 12

原创 配置VMware令主机与虚拟机位于局域网同一网段

说明很多时候我们需要把主机和虚拟机配置到局域网同一个网段下,这样可以使一些在主机上运行的代理软件监听并转发来自局域网的流量,使虚拟机可以走主机的代理;也可以通过ssh连接到局域网内其他电脑中开启的虚拟机。所以这样的操作还是有很大意义的。下面我将分别在桥接模式和NAT模式中实现这一功能。桥接模式桥接模式下的设置比较简单,只需在虚拟机设置的网络适配器选项中将网络模式改成桥接模式即可,同时要复制物理网络连接状态。此时,我们可以查看一下虚拟机和主机的IP地址,看看是否成功。首先我们在windows下按下

2021-01-21 13:16:54 13713

原创 更新Cmake后出现CMake Error Could not find CMAKE_ROOT错误

截止到2020/8/14,在ubuntu-16.04中使用sudo apt install cmake安装的还是3.5.1版本的cmake,在ubuntu-20.04中则是3.16.3版本,而cmake官网上早已经更新到了3.18.1版本。很多时候,一些开源项目需要高版本的cmake才能编译,所以我们需要从源码编译安装cmake,这一步网上有非常多的教程。当我们跟着教程执行完sudo make install以后,使用cmake --version查看版本时,却会收到这样的报错:CMake Error

2020-08-14 01:00:39 9761 2

原创 修复grub-common.service错误

修复grub-common.service错误在使用apt upgrade或者apt install的时候,我遇到了下面这个错误:update-rc.d: warning: start and stop actions are no longer supported; falling back to defaultsFailed to start grub-common.service: Unit grub-common.service not found.invoke-rc.d: initscri

2020-08-14 00:04:56 1683

原创 在运行ubuntu-18.04的树莓派上播放声音

首先我们要在/boot/firmware/config.txt这个文件中加入dtparam=audio=on。 终端命令为:sudo nano /boot/firmware/config.txt。添加完之后,我们只需要重启树莓派就可以播放声音了。但是如果我们连接了显示屏,声音默认是从显示屏的播放出来的,如果想通过3.5mm耳机接口输出音频的话,我们需要进一步进行设置。首先我们要在我们的树莓派上安装raspi-config,作者是很久以前安装的,所以就不提供教程了,大家可以自行搜索。接着我们在终端输入

2020-05-30 20:24:54 1470

原创 rosdep init时website may be down解决方案

说明在安装ros的过程中,rosdep init失败是一个非常有名的问题,我们会收到website may be down的提示。作者来来回回安装了3次ros了,每次都要在rosdep init这一步卡很久,虽然作者并不懂这方面的技术,但还是决定将自己尝试成功的方法记录下来,下面我也会注明方法的来源。方法一:手机热点第一次安装ros时,尝试过同步时间和换源,但是都没有解决问题。stackoverflow上一个叫Xman的用户建议可以将网络切换至手机热点再进行尝试,我将网络从路由器切换至手机热点之后

2020-05-19 14:57:30 7140 13

原创 VMware虚拟机走主机代理

说明很多时候我们在主机上完成了代理的配置,为了我们在虚拟机上能够方便的进行研究,我们想让虚拟机也走代理。原理大概是让虚拟机和主机处于同一个局域网中,将虚拟机中的流量转发到主机上,这时主机的代理软件监听到局域网内的请求,就会把流量再转发到代理服务器中,实现科学地上网。(解释的可能不严谨)为了这一目标,我们需要在主机和虚拟机上进行一系列的配置,作者虚拟机中的系统是ubuntu,主机中的系统是w...

2020-05-06 18:43:15 74407 41

原创 51单片机printf重定向

从keil的帮助文档里我们可以看到,printf是基于putchar实现的,所以我们只要重新实现putchar,就可以实现printf的重定向,即可以将printf用在其他串口上。putchar的函数实现在…/C51/LIB下可以找到。#include <reg51.h>#define XON 0x11#define XOFF 0x13/* * putchar (...

2020-04-26 22:11:05 5121

原创 树莓派的蓝牙通讯(bluez、gattlib)

目录一.准备工作二.利用蓝牙工具进行调试三.编译使用gattlib一.准备工作我使用的蓝牙模块是大夏龙雀的DX-BT16,支持BLE4.2协议。树莓派的型号为4b,操作系统为64位的ubuntu-18.04。提前说明一下,因为我没有安装桌面,所以很多工具都需要自己手动安装。首先先创建一个root用户,方便以后的系列操作。下面的所有命令都是在root权限下进行的。sudo pa...

2020-04-26 21:59:34 4721 7

原创 STC单片机程序下载原理与自动下载

STC单片机程序下载原理和自动下载一.stc单片机下载程序的原理在stc单片机中有两个程序区:用户程序区和ISP监控程序区。这是STC89C52单片机数据手册中的内容。根据数据手册,我们可以知道,当冷启动或者对ISP_CONTR寄存器送入60H(STC12、15、8是对IAP_CONTR寄存器送入60H)产生复位以后,单片机会从ISP监控程序区开始执行程序。(高系列的STC有更多方式可以进...

2020-04-10 18:39:28 7887 4

原创 树莓派和单片机的蓝牙通信

首先运行sudo apt-get install bluez看看bluez是不是最新的版本。然后使用hciattach工具进行蓝牙的初始化hciattach /dev/ttyAMA0 bcm43xx 921600 noflow -再使用bluetoothctl工具打开蓝牙,并查询蓝牙的地址,同时可以尝试进行连接。最后别忘了要断开连接,不然用其他工具就无法再次连接蓝牙了。bluetoothct...

2020-02-29 10:32:08 1939

原创 PCB制作经验总结

[get it!助盲系统 pcb_V1.0]在制作项目的硬件部分的过程中,遇到了一些问题,也总结了一些经验,在这里记录一下。一.pcb和原理图库的创建1.在画板子的过程中,不断积累自己的通用封装库,除非是比较特殊的封装,不然不需要在工程中创建一个新的封装库。原理图库同理,除非涉及到某款具体的芯片,不然不需要额外创建新的原理图库,事实上,一些通用芯片的原理图也可以加入自己的通用原理图库中。...

2020-02-25 17:55:15 1218

原创 用vscode调试时报错"无法打开 'ioputs.c' "

分析错误,我们可以看到是缺少glibc库造成的,所以我们只需要在网上安装好相应的文件放到指定位置就可以了。sumkdir -p /build/glibc-OTsEL5cd /build/glibc-OTsEL5wget https://ftp.gnu.org/gnu/libc/glibc-2.27.tar.gztar -zxvf glibc-2.27.tar.gz注意要先获取sup...

2020-02-19 20:10:54 2298

原创 Linux和Windows平台的单片机串口通讯

1/Windows我们首先用串口调试助手进行串口通讯,再使用c语言编程进行通讯。windows上的串口调试助手我使用的是安信可串口调试助手http://wiki.ai-thinker.com/tools在单片机中写好串口通讯的代码,在串口调试助手中对应设置好串口号、波特率等参数,串口在win10下可以通过win+x—设备管理器—端口来查看。当然,最简单的方法是插拔串口,串口调试助手中多出来...

2020-01-31 11:23:06 684

原创 单片机利用串口打印变量进行快速调试

/*funtion:for quick debuggingexplanation: bps:9600 timer1:mode2 UART:mode1 switch:#define _DEBUG_(before #include"serve.h") remember to use uart_init before!*/#ifdef _DEBUG_#include&l...

2020-01-28 12:08:36 1962

原创 stc单片机自动下载程序原理和代码实现

1/stc单片机下载程序的原理首先我们要理解stc单片机下载程序的原理。在stc单片机中有两个程序区:用户程序区和ISP监控程序区。这是stc89c52单片机数据手册中的内容。根据数据手册,我们可以知道,当冷启动或者对ISP_CONTR寄存器送入60H产生复位以后,单片机会从ISP监控程序区开始执行程序。如果这时候检测到合法的ISP下载命令流(后面会说什么是ISP的合法下载流),则ISP...

2020-01-27 19:29:36 7278

原创 树莓派上安装ubuntu与vscode

安装ubuntu系统:1/首先去ubuntu官网(https://ubuntu.com/)上下载ubuntu系统镜像,这里我们需要下载的是ubuntu for iot版本的。https://ubuntu.com/download/raspberry-pi这是ubuntu官网教程,本系统支持raspberry pi 2、3、4。我们根据教程制作ubuntu启动盘。2/将SD卡插入树莓派开机后,...

2020-01-22 10:21:54 3456

转载 编程常用缩写

编程常用缩写

2019-12-12 00:01:16 315

原创 OJ上runtime error报错原因

除了老生常谈的那5条1、数组开得太小了,导致访问到了不该访问的内存区域2、发生除零错误3、大数组定义在函数内,导致程序栈区耗尽4、指针用错了,导致访问到不该访问的内存区域5、还有可能是程序抛出了未接收的异常作者还发现了有时候在OJ上开的数组过大(全局变量,在本地可以正常跑)会导致runtime error,需要注意。...

2019-12-11 23:58:56 4467 5

原创 AD Undeclared identifier: GetFontID 问题解决方法

111

2019-11-23 01:24:59 1506

原创 硬件调试方法总结

一.思考问题的方式1/是什么:首先要明确自己的问题是什么,要具体且有内容,通过接下来的调试和排查,一步步地缩小自己问题的范围,给出尽可能详细的问题描述。例如我最近在调试的PL2030给51系统板下载的问题,最开始我的问题是:为什么stc-isp烧录时无法检测到单片机?到最后深化为:电流倒灌导致单片机无法冷启动应该怎样解决?2/为什么:在这一步思考问题发生的原因,帮助我们深入问题,搞清楚”我的问...

2019-11-22 21:26:55 3438 1

转载 keil编译优化等级及查看汇编代码

keil优化等级修改:project->options->c51->Code Optimization Level其中0级(Constan folding)的优化包括:a、常数折叠:只要有可能,编译器就执行将表达式化为常数数字的计算,其中包括运行地址的计算。b、 简单访问优化:对8051系统的内部数据和位地址进行访问优化。c、 跳转优化:编译器总是将跳转延至最终目标上,因此...

2019-10-19 10:20:18 2145

原创 rtx51tiny笔记

1.task进入running状态后,task上的signal标志会自动clear

2019-09-28 10:51:41 411

原创 keil中报错可能出现的问题

1.subscript on non-array or too many dimensions数组和变量使用了相同的名字

2019-09-14 16:56:51 2215

原创 《C语言程序设计》笔记

1.转义字符:\a:警告声\b:退格,将当前位置移到前一列\f:换页,将当前位置移到下一页开头\n:换行,将当前位置移到下一行开头\r:回车,将当前位置移到本行开头\t:横向跳格,跳到下一个tab位置\0:字符串终止字符2.stdio是standard input/output 的缩写,即标准输入输出。有关输入输出的函数的格式均定义这里3.float 4个字节,double 8个...

2019-08-18 20:59:06 315

空空如也

空空如也

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

TA关注的人

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