自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解决linux下wps缺失字体的问题

接着,解压缩下载的压缩包,将所有字体文件放入“/usr/share/fonts/truetype”目录下。Linux系统默认只装载了一部分常用字体,为解决WPS缺失字体的问题,可以安装更多的字体包。与此同时,ttf-mscorefonts-installer还将自动安装字体,并更新字体缓存。接着,在终端中输入命令sudo fc-cache就可以更新字体缓存了。这是最简单的解决方案。这将安装中文字体包到Linux系统当中,可通过“选项/字体”启用。在WPS当中在“选项/字体”中启用Windows字体即可。

2024-01-25 22:08:09 5462 2

原创 运行IDF安装脚本报错KeyError: ‘idfSelectedId‘和 env: “idf.py“: 权限不够

在使用乐鑫IDF搭建开发环境,执行./install.sh报如下错误。1、删除~/.espressif/idf-env.json文件。2、重新运行安装脚本。

2023-04-05 17:52:48 948

原创 Ubuntu VS Code 每次修改文件时提示需要超级管理员权限问题

解决 Ubuntu中 VS Code 每次修改文件时提示需要超级管理员权限问题

2023-02-05 00:35:27 621

原创 uboot下使用nfs下载失败,一直“Loading: T T T T”

uboot下使用nfs下载失败解决办法

2023-01-11 00:10:48 1785 5

原创 Ubuntu进不去图形化界面的解决方案

ubuntu进入不了图形化界面的解决方案

2022-12-18 18:03:39 2990 2

原创 dpkg: 错误: 另外一个进程已经为 dpkg frontend 加锁

ubuntu18.04 安装软件遇到以下错误dpkg: 错误: 另外一个进程已经为 dpkg frontend 加锁依次执行以下命令即可sudo rm /var/lib/dpkg/updates/*sudo apt-get updatesudo apt-get upgrade

2022-04-03 12:19:16 1493

原创 cjson注意事项

申请了内存没有释放 造成内存申请失败,下面记录下使用的注意问题(1)使用root = cJSON_Parse(text);将字符串转成json格式,函数中申请了一块内存给root 所以在最后要释放root,使用 cJSON_Delete(root); 释放cJSON_Parse()分配出来的内存空间(2)使用out = cJSON_Print(root);(含有cJSON_PrintUnformatted函数)函数将json数据转成字符串,这个函数内申请了一段内存给out,所以使用完out后也

2021-12-21 13:55:26 4247

原创 使用cJSON库构造JSON

一、构造简单的JSON字符串1. 数字cJSON库函数://在对象中添加数字CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number);2. 字符串cJSON库函数://在对象中添加字符串CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, con

2021-12-14 09:51:06 2570 2

原创 使用cJSON库解析JSON字符串

一、四个常用的cJSON函数: 1 cJSON *cJSON_Parse(const char *value); 作用:将一个JSON数据包,按照cJSON结构体的结构序列化整个数据包,并在堆中开辟一块内存存储cJSON结构体返回值:成功返回一个指向内存块中的cJSON的指针,失败返回NULL2 cJSON *cJSON_GetObjectItem(cJSON *object,const char *string); 作用:获取JSON字符串字段值返回值:成功返回一个指向cJSON类型的结构

2021-12-13 18:38:08 2487 1

原创 使用printf进行宏定义

#include <stdio.h>#include <stdlib.h>#define DEBUG_ON #ifdef DEBUG_ON #define DEBUG(fmt, args...) printf("[FILE = %s][FUNCTION = %s][LINE = %d] ["fmt"]\n",__FILE__,__FUNCTION__,__LINE__,##args)#else #define DEBUG(fmt, args...) do{

2021-10-11 10:01:34 1838

转载 解决keil5编译出现 Could not create/access path...

从别人那里拷贝过来的工程,keil编译遇到下面问题:解决方法:魔术棒里面listing的设置改一下就可以了,修改方法如下:

2021-09-28 17:07:00 1141 1

原创 软件模拟SPI接口程序代码(4种模式)

软件模拟SPI接口程序代码(4种模式)初始化代码/**SPI1 GPIO Configuration PA5 ------> SPI1_SCK PA6 ------> SPI1_MISO PA7 ------> SPI1_MOSI */#define SPI_SCK_PIN GPIO_PIN_5#define SPI_SCK_GPIO_PORT GP

