自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (2)
  • 收藏
  • 关注

原创 声明和定义

为什么我们需要进行声明和定义,它们有什么限制和规范?

2023-02-11 15:02:59 483

原创 Qt Creator打开时报错python27.dll和报错应用程序错误解决办法(网址)

记录一下,实测有效《 QT找不到python27.dll解决办法》《打开Qt Creator软件时报警告:xxx.exe应用程序错误》

2022-05-05 23:00:50 1348

原创 算法:两数之和(哈希算法)

题目来源LeetCode:https://leetcode-cn.com/problems/two-sum分析具体思想可以参考这个题解的演示:https://leetcode-cn.com/problems/two-sum/solution/tu-jie-guan-fang-tui-jian-ti-jie-liang-s-02xs/,LeetCode中使用的哈希算法是通过uthash.h这个文件实现的,该文件本来是个开源项目,目前已整合到gcc中,关于其使用请参考uthash的文档:https://t

2022-04-05 20:16:44 539

原创 算法:两数之和(暴力枚举)

题目来源LeetCode:https://leetcode-cn.com/problems/two-sum我的程序/** * Note: The returned array must be malloced, assume caller calls free(). */int* twoSum(int* nums, int numsSize, int target, int* returnSize){ int* ret = NULL; *returnSize = 0; i

2022-04-05 20:16:15 220

原创 算法:二分查找

