一个stm32工程从底层上都需要由哪些文件构成
前言我最近因为做课设要用到stm32,所以去找了一些开源的stm32工程来看看,然后发现现在新版的keil mdk对于环境的配置跟以前 相比发生了较大的变化,比如我了解了一个叫RTE(real time envirement),这个玩意可以帮你管理stm32的运行环境,比如标准库,CMSIS标准等等。但是我们中国的开发者入门单片机一般都会选择正点原子和野火这两家,他们这两家都是教你手动去构建一个工程,但是为了初学者,也同样是对工程的创建步骤做了一部分简化,比如把CMSIS文件夹的所需文件进行了裁剪。但是这些都有个很大的问题,开发环境是一直在变得,只要底层框架变了,你根本就不知道要怎么运行别人的项目,所以这篇文章我想写写,构成一个stm32工程都需要哪些文件,以及这些文件的作用都是什么
STM32工程构建组成部分用一句话概括STM32工程的构成部分就是,CMSIS+库(可选)+启动文件+设备固件驱动文件+用户层
正点原子是这样教你学怎么创建工程的
但是事实上,这些文件夹的划分都是自定义的,你在初学的时候,可以不需要知道里文件夹的文件的作用都是什么,根据教学的步骤一步步创建就行了,但是你 ...
解决用Deveco device tool无法连接local pc
问题描述Windows+Ubuntu 环境下DevEco tool upload Hi3681开发 烧录 Local PC 箭头红一下,又绿了
用Deveco device tool进行upload操作需要先连接这个local PC
但是有的时候,这个Local PC你一直按都死活连不上。或者是变成后又立刻变成绿色按钮
解决方法这种情况我去Openharmony找了很多解决方法,找到了一个能解决的方法
可以在设置那里改一下端口号,*:*改为确定的值 两边不要一样,比如 2221:3332
具体可以参考以下的链接
求助怎么解决Windows+Ubuntu 环境下DevEco tool upload Hi3681开发 烧录 Local PC 箭头红一下,又绿了-华为开发者问答 | 华为开发者联盟
Markdown快速入门
前言我平时写作用的最多的就是markdown,甚至比word文档还频繁,所以这篇文章我简单记录一下markdown常用语法
markdown有啥用?我在学习任何东西之前,都会思考一下学这个东西有啥用,因为时间是很宝贵的,我们只能将自己人生中有限的时间来做有限的事情,所以我说说自己对markdown的看法
优点
适合做笔记
其实我们很多时候做笔记,只是想快速记录一些比较重要的东西,因为markdown其实就是相当于纯文本的基础上加了一些比较常用的写作格式,所以用markdown记录东西是非常快速的
大语言模型优化
现在所有的大语言模型,他都是输出 markdown 格式,不信的话,你可以把大语言模型的输出粘贴到markdown 编辑器中,立刻就能渲染,另一个就是如果你用 markdown 去问Ai问题,会更容易被识别
简单,不用排版
word文档的功能非常强大,但是它的排版非常恶心,想必经常用word文档的同学深有体会,在你改动了某个地方的排版的时候,另一个不知道的地方也莫名其妙发生了格式变动,markdown没有排版,写啥就是啥,简单好用
缺点一个产品不可能都是优点,我这里说 ...
解决用vscode编写openharmony代码时,跳转函数定义和实现时间过长
问题描述遇到过用Vscode在openharmony工程中编写代码时,智能提示会很慢,比如跳转函数定义和函数实现的时间非常长
问题分析在中文互联网搜索这个问题,基本上找不到答案,所以我去stack overflow和github上找了很多文章,最终是找到了问题所在
这两篇文章描述了具体的原因
C++智能感知和解析超级慢:r/vscode — C++ intellisense and parsing SUPER slow : r/vscode
在大型代码库中,C/C++的智能感知(IntelliSense)非常缓慢(由于填充文件名缓存)· #12169 号问题 · microsoft/vscode-cpptools — C/C++ intellisense extremely slow with large codebases (due to populating file name cache) · Issue #12169 · microsoft/vscode-cpptools
不想看的话,我总结一下,其实就是Vsc ...
2.在Openharmony编写hello world
前言Openharmony 的第一个官方例程的是教你在Hi3861上编写hello world程序,这个例程相当简单编写 Hello World”程序,而且步骤也很省略,最重要的是这个例程 ,没有main函数都能运行!!官方所谓的“快速入门”其实是面向有基础的工程师,所以对于很多学识浅薄的学生来说,一看上去肯定会一脸懵逼。在这篇文章中,我会先过一遍例程,Openharmony的启动过程,你就明白main函数哪去了
hello worldOpenharmony规定了用户编写自己代码的位置,所以要把代码放在指定目录里面
确定目录结构在applications/sample/wifi-iot/app 新建一个目录,这个目录的名字可以随便取,这里就取为my_first_app,在这个目录创建代码文件,和一个BUILD.gn编译脚本,如果不知道这个编译脚本是什么可以先不用管
如果还是不太懂就看一下总览的结构
编写配置文件和代码然后就可以开始编写相应文件的内容了,这里BUILD.gn有两个,一个是在``applications/sample/wifi-iot ...
1.openharmony环境搭建
前言在学习知识的时候,如果长时间不用,就会很快遗忘,所以我写这个系列的文章,目的是为了记录我学习openharmony的历程,让我以后回顾的时候,能够快速记忆起相关的知识,由于博主写这个系列的文章已经不是零基础了,所以有些步骤会呈现跳跃式,这个敬请谅解😊😊
采用的环境
OpenHarmony-v3.1-Release
openharmony更新的挺快的,所以有些头库文件的位置会经常变动,因此本系列的文章以我学习的3.1版本为准
润和Hi3861
我学习的时候,采用南京的润和版,主控用的是hi3861V100,核心板长这样
DevEco device tool+Vscode
华为提供的这个IDE是Vscode的插件,所以必须要用Vscode。。。。😐😐
虚拟机Ubuntu20.04
最好用20.04这个版本,有些工具链会因为版本原因不兼容(前人的教训)
虚拟机配置要求创建虚拟机的软件可以采用Vmware或者Vitual box,不过我个人使用的话,是用的WSL,毕竟WSL的启动要快很多,如果是用Vmware或者Vitual box的话,这边是有推荐配置的,因为Op ...
scoop退回软件版本的方法
前言在软件更新后,如果出现了很影响使用体验的问题,那么可以把软件先退回以前的版本进行使用,
但是scoop本身并没有提供直接让软件回退版本的功能,因此这篇文章我教大家如何做到回退软件版本
具体方法scoop安装软件是通过bucket中的json文件实现的,它的路径是 scoop\buckets\main\bucket,这个文件夹包含了当前软件库中的所有软件的描述信息(感兴趣有啥内容可以自己打开来看)
然后每个软件库都是一个git仓库,所以我们可以用git操作来使得软件库退回到特定的版本
我们拿extras仓库举例(路径是 scoop\buckets\extras),通过git仓库找到vscode的旧版本
首先我们得找到特定版本的 commit hash值,这个操作可以用 git log -S"关键词"实现所以我们可以通过命令行在软件库使用 git log -S"vscode"查找到与vscode有关的提交信息当然,如果你有会使用的git图形化工具,那也是可以的
123456789commit fb6af57934c019ca66e4126be7c ...
正则表达式快速入门
前言我写这篇文章,用来记录我平时使用正则表达式的方法,这样我在分享知识给大家的同时,也复习了一遍正则表达式。在你学习某个知识的时候,千万不要去像阅读手册一般去进行学习,因为手册的内容虽然非常详细且全面,但是其实你实际运用到的内容并不会很多,这个就是二八定律,正则表达式20%的内容,就足以够覆盖80%的使用场景了
什么是正则表达式正则表达式的定义如下
正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子.
首先,你难道不觉得 “正则表达式” 这个名字莫名奇妙,难以理解吗?正则表达式的英文原文是 “Regular expression”(简称 regex 或 regexp)) 其中把regular换一个翻译——规则的,有规律的,所以Regular expression的意思就是有规则的表达式。怎么样?是不是比啥正则表达式好懂多了。
正则表达式的作用正则表达式的作用,用一句话概括就是——精确匹配,比如
文本搜索和替换
表单验证(如邮箱、手机号验证)
数据提取
字符串解析
当你注册一个网站,一般都会对你的密码强度进行验证,或者强制要求你必须满足某种 ...
垃圾代码编写指南_C语言版
前言作为一名程序员,通常都需要跟别人协作编写代码。https://github.com/trekhleb/state-of-the-art-shitcode 是一个教你如何编写 💩 代码的教程,但是这个教程的代码示例是用 JavaScript 编写的,在本文我将其转成了经典的C语言,并且将一些语言风格写成符合中国程序员的编码习惯
代码编写原则💩 定义变量的时候,尽可能用混淆的方式变量命名的时候尽可能写短,能节省敲代码的时间
正确做法 👍🏻
1int a = 42;
错误做法 👎🏻
1int age = 42;
💩 采用变量/函数的混合命名风格命名风格要采取多样化,彰显个人魅力
正确做法 👍🏻
12int wWidth = 640;int w_height = 480;
错误做法 👎🏻
12int windowWidth = 640;int windowHeight = 480;
💩 永远不要写注释程序员最讨厌的两件事是:
别人的代码不写注释
别人让自己给代码写注释
正确做法 👍🏻
1const int cdr = 700;
错误做法 ...