2021-09-18 10:43:51 3347

原创 Linux进程之间的通讯(IPC)-- 信号

四 信号1. 信号概述对于 Linux来说,实际信号是软中断,许多重要的程序都需要处理信号。信号,为 Linux 提供了一种处理异步事件的方法。比如,终端用户输入了 ctrl+c 来中断程序,会通过信号机制停止一个程序。1.1 信号的名字和编号每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIO ”、“SIGCHLD”等等。信号定义在signal.h头文件中,信号名都定义为正整数。具体的信号名称可以使用kill -l来查看信号的名字以及序号,信号是从1开始编号的,不存在0号

2021-09-04 23:50:34 217

原创 Linux进程之间的通讯(IPC)-- 共享内存

三 共享内存1.特点(1)共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。(2)因为多个进程可以同时操作,所以需要进行同步。(3)信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问。2.共享内存的使用(1)头文件 #include <sys/shm.h>(2) int shmget(key_t key, size_t size, int flag);创建或获取一个共享内存:成功返回共享内存ID,失败返回-1,第二个参数是共享内存大小,其必须于兆(M)

2021-09-04 16:18:11 103

原创 Linux进程之间的通讯(IPC)--消息队列(MESSAGE)

二 消息队列(MESSAGE)●消息队列是存放在内核中的消息链表,每个消息队列由消息队列标识符表示。●与管道(无名管道:只存在于内存中的文件;命名管道:存在于实际的磁盘介质或者文件系统)不同的是消息队列存放在内核中,只有在内核重启(即,操作系统重启)或者显示地删除一个消息队列时,该消息队列才会被真正的删除。●另外与管道不同的是,消息队列在某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达。> 消息队列特点总结: > (1)消息队列是消息的链表,具有特定的格式

2021-08-31 16:01:40 736

原创 Linux进程之间的通讯(IPC)--管道

进程间通讯介绍(IPC):IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。一、管道1.无名管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。1.1 特点:(1)管道建立内核的内存中的,父进程与子进程退出后,这个管道就消失了,不会在磁盘中存在;(2)它是半双工的(即数据只能在一个方向上流动);(3)它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者

2021-08-31 10:42:57 224

原创 linux -exec簇函数