题目来源浙大数据结构MOOC-PTA的课后题题目内容分析就是个普通的二分查找,没啥好分析的。我的程序Position BinarySearch( List L, ElementType X ){ Position left, right; left = 1; right = L->Last; while(left <= right) { Position middle = (left + right) / 2; //

2022-04-02 19:15:43 339

原创 算法:Maximum Subsequence Sum

题目来源浙大数据结构MOOC-PTA的课后题题目内容分析这一题时最大子列和问题的变形,需要输出最大子列和的子列首项与末项,且在数列全为负的情况下,最大子列和为0,且需要输出首尾。而且如果出现了前后有相同都是最大子列的情况,选择前面的那一个。我继续沿用了最大子列和问题中的在线处理算法,但是加上了对子列首尾的处理。说实话这题有点难,我的做法也稍微有点取巧,使用专门的标志来处理非正有0的情况,不过总体来说结果是过了。我的程序#include <stdio.h>int main()

2022-04-02 19:09:57 1475

原创 算法:最大子列和问题

题目来源浙大数据结构MOOC-PTA的课后题题目内容分析这个程序在课程里讲过,一共有四种方法,其中两种是同一种方法,只是进行了优化,这道题没有什么好分析的,直接写就行了。我的程序暴力穷举:#include <stdio.h>int main(){ // 获取数据 int size; scanf("%d", &size); int num[size]; int max = 0, this = 0; for(int i

2022-04-02 18:44:42 1113

原创 STM32CubeMX GCC工程Makefile内容详解

关于STM32CubeMX生成的Makefile文件,其中的运行原理、参数以及作为修改方法的记录介绍。

2022-03-05 15:36:58 4312 4

原创 如何解决VSCode Arduino的红色波浪线报错

当你在vscode中使用arduino插件对arduino进行编程的时候发现了include提示未找到文件或一些arduino函数、变量、常量等告知未定义,本文可以解决这些问题

2022-01-29 15:19:36 4255 1

原创 Git笔记

本文是基于廖雪峰大佬的Git教程进行的记忆笔记,主要目的是用于快速回忆和精炼Git的一些常用命令,同时补充结合一些网络上的其它关于git的知识,本笔记不适合直接用来零基础学习,如果需要可以通过前面的链接跳转至廖雪峰的教程。本笔记可能存在疏漏,如有问题欢迎指正。目录安装仓库管理(repository)创建仓库克隆仓库版本控制缓存修改提交修改查看状态内容比较版本日志撤销修改删除文件版本回退远程操作添加关联查看关联取消关联上传代码下载代码分支管理连接分支创建分支切换分支合并分支删除分支查看分支保存现场查看现场恢

2022-01-15 21:07:07 150

原创 如何在STM32CubeIDE中使用CMSIS DSP库(官方文档地址)

https://community.st.com/s/article/configuring-dsp-libraries-on-stm32cubeide

2021-11-05 14:06:52 1614

转载 Windows安装WSL2指南(微软地址)

Windows安装WSL2指南(微软地址)网址网址

2021-10-14 16:48:56 257

原创 【纯干货】深度底层剖析,你所不知道的printf

文章目录注意视频再观printf函数print为什么要加个f格式符是什么时候被解析的?如何实现变参函数来实现一个printf吧printf是否有检测功能printf只能输出在命令行吗结语注意本文为针对C语言的基础技术向,更适合刚入门需要进阶的同学技术进阶使用,当然我会尽量用简单的语言让哪怕是初学者也可以看得懂,核心知识有如下部分:变参函数的概念和使用__attribute__(())的概念和使用printf函数的实现视频本文可以结合视频一起食用,效果更佳:视频链接再观printf函数相

2021-08-19 21:02:23 1994 5

原创 C宏定义连接符#和##及其应用

在学习LwIP的时候,发现源码中出现了#define LWIP_MEMPOOL(name, num, size, desc) MEMP_##name这样的语句,了解到了C编译器中##这个连接符。顺便查了一下资料,还发现了#这个字符转换符。功能##可以作为宏定义中的变量替换,#则作为字符替换,一般他们都是用于带参宏定义中。比如:#define func1(a) printf(#a"\n")#define func(num, a) func##num(a)int main(){ func

2021-06-16 18:22:21 333

原创 C语言可以使用变量定义数组

这是在一次研讨会中发现的我知识上的纰漏,在此进行记录。当时想给学弟学妹讲一下关于动态内存的问题,在讲述时我用了一个初始化变量时不能用变量作为下标。例如:int i = 5;char test[i];然而事实上,在这样写了之后我发现编译没有出错,这和我最开始学C语言时老师给我们讲的内容并不相同。我最初怀疑时因为此时i已经被赋值了而后在此期间没有进行计算,所以编译器可能将其直接作为一个宏定义来解析了。但是我们又尝试了如下两种写法。int i = 5;i++;char test[i];int

2021-04-19 17:05:43 15184 10

原创 Winform自定义一个圆形按钮

因为我是电子专业的,学校没教过C#,学下来也基本上都是野路子东看西看基于需求地乱学,故而对C#的理解并不是很深。然而个人项目需要自定义一个控件来实现动态连线功能,不得不从入门直接跳到高级应用进行学习,这里做一个记录以对后面有类似需要的朋友一个参考。目前只是实现了一个简单的变色按钮功能,但是需要使用的大部分技术都用上了,如果需要实现其它更复杂功能的话就把本文当个抛砖引玉吧。本文参考了《[C#] (原创)一步一步教你自定义控件——01,TrackBar》,但是在其基础上增加了设置控件区域的功能。另外因为那篇文

2021-03-21 22:45:35 3073

原创 搭建嵌入式开源开发环境

目录前言开启通讯服务打开Linux终端检查vsftpd软件修改vsftpg配置文件确认网络连接配置静态ip宿主机上安装FTP软件完成NFS和SSH服务的配置安装交叉工具链安装编辑器安装串口终端安装OpenOCD测试一下结语前言因为参加合泰杯的项目以及个人学习需要,我需要在Linux远端服务器中搭建一个HT32F52352的编译环境,但是网上关于合泰的芯片资料太少了,而且官网并没有直接提供在Linux环境下开发的交叉工具链,但是苦于没有了解过这方面的知识不知道如何下手,在网上找到一些资料但是一些内容并不是

2021-03-04 21:14:22 687 1

原创 Arduino极速入门教程——两篇文章让你会用Arduino(下)

接上篇关于Arduino基础环境配置、界面介绍和C语言基础,这一篇的内容为具体如何在Arduino中进行编程。在VSCode上配置Arduino什么是VSCodeVSCode,即Visual Studio Code,是微软制作的一个开源免费编辑器,当今始接最热门的主流代码编辑器之一。百度vscode或者点我给出的这个链接,可以进到官网下载。编辑器与IDE(集成开发环境)不同,VSCode更加像一个可以加载插件的记事本,不过如果配置得当,VSCode也可以用来当作一个简陋的IDE使用。为什么用VSCo

2021-02-02 15:17:03 6101 5

原创 Arduino极速入门教程——两篇文章让你会用Arduino(上)

开坑使我快乐,本教程仅供初学者入门学习使用,要想深入还是得靠自己。本教程假设读者为完全无编程基础的普通人,所以行文可能会稍显啰嗦,但相信仍然会是目前比较精炼简短的教程。Arduino是啥一个开源的硬件开发平台,其特点在于简单易学易上手,而且国内外资源多,有啥问题也好解决。Arduino要些什么知识基础有这些基础你基本上可以用Arduino做出网上常见的60%的项目。C语言基础和一点面向对象语言编程概念Arduino编程时使用C++,但是C++是兼容C语言的,一些简单基础的部分有C语言基础

2021-02-01 20:06:25 3337 1

原创 malloc的强制转换

因为数据结构课在使用malloc函数的时候一直很迷惑,为什么一定需要在前面加上一个强制转换语句,像是这样:int *a = (int *)malloc(sizeof(int)*3);。为此我在菜鸟教程的malloc()函数介绍中找到了关于malloc的声明:void *malloc(size_t size),显然加上一个强制转换语句并不是标准语法必须的东西,但是在菜鸟教程下面的举例中是按照强制转换的写法来写的,可惜没有说为什么。为此我尝试了不加强制转换语句的malloc来直接分配空间,在gcc编译后并没有

2020-12-26 18:14:00 3870 6

原创 如何在vim中使用系统剪贴板

作为一名砖业的CV攻城狮候补,在使用vim时因为vim的剪贴板是一块单独的内存,不能很方便地CV我们在网上找到的优秀代码,这实在让我感到非常头疼,故而在网上搜了一下如何让vim能够使用系统剪贴板,在这里记录一下。首先在终端里执行vim --version | grep clipboard指令,这句话的意思大概是在vim的配置中搜索clipboard(剪贴板),然后我们可以看到一个配置名全称就是clipboard,它前面的符号有两种情况,如果是+号则说明可以在vim中使用系统剪贴板,只是需要一点特殊的指令。

2020-12-25 21:10:10 4837 1

原创 我的瞎搞开发工具集以及对一些工具的比较

本文的目的是作为一个记录,不引战,同时为有同样瞎搞爱好者提供一个学习思路……大概算有用吧我的技术栈:实际上有很多并不是很熟,请酌情参考硬件开发(EDA设计、FPGA、STM32、AVR、Arduino、Holtek、CAD、TI)软件编程(C/C++、Java、C#、Python、前端三件套(事实上JS还没上日程)、Golang)不务正业(修图、矢量图设计、视频)工具:硬件:毕竟我还是一个电信学子,本行还是要抓好电路设计KiCad:一个超级好用的开源EDA软件,功能主要就是普通的PC

2020-12-20 16:58:48 3725 1

原创 C的main函数解析

终于开始学习Linux的C语言编程了嘤嘤嘤,有种终于入门的感动关于Linux中C语言编程包括vim、gcc、makefile这些工具的用法这些不是本次的主题,我在这里就不详细展开了,本文只阐述一下main函数的参数调用问题。工具VirtualBox 6.1.12,Ubuntu 20.04,Code::Blocks,C基本原理众所周知,main函数对于系统来说其实也只是一个普通的函数,它作为一个接口与系统进行连接,每次系统调用main函数生成的程序文件。而Linux系统其实又是通过C语言写出来的,本

2020-12-20 00:14:50 386 1

原创 通过报文对嵌入式进行编程举例

这是对我之前《如何假装用C语言为嵌入式写一个新语言》进行一个举例,以便更好地理解这种编程方式。目录报头(S)报尾(E)控制指令程序逻辑指令举例报头(S)报尾(E)报头和报尾ASCIIBUGUS42 55 47 55 53BUGUE42 55 47 55 45CODES43 4f 44 45 53CODEE43 4f 44 45 45VORCS56 4f 52 43 53VORCE56 4f 52 43 45CONSTS43 4f 4

2020-12-01 22:09:18 270

原创 如何假装用C语言为嵌入式写一个新语言

我们在使用无线嵌入式器件的时候,或多或少对于AT指令都有所了解——通过通信口发送一串字符,以AT开头,换行符结尾,中间插入指令内容,就可以实现对芯片寄存器的配置。这种指令式配置类似于蓝牙、WiFi等设备可能比较简单,但是如果我们打算用它去实现一个比较复杂的编程呢?是否也可以通过这种方式,是否可以在不使用编译器的情况下,通过指令调取内部程序并执行?我将会通过一个小demo进行测试这种编程方式的可行性。目录使用工具工作流程指令程序设计功能映射并单指令运行多指令运行上位机编程传递参数返回值思路解析参数返回值变量

2020-11-24 22:58:10 338 1

原创 如何使用KiCAD画扩展板

使用过Arduino的朋友或多或少应该都见过Arduino那种直插的扩展板,不用排线不用焊接,只需排针排母上下对齐然后轻轻一推,就完成了模块化和集成化的完美结合。本文从自己制作的一个板子出发,基于KiCAD简单介绍一下扩展板的画法。目录设计思路第一步:画好内部电路第二步:画直插引脚符号第三步:将直插引脚符号导入并连接第四步:画直插引脚封装第五步:修改路径第六步:分配封装第七步:画PCB第八步:导出生产文件并打板设计思路首先需要确定自己是要制作什么扩展板,这里我是为了自己的项目设计了一个stm32f10

2020-11-20 16:24:28 1328

原创 C和C++在参数调用上的区别

在学习C语言的数据结构时,我发现教科书上出现的一些代码实际上并不能很好地在C语言环境中运行,而需要改成C++才可以,在网上搜了一下,这里记录C和C++在函数传参上的区别C++的形参有三种写法:void example_CPP(&a, *b, c){ /*a为引用传参*/ /*b为指针传参*/ /*c为直接传参*/}三种写法各有用处,这里我们以实例进行研究——首先我们打开自己的IDE,我用的CodeBlocks,然后输入一下程序:#include <iostream>

2020-11-08 17:10:52 238 1

原创 三极管(BJT)与场效应管(FET)的比较

三极管(BJT)与场效应管(FET)的比较因为朋友在学模电,突然问到我MOS与MOSFET的噪声谁更大,结果仔细一回想,似乎只是隐约记得FET比BJT抗噪声能力更强,但是原因却不清楚,毕竟模电还是学得太差了。网上找了好久资料,找到了一个贴吧的帖子,对BJT和FET的特性进行了比较,参考其内容在这里记录一下。大纲三极管(BJT)与场效应管(FET)的比较历史:电极区别:控制类型:阻抗差别:载流子:稳定性(噪声):分类:特性曲线:放大能力:灵活性:偏置差别:工作要求:电容差别:其他:总结:历史:BJT和

2020-11-08 16:09:03 12271 3

原创 MSP432在Energia上的使用(下)

MSP432在Energia上的使用(下)其实我自己都没想到我居然会来填坑,不过说实话这好像也算不上填坑,毕竟之前在MSP430在Energia上的使用(上)这个帖子里讲的是MSP430,而且说的准备在VSCode里装Energia其实到现在还没弄,不过这里还是想介绍一下Energia的另一项功能,一个专属于MSP432的功能。发现事实证明多看官网还是有好处的,之前我在使用Energia对MSP430进行编程时一直非常疑惑,为什么TI公司不直接使用Arduino已有的IDE而非要做个自己的Energi

2020-11-07 19:46:09 1182 4

原创 使用CCS导出TXT用于BSL烧录

使用CCS导出TXT用于BSL烧录

2020-08-28 16:34:57 854

原创 MSP430在Energia上的使用(上)

MSP430在Energia上的使用(上)说实话我也不确定会不会有后面的笔记,但是这次实验的确相当于没有做完。准备工作终于狠下心花了百元大洋买了块MSP430F5529LP板子,准备研究一下板载仿真器在Energia中是如何进行烧录的。通过TI公司的官方文件《MSP430F5529 LaunchPad Development Kit……》,我们其实可以得到LaunchPad的原理图,因为整个原理图用了四页,这里就不详细展示了,有需要可以在TI官网找。我只截取板载仿真器和MSP430F5529芯片的接

2020-08-26 17:32:10 3135 3

原创 3D打印机打印中途停止且显示挤出头温度过低

3D打印机打印中途停止且显示挤出头温度过低打印机型号Anycubic chiron3D问题PLA在200℃打印过程中突然停止,挤出头在屏幕上显示温度降到约120度左右,喷头处于打印件之间出现明显的结节,退回到主菜单显示挤出头温度过低。同时打印件部分平面有明显的缺陷空隙,在点击结束打印后再次进入打印界面无模型文件。解决方法因为故障后无法读取存储卡文件,怀疑是固件问题,通过USB接口将电脑连接打印机,使用切片软件(我用的Cura4.6),选择打印机->上传固件,同时将之前的gcode文件重新生

2020-08-24 23:49:15 3564

原创 Arduino通过USB转TTL无BootLoader烧录程序的两种办法

Arduino通过USB转TTL无BootLoader(引导程序)烧录程序的两种办法注意(这个实验室基于stm32duino的,avr单片机并不直接通用,不过如果你准备尝试使用串口来给avr单片机(就是Arduino官方出的几款Arduino)烧录Arduino的BootLoader,建议直接放弃因为avr单片机并不支持直接使用串口上传程序,而且Arduino的BootLoader好像目的也就是让Arduino能够直接串口烧录程序。也就是说你不能在没有BootLoader的情况下烧录avr-Ardui

2020-08-09 19:51:21 8606 2

使用C对嵌入式进行报文指令编程demo.rar

使用C语言进行模拟新的语言对嵌入式进行编程,编程方式为报文发送然后解释运行,注释很丰富。

2020-11-24

Creo笔记(2).zip

笔记附带无法加载上传的Creo建模Gif,

2020-02-29

空空如也

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

TA关注的人

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