
笔记收藏
文章平均质量分 52
北风企鹅
这个作者很懒,什么都没留下…
展开
-
Markdown图标
Markdown中增加图标,来自如下:https://gitcode.net/mirrors/zhouie/markdown-emoji?utm_source=csdn_github_acceleratormarkdown-emojiMarkdown语法支持添加 emoji 表情,输入不同的符号码(两个冒号包围的字符)可以显示出不同的表情人物自然事物地点符号人物:bowtie: :bowtie:😄 :smile:😆 :laughing:😊 :blush:.转载 2022-04-16 17:58:16 · 9490 阅读 · 1 评论 -
VScode+EIDE开发stm32
EIDE:Emdedded IDE一款适用于 8051/STM8/Cortex-M/RISC-V 的单片机开发环境。在 vscode 上提供 8051, STM8, Cortex-M, RISC-V … 项目的 开发, 编译, 烧录 等功能。1、所需环境:VScode https://code.visualstudio.com/ GNU Arm Embedded Toolchain (需要添加环境变量)https://developer.arm.com/tools-and-softwa.原创 2022-03-06 17:01:17 · 3154 阅读 · 3 评论 -
Win11 右键菜单风格修改为Win10模式
Win11 右键菜单,二级菜单真是不习惯,改为Win10右键菜单风格,简单好用原创 2022-02-20 09:35:26 · 7070 阅读 · 1 评论 -
Stm32 SRAM 启动方法
1、什么情况需要SRAM启动??调试阶段,需要频繁更新程序,可以SRAM启动,加快调试,减少flash擦写损耗程序SWD/JTAG接口已经配置为普通端口,程序启动后无法程序更新,可在SRAM中启动后,再更新flash程序程序已经开启了读保护,可在SRAM启动后,进行读保护关闭2、stm32 boot启动方式如下配置boot 为1:1,则可从SRAM内启动3、stm32f103c8t6 SRAM启动方法(HAL工程为例)KEIL工程配置RAM.ini 文件由于即便原创 2022-02-19 22:07:08 · 5242 阅读 · 1 评论 -
编译器优化等级简述
编译优化,会使编译器尝试以牺牲编译时间和调试程序的能力为代价,来提高性能或代码大小;合理的优化级别,能够在代码体积、执行性能、RAM占有率上获得均衡!https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html优化级别说明GCC优化级别有-O0、-O1、-O2、-O3、-Og、-Os、-Ofast总结如下:优化级别说明备注-O0关闭所有优化代码空间大,执行效率低-O1基本优化等级编译器在不花费太多编译时间基础上,.原创 2022-02-13 13:10:02 · 6851 阅读 · 1 评论 -
STM32F103实现CMSIS-DAP
CMSIS-DAP 提供了一种通过 USB 访问 ARM Cortex 微控制器的 Coresight 调试访问端口 (DAP) 的标准化方法。CMSIS-DAP 通常作为板载接口芯片实现,提供从开发板到一侧在主机上运行的调试器的直接 USB 连接,并通过 JTAG(联合测试行动组)或 SWD(串行线调试)到目标设备以访问另一台上的 Coresight DAP。CMSIS-DAP版本CMSIS-DAP 固件版本可以配置为两种不同的 USB 接口模式:版本 1 配置使用 USB HID 作为主.原创 2022-02-02 16:11:52 · 5647 阅读 · 1 评论 -
VsCode+OpenOCD 开发stm32系列
通常会用MDK调试stm32等arm cotex平台,但KEIL MDK很多商业公司是不能直接使用的,需要购买授权!VScode搭配gcc-arm-none-eabi编译工具链和openocd(Open On-Chip Debugger)实现编译、下载、调试!所需资源VScodehttps://code.visualstudio.com/MinGW64https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetti.原创 2022-01-16 14:26:55 · 13866 阅读 · 2 评论 -
stm32 BootLoader之检查栈顶地址是否合法
在stm32 IAP例程中,跳转到APP区的时候,都会检查栈顶地址是否合法,以及reset地址是否正确等信息,那么这些判断具体依据什么原理???以stm32H743为例说明↓↓↓↓检查栈顶是否合法代码如下:#define STM32_APP_BASE 0x08020000 // APP flash start addressvoid iap_jumpapp(void){ // 检查栈顶是否合法 if (((*(uint32_t*)(STM32_APP_BASE)) & .原创 2021-07-15 09:04:33 · 7550 阅读 · 3 评论 -
高速USB模式下 UAC2.0
UAC2.0 Win10原生驱动已经支持,同时UAC2.0较UAC1.0有天生的高带宽、低延时的优势。支持32bit 384k的音频格式,同时支持USB High Speed!stm32f407+USB3300 完美实现高速USB模式下UAC2.0调试为什么要在高速USB模式下调试UAC2.0???UAC1.0 不支持 32bit音频格式UAC2.0 在USB 全速模式下 ,96K@32bit播放和录制只能单独使用!!UAC2.0 在USB全速模式下,不能使用异步模式(linux 可以,但.原创 2021-07-04 21:26:41 · 4164 阅读 · 3 评论 -
USB声卡之时钟模式分析
USB音频声卡采用isochronous “等时传输模式”(或者同步传输、实时传输),能保证实时传输数据,允许一定误码率,出错不重传。等时传输模式实时传输,即 PC端发出多少速率的数据,USB接收端(USB声卡)就得接收多少速率。比如电脑发送44.1KHZ的,声卡就固定接收44.1KHZ。关于时钟同步电脑内有一个晶振,可分频出一个44.1KHZ,进行音乐播放。USB声卡自己得有一个晶振才能工作,它也可分频出一个44.1KHZ,供给I2S信号或DAC。问题来了,晶振是有误差的,这两个44.1.原创 2021-05-23 16:39:45 · 2628 阅读 · 0 评论 -
python之获取网络时间
通常获取网络时间是从ntp服务器获取,但是对时间要求精度不高的话,还有更加简便的方法,直接透过http访问http://time1909.beijing-time.org/time.asp请求 http://time1909.beijing-time.org/time.asp,返回格式如下t0=new Date().getTime(); nyear=2021; nmonth=4; nday=25; nwday=7; nhrs=16; nmin=46; nsec=24;用Pyt.原创 2021-04-25 16:52:59 · 3368 阅读 · 0 评论 -
Python之打包工具pyinstaller
windows环境下,python 源文件可以在命令行直接运行。那是否可以生成独立的exe应用程序呢??当然!pyinstaller工具可将 Python 程序生成 EXE 程序。pyinstaller安装(默认该工具并没有被安装)F:\json_parser>pip install pyinstallerCollecting pyinstaller Downloading pyinstaller-4.3.tar.gz (3.7 MB) |████████████████.原创 2021-04-20 16:13:58 · 437 阅读 · 0 评论 -
linux之查找指令
Linux whereis命令用于查找文件。该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。-b 只查找二进制文件eric@eric-PC:~$ whereis -b psps: /bin/pseric@eric-PC:~$ eric@eric-PC:~$ whereis -b arm-linux-gccarm-linux-gcc: /usr/.原创 2021-04-19 18:30:43 · 217 阅读 · 0 评论 -
交叉编译工具简说
交叉编译,通俗地讲就是在一种平台上编译,在另一种平台上运行比如在PC平台(X86 CPU)上编译ARM平台上的程序,最终放到arm平台上运行。交叉编译工具命名规则为:arch [-vendor] [-os] [-(gnu)eabi]项目说明arch体系架构,如ARM,MIPSvendor工具链提供商OS目标操作系统eabi嵌入式应用二进制接口(Embedded Application Binary Interface)ABI 和 EABI.原创 2021-04-19 18:14:00 · 604 阅读 · 1 评论 -
python之修改pip默认install路径
windows 环境下,Python pip 安装库的时候,默认安装在c盘,比如C:\Users\eric\AppData\Roaming\Python\Python37\site-packages可以修改默认的安装路径,方便统一管理查看目前默认安装路径F:\>python -m sitesys.path = [ 'F:\\', 'D:\\Programs\\Python\\Python37\\python37.zip', 'D:\\Programs\\Pyth.原创 2021-04-19 16:12:16 · 9930 阅读 · 2 评论 -
常用Makefile改进版2
在之前的makefile基础上进一步改进,使生成的obj文件和目标文件,统一放置指定的build目录里面,方便管理,同时代码结构更加清洁。代码结构eric@eric-PC:~/Documents/work/linux-c/main_test$ tree.├── Makefile # 顶层Makefile└── src # 代码源文件目录 ├── curl_api # 模块代码一 │ ├── curl_demo.c │ ├── curl_.原创 2021-04-05 16:16:45 · 186 阅读 · 0 评论 -
Cmake之构建Project
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件示例文件结构eric@eric-PC:~/Documents/work/linux-c/cmake_demo$ tree.├── build.sh # 一键编译脚本├── CMakeLists.txt # 顶层一级CMakeLists.txt└── src # 源码目录 ├── CMakeLists.txt #.原创 2021-03-31 15:56:30 · 1150 阅读 · 1 评论 -
mongo-c-driver编译测试
克隆源码https://gitee.com/mirrors/mongo-c-driver.giteric@eric-PC:~/Documents/work/linux-c/mongo-c-driver$ lsbuild CONTRIBUTING.md generate_uninstall orchestration_configs THIRD_PARTY_NOTICEScmake_build COPYING lldb_bson.py .原创 2021-03-03 11:56:13 · 259 阅读 · 0 评论 -
Mongodb(芒果DB)之服务搭建
SQL (Structured Query Language) 数据库,指关系型数据库。主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)。NoSQL(Not Only SQL)泛指非关系型数据库。主要代表:MongoDB,Redis,CouchDB。什么是NoSQL?NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。(例如谷歌.原创 2021-03-03 11:18:34 · 834 阅读 · 0 评论 -
winform之ip地址控件textBox
C# winform 显示编辑ip地址,无需重绘textBox或者重写textBox方法,只需要在原生textBox控件对应事件中实现对应的算法即可。1、textBox keyUp事件private void textBoxKeyUp(object sender, KeyEventArgs e){ if (e.KeyCode == Keys.Back) return; String text = textBoxIP.Text; string[] sub.原创 2021-02-23 19:50:18 · 3281 阅读 · 2 评论 -
linux之banner生成
什么是banner?↓↓↓↓↓↓↓↓↓↓↓↓↓ ___ _ / _ \ _ __ ___ _ ____ ___ __| |_ | | | | '_ \ / _ \ '_ \ \ /\ / / '__| __|| |_| | |_) | __/ | | \ V V /| | | |_ \___/| .__/ \___|_| |_|\_/\_/ |_| \__| |_| 生成banner原创 2021-02-08 15:06:07 · 1133 阅读 · 0 评论 -
linux之shell笔记
程序参数说明参数说明$0当前程序名字$n第n个参数值,n=1…9$*所有参数,此选项参数可超过9个。$#参数个数$$当前程序的PID(脚本运行的当前进程ID号)$!执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)$?执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)$-显示shell使用的当前选项,与set命令功能相同$@跟$*类似,但是可以当作数组用...原创 2021-02-04 18:08:19 · 108 阅读 · 0 评论 -
linux之i2c bus总线读写
i2cs设备,无需单独编写驱动,可以直接在应用程序中操作i2c bus总线,进行读写。#include <sys/types.h>#include <string.h>#include <sys/stat.h>#include <fcntl.h>#include <termios.h>#include <stdio.h>#include <unistd.h> //open close#include .原创 2021-01-22 20:00:52 · 829 阅读 · 2 评论 -
linux之模拟i2c,i2c-algo-bit
linux 硬件i2c驱动已经很完善了,但是还是有需要模拟i2c的情况。例如:1、mt7688平台,硬件i2c限制每次只能读取64 bytes。在读取一些大数据的时候,只能多次读取,如此就会显得有些不足。2、硬件i2c引脚冲突,导致只能用软件模拟模拟i2c主要需要一下模块i2c-core-basei2c-gpioi2c-algo-biti2c-devmake menuconfig,开启I2C bit-banging interfaces .config - Linux/mi.原创 2021-01-22 17:34:41 · 1443 阅读 · 1 评论 -
linux之shel读写ini文件
ini 初始化配置文件ini格式如下:[Section1]Key1=val1Key2=val2[Section2]Key1=val1Key2=val2... ...shell读写操作脚本#!/bin/bashecho "ini file read/write."# 读取键值ini_read_key() { file=$1; section=$2; key=$3; val=$(awk -F ' = ' '/\['${section}'\].原创 2021-01-17 19:34:04 · 781 阅读 · 0 评论 -
linux之MySQL环境搭建,同时配置远程登录
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。此外,可以使用 MariaDB 代替,MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目.原创 2021-01-06 10:18:35 · 200 阅读 · 0 评论 -
linux增加用户环境变量
linux和windows有相同之处环境变量都是PATH都有系统环境变量和用户环境变量之分通常只需要修改用户环境变量即可linux环境变量路径:系统环境变量:etc/profile用户环境变量:~/.bashrc查看当前环境变量,路径由:隔开eric@eric-PC:~$ echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/usr/local/includ.原创 2020-12-11 10:36:20 · 1826 阅读 · 0 评论 -
c语言Unicode和utf-8互转
Unicode和utf-8编码范围 字 | Unicode符号范围 | UTF-8编码方式 节 | (十六进制) | (二进制)---+-----------------------+------------------------------------------------------ 1 | 0000 0000 - 0000 007F | 0xxxxxxx 2 |原创 2020-11-24 20:08:38 · 1395 阅读 · 1 评论 -
linux shell 守护进程
守护进程,程序意外退出,重新启动#! /bin/sh#进程名字PRO_NAME=/usr/hello# ps aux | grep /usr/hello | grep -v grep |wc -lwhile true ; do # 用ps获取$PRO_NAME进程数量 # NUM=`ps aux | grep ${PRO_NAME} | grep -v grep |wc -l` PIDNUM=`ps | grep ${PRO_NAME} | grep -v grep |wc -l`.原创 2020-11-02 16:56:18 · 479 阅读 · 0 评论 -
常用Makefile改进版
Makefile改进,自动遍历指定目录下所有c文件,无需在Makefile中手动添加…Makefile详细解析,请参考Makefile学习以下面文件结构为例,说明Makefile文件结构eric@eric-PC:~/Documents/work/linux-c/http(副本)$ tree.├── libmbedtls│ ├── libmbedcrypto.a│ ├── libmbedtls.a│ └── libmbedx509.a├── Makefile└── s.原创 2020-10-28 11:56:02 · 145 阅读 · 0 评论 -
esp32 idf.py乱码解决方法
idf.py menuconfig 界面乱码,是因为python不支持中文gbk编码导致的,所以进入powershell后,将,编码修改为英文即可powershell 执行指令:chcp 437936 简体中文437 MS-DOS 英语修改前:执行指令chcp 437,效果:修改idf.py,每次启动idf.py自动修改编码增加代码:os.system(“chcp 437”)if __name__ == "__main__": try: # On MSYS2 .原创 2020-08-15 14:54:13 · 2480 阅读 · 0 评论 -
libcurl实现POST GET
1、POSTint curl_post(void){ CURL *curl; CURLcode res; printf("[%s]start\n",__func__); /* In windows, this will init the winsock stuff */ curl_global_init(CURL_GLOBAL_ALL); /* get a curl handle */ curl = curl_easy_init(); if(curl) { // 设置POS原创 2020-08-12 10:11:19 · 470 阅读 · 0 评论 -
libcur安装
curl 常用的 http操作库,轻松实现 POST GET download 等操作curl API examplehttps://curl.haxx.se/libcurl/c/example.html1、下载curl下载连接https://curl.haxx.se/download.html2、配置curl 默认配置用的是openssl,可以修改为mbedtls(如用openssl,直接./configure即可)eric@eric-PC:~/Documents/work/linux/.原创 2020-08-12 09:52:48 · 326 阅读 · 0 评论 -
linux 串口读写示例
#include <sys/types.h> #include <sys/stat.h>#include <fcntl.h>#include <termios.h>#include <stdio.h>// rcp uart root@192.168.1.1:/usr/#define BAUDRATE B115200#define UART_DEVICE "/dev/ttyS1" #define F原创 2020-08-01 09:59:08 · 839 阅读 · 0 评论 -
Python将wav转amr,并转换成hex数组
将wav文件快速转为amr,同时将arm文件转为16进制数组,保存在对应.h文件,供嵌入式设备使用(无文件系统产品(⊙o⊙)哦)直接上代码from __future__ import print_functionfrom builtins import rangeimport osimport waveimport structimport timeimport re import subprocessimport binascii# eric 2020年7月10日# wav.原创 2020-07-10 10:39:02 · 2453 阅读 · 2 评论 -
opencv 编译“FFMPEG: Download failed”解决办法
在编译OpenCV 源码过程中,需要下载第三方依赖包,由于种种原因,无法下载,导致编译中止错误类型如下:FFMPEG: Download: opencv_videoio_ffmpeg.dll Try 1 failed CMake Warningat cmake/OpenCVDownload.cmake:202 (message): FFMPEG: Downloadfailed: 28;“Timeout was reached”FFMPEG: Download: opencv_videoi原创 2020-06-03 16:03:14 · 12861 阅读 · 6 评论 -
Qt 编译 littlevGL
LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素、漂亮的视觉效果和低内存占用。https://lvgl.io/在windows环境下利用Qt编译littlevGL,模拟图形开发。需要提前安装Qt!一、下载littlevGL源码https://github.com/littlevgl/lv_sim_eclipse_sdl二、下载SDL 动态库SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用.原创 2020-05-27 11:10:43 · 3039 阅读 · 6 评论 -
linux内核目录结构的解析
现代操作系统一般由进程管理、内存管理、文件系统、驱动和网络等组成,Linux内核源码的各个目录大致与此相对应其目录组成如下:arch包括了所有和体系结构相关的核心代码。里面的每一个目录都代表一种Linux支持的内核架构,例如arm就是arm架构相关的代码,arm目录向下包括很多处理器平台,也包括了启动代码boot、架构相关配置文件configs、内核相关文件kernel、内存管理mm和库lib等。block提供块设备操作的一些基本接口。certs认证相关。crypto常.原创 2020-05-16 17:53:43 · 914 阅读 · 0 评论 -
Linux 开机默认启动应用程序
buildroot 编译好的package,设置开机启动。比如自己的应用程序helloworld!要设置如下程序helloworld,开机运行[root@buildroot /usr/bin]#ls hello*helloworld[root@buildroot /usr/bin]#./helloworldhello world1、进入目录[root@buildroot /usr/bin]#cd /etc/init.d/[root@buildroot /etc/init.d]#lsS.原创 2020-05-10 16:26:25 · 1261 阅读 · 0 评论 -
list list_entry解析
在 linux 内核中用到很多list_entery的地方。但之前一直比较疑惑,怎么透过list_entry 获取指定的结构体的地址???比如有以下结构体list_node,list_entry的功能,就是透过list的地址,获取到对应的struct list_node的地址typedef struct list_node{ int dat; struct lis...原创 2020-05-08 11:06:39 · 522 阅读 · 0 评论