/** exec 函数族 *//** * exec 函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或 * 目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进 * 程的内容除了进程号外,其他全部被新的进程替换了。另外,这里的可执行文件既可以是二进制文件,也 * 可以是 Linux 下任何可执行的脚本文件。 * * 在 Linux 中使用 exec 函数族主要有两种情况。 *  当进程认为自己不能再为系统和用户做出任

2021-08-29 22:59:14 209

原创 Linux 文件编程

1.文件操作流程打开/创建文件 --> 编辑文档 --> 保存文档 --> 关闭文档2.函数使用2.1 文件打开/创建 open//函数原型:int open(const char *pathname, int flags);#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>int main(){

2021-08-24 17:18:51 80

转载 C 语言回调函数详解

IAP编程的实现办法实现IAP功能,需要在设计产品的时候编写两个程序,第一部分程序是不执行正常的功能的,只是通过某种通信方式(如USB、Uart)接收固件或新的应用程序,执行对第二部分代码的更新,我们称之为Bootloader;第二部分代码是用户的应用代码,实现产品的真正功能。第一部分代码必须事先烧写(通过烧录器或仿真器)到单片机内,第二部分代码可以通过烧录器或仿真器烧录,也可以使用第一部分的IAP功能烧录。当芯片上电后,首先运行第一部分代码,如果不需要更新,则跳转到第二部分代码执行;如果检测到需要更新

2021-07-27 14:50:29 195

原创 ubantu通过串口访问开发板(如:树莓派)

1、安装 ckermitsudo apt-get install ckermit2、编辑配置文件 vim ~/.mykermrc,写入以下内容:set line /dev/ttyUSB0set speed 115200set carrier-watch offset handshake noneset flow-control nonerobustset file type binset file name litset rec pack 1000set send pack

2021-07-25 21:32:02 719

转载 树莓派Linux源码配置

原文地址:http://nicekwell.net/blog/20171108/shu-mei-pai-nei-he-kai-fa-shuo-ming-xia-zai-dai-ma-bian-yi-ti-huan-nei-he.html

2021-06-27 22:53:48 158

转载 Linux内核源代码目录树结构

arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(CPU相关状态)。block:部分块设备驱动程序。crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。Documentation:关于内核各部分的通用解释和注释。dri...

2021-06-27 22:26:22 106

原创 合并多个HEX文件的方法

将 多个 HEX 文件(地址不重复,不相互覆盖)打开,然后按照地址先后的顺序复制粘贴,依次用后一个文件的内容替换掉前一个文件的最后一句,中间不留空行,最后一个文件的结尾作为新合成文件的结尾。这样生成的HEX就可以直接使用了。...

2021-05-06 16:45:11 658

原创 Keil生成bin文件

Keil自带了一个小工具,可以通过执行指令来将AXF文件转换为BIN文件,这就需要调用一个外部程序fromelf.exe来将AXF文件转换为BIN格式文件。fromelf.exe文件的位置在安装目录Keil\ARM\ARMCC\bin目录下。在工程配置菜单中,User选项卡,编译后执行的命令,设置为fromelf --bin -o "$L@L.bin" "#L",当然也可以使用上面那种绝对路径的方式,需要看指定fromelf文件的路径,输出BIN文件的路径和生成的AXF文件的路径。3种.

2021-04-27 20:14:47 342

原创 将float类型数据放到unsigned char类型的数组中

将float类型的数据放到数据中进行数据中转#include<string.h>int main(){ float temp1= 1254.42f; unsigned char temp2[8]; float temp3; memcpy(&temp2[4], &temp1, sizeof(float)); memcpy(&temp3, &temp2[4], sizeof(float)); pri.

2021-04-13 20:00:42 1481

原创 keil5编译遇到 Could not create/access path 问题解决方法

从别人那里拷贝过来的工程,keil编译遇到下面问题:解决方法:魔术棒里面listing的设置改一下就可以了,修改方法如下:

2021-04-12 11:37:28 1220 1

原创 树莓派交叉编译工具链的安装

1. 交叉编译是什么,为什么要交叉编译 ======================================是什么?======================================= 交叉编译是在一个平台上生成另一个平台上的可执行代码。 我们在windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在c51上面运行,不是在windows上面运行。 我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,...

2021-04-10 22:36:28 263

原创 解决keil编译错误 error: L6236E: No section matches selector - no section to be FIRST/LA处理方法

当keil 编译出现sct(7): error: L6236E: No section matches selector - no section to be FIRST/LA是由于没有加启动文件,双击左边工程框的文件夹,添加Startup开头的.s文件即可。(以stm32f429为例)这个问题是因为CUBEMX工程在中文目录下,全部切换到英文就没有个这个问题了,有趣的是,还自动生成了启动文件在项目目录内,但就是不在keil里面,只要将项目目录中的启动文件加到keil工程中就可以了。...

2021-04-07 16:05:03 16254 7

原创 STM32发送红外数据

1.定时器产生38kHz载波void MX_TIM3_Init(void){ TIM_ClockConfigTypeDef sClockSourceConfig; TIM_MasterConfigTypeDef sMasterConfig; TIM_OC_InitTypeDef sConfigOC; htim3.Instance = TIM3; htim3.Init.Prescaler = 0; htim3.Init.CounterMode = TIM_COUNTERMODE_U

2021-04-06 17:41:06 791

原创 STM32下载HAL库写的代码后ST-Link识别不到芯片,必须要按住复位才能下载

芯片为STM32F103C8T6,下进HAL库编写的工程后ST-Link就识别不到芯片了,下载也是,只有ST-Link读取时按住复位才可以。更神奇的是用标准库的代码却没问题,具体表象就是下进标准库的代码,然后HAL库的代码可以正常下载,但是HAL库的代码一旦下进去,标准库和HAL库的代码就都不能通过正常手段下载了。这很明显是软件问题。经过查资料得知,用cubemx配置的代码禁止了swd端口。解决方法:在【STM32CubeMX】中配置【SYS->Debug】为【Serial Wire】代码表现

2021-04-06 09:43:57 3758 7

原创 树莓派和电脑之间串口通信编程

前言参考博文https://www.cnblogs.com/lulipro/p/5992172.html1.wiringPi库通过调用树莓派自带的wiringPi库来实现串口通讯,查看树莓派是否已装wiringPi,使用gpio -v来查看,如已安装会显示内容如下:查看树莓派所有管脚gpio readall2.wiringPi库串口通信初次使用树莓派串口编程,需要配置,默认串口作为操作系统启动打印信息使用。1.修改 cmdline.txt文件 >cd /boot/>su

2021-03-28 23:25:48 374

原创 sudo vim xxx 报错Terminal entry not found in terminfo

1.打开或创建文件出现如下问题2.解决方法执行命令前使用 export TERM=xterm

2021-03-28 22:58:12 521

原创 树莓派和windows的FileZilla文件共享

1.在windows下安装FileZilla2.打开FileZilla软件输入需要连接的树莓派信息主机名称写sftp:// + 树莓派ip地址,例如sftp://192.168.43.123,因为使用的是ssh文件传输类型。树莓派用户名pi,密码raspberry,端口不用填写。3.文件传输通过FileZilla连接上树莓派后,就可以像在windows下一样,使用拖拽的方式将文件传输过去。...

2021-03-28 20:52:36 198

原创 树莓派图形界面xrdp方式登录

1.安装xrdpsudo apt-get install xrdp2.用windows自带软件“远程桌面连接”登录输入账号、密码登陆后界面如下在此界面上的操作就和ubantu一样。

2021-03-22 23:15:50 542

原创 树莓派更新源安装新版VIM

树莓派默认的源是国外的,apt-get 安装的时候失败,我们需要更新成国内的.1.编辑sources.list打开终端 输入sudo nano /etc/apt/sources.list用#注释或直接删除原有的内容,新增两条:deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi#deb-src http://mirrors.tuna.tsinghua

2021-03-22 22:09:26 294

原创 树莓派网络登录

1.通过串口登录树莓派后,输入如下命令sudo nano /etc/wpa_supplicant/wpa_supplicant.conf2.在文件中添加无线网配置信息:ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1country=CN network={ ssid="你的无线网名字" psk="密码" key_mgmt=WPA-PSK}

2021-03-22 21:37:03 170 1

原创 树莓派串口登录

1.修改系统配置,启用串口登录树莓派默认情况,树莓派的串口和蓝牙连接。想办法断开蓝牙连接,把串口用来数据通信1.1打开SD卡根目录的"config.txt"文件,将以下内容添加在最后并且保存。dtoverlay=pi3-miniuart-bt1.2然后再修改根目录的"cmdline.txt",将里面的内容全部替换成以下内容,以防万一,请先备份好这个文件的原内容。dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 ro

2021-03-22 21:01:27 684

原创 树莓派刷机

**树莓派刷系统**1.准备工作:1.1 读卡器1.2 SD卡1.3 树莓派镜像1.4 镜像烧录工具2.刷机步骤:2.1 下载树莓派镜像基于Ubuntu的树莓派镜像2.2 下载镜像烧录工具2.3 U盘修复用SD卡做过系统启动盘,插入电脑如果显示有两个盘boot(E盘)和U盘(F盘),需要先用电脑删除一个的磁盘管理功能删除一个盘,然后使用内存卡修复工具来修复SD卡。2.4刷机下载安装完成以后,将树莓派的SD卡取下来,插入到读卡器中,将读卡器插入到电脑中。打开下载好的Win32

2021-03-22 20:42:48 132

原创 UDP数据包最大传输长度

1.概念以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的。这个1500字节被称为链路层的MTU(最大传输单元).但这并不是指链路层的长度被限制在1500字节,其实这这个MTU指的是链路层的数据区.并不包括链路层的首部和尾部的18个字节.所以,事实上,这个1500字节就是网络层IP数据报的长度限制.因为IP数据报的首部为20字节,所以IP数据报的数据区长度最大为1480字节。而这个1480字节就是用来放TCP传来的TCP报文段或UDP传来的UDP数据

2021-03-17 10:56:30 9554 1

原创 解决在freertos中不能进行浮点计算的问题

freertos的移植文件用的fpu版本,开fpu后,任务调度的上下文切换处理内容会有区别,关闭FPU即可。

2021-03-11 11:42:59 1789 1

空空如也

空空如也

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

TA关注的人

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