嵌入式硬件
未读一些PCB Layout时的经验:
所有走线一定要确保经过了电容再进入模块,避免不起作用
升压模块电路下方(电感)不允许走线,避免受到干扰影响系统工作。我们设置一个禁止铺铜区域
电源线要走大电流的时候一个过孔到底层是不够的,我们可以多放置几个过孔(6~8个过孔即可)到地,这样电流大一些
布线顺序:
布线的顺序,一般根据实际情况,先布置电源或难度高的线,然后再布常规线,地线最后通过铺铜过孔连接。
走线的时候,尽量满足顶层走竖线,底层走横线,可以保证顶层和底层都能走线而不被阻挡
嵌入式软件
未读keil配置与芯片包下载固件库文件以F103固件库为例:
STM32F10x_StdPeriph_Lib_V3.5.0固件库是为STM32F1系列微控制器设计的开发辅助库,主要用于简化对STM32F1外设的控制和配置。该库封装了对各类外设(如GPIO、ADC、USART、SPI、I2C等)的控制接口,使开发者无需直接操作复杂的寄存器就能使用这些硬件外设。通过它,开发者可以轻松地进行外设的初始化、配置和数据处理。
主要结构:
_htmresc:图片没什么用
Libraries:库函数的文件,我们之后建工程时会用
CMSIS:包含Cortex-Mx内核的相关定义和启动代码。
CoreSupport:包含了与Cortex-M系列内核相关的文件,主要是一些适用于ARM Cortex-M内核的通用代码和数据结构,用于管理核心处理器功能。
DeviceSupport:含与特定厂商的微控制器设备相关的文件,特别是该设备特定的外设寄存器定义和访问方法。它提供了Cortex-M内核之外的硬件支持,适用于具体的MCU型号。
STM32F10x_StdPeriph_Driver:标准外设驱动库,包含S ...
C++学习笔记:名称空间std
<math.h>新式为
<string.h>新式为
如果使用iostream,而不是iostream.h,即当头文件中没有扩展名h时,iostream中定义的用于输出的cout变量实际是std::cout,而endl实际上是std::endl.因此,可以省略编译指令using,用下述方式进行编码:
std::cout<<” xxxxxx”;
std::cout<<std::endl;
但如果使用using编译指令:using namespace std;
便可以直接使用cin和cout…,而不必加上std::前缀
控制符endl
C++中的旧版换行采用的是”\n
cin和cout(1).
(2).
输出可以拼接:
**
每次读取一行字符串(string)输入
总结:1.cin(>>)
虽然可以使用 cin 和 >> 来输入字符串,当 cin 读取数据时,一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。
可以输入 “Mark” 或 “Twain” ...
类型转换运算符C++中,类型转换运算符允许你在不同类型之间执行转换。这些运算符允许你显式地将一个类型转换为另一个类型。C++中有四种类型转换运算符:
static_cast用途: 主要用于进行静态类型转换,例如将指针或引用从一种类型转换为另一种类型,但在转换时没有运行时检查。
示例:
12double doubleValue = 3.14;int intValue = static_cast<int>(doubleValue);
dynamic_cast
用途: 主要用于进行安全的动态类型转换,只能在指针或引用之间转换,通常在基类指针或引用和派生类之间进行类型转换。在运行时,dynamic_cast会检查转换的合法性,成功转换返回新指针,否则返回空指针。
示例:
123456789101112Base* basePtr = new Derived /* 指向派生类对象的基类指针 */;Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);if (derivedPtr) { // 转换 ...
基本的使用网上随便找视频
使用keil时一定要先编译再下载,否则代码不会更新,这是和Clion不同的,他不是一键编译下载
运行环境配置keil中一共有两种方法配置运行环境
keil中的运行环境管理工具(Manage Run-Time Environment)
在CMSIS下勾选CORE,配置arm接口
在Device设备下吗,勾选Startup启动文件(可以在启动文件中看到,里面执行了汇编程序,初始化了堆栈建立C语言环境,以及跳转到main函数中运行)
手动创建工程,从给出的固件包中添加各种文件
ST官方提供的标准库包中手动添加STM32F10x_StdPeriph_Lib_V3.5.0”
(HAL库例如:stm32cube_fw_f1_v160)
->具体过程见笔记STM32标准库开发
调试器配置点击魔术棒->Debug,然后在右上角选择自己使用的调试器(J-link等)
点击右边的settings,然后上面切换到Flash Download,勾选Reset and Run,这样下载程序后就会立马复位执行。否则需要手动点击Reset才能执行
调试在导航栏上方, ...
Clion配置Qt工具链CLion配置qt环境-CSDN
Clion配置外部工具配置外部工具Qt Creator和UIC等
在Clion的设置中打开外部工具
名称填QT Creator
123456工具设置: 程序: qtcreator.exe的根路径 实参: $FileName$ 工作目录: $FileDir$其他外部工具同理
可通过Qt creator外部工具打开.ui文件实现拖动部件设计UI,在Clion直接编译会自动将.ui文件转化为C++对应的头文件,不需要UIC转换
分块查找配置 Qt creator写Qt有两种方法:
直接在Qt creator 中创建项目,Build system选择qmake,Kits选择Qt minGW 64-bit/32-bit即可开始
将Clion与Qt creator联合使用来写Qt,下面介绍如何配置
为了使Clion和Qt creator 同时使用来完成UI的设计
首先需要在Qt中先创建项目选择Qt Widgets Application,取名并选择路径
在Build System 中选择Cmake
在C ...
环境配置IDE选择
keil + STM32CubeMX
Clion + STM32CubeMX/PlatformIO(插件)
配置CLion用于STM32开发【优雅の嵌入式开发】 - 知乎 (zhihu.com)
【教程】手把手教你用Clion进行STM32开发【如何优雅の进行嵌入式开发】_clion开发stm32-CSDN博客
所需环境工具:
STM32CubeMX
Clion
MinGW工具链
OpenOCD
arm-none-eabi-gcc
STM32CubeMX一文教你使用STM32CubeMX开发工具 - 知乎 (zhihu.com)
配置环境时遇到的问题Clion上使用openOCD时识别不了j-link
openOCD和Jlink仿真器_openocd jlink-CSDN博客
算法的概念 算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。
简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵魂
1程序 = 算法+数据结构
算法的特征可行性 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个计算步都可以在有限时间里完成(也称之为有效性)
确定性 算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。
有穷性 算法的有穷性是指算法必须在执行有限个步骤后终止。操作次数不宜过大,不能超过人们事先设定的时间限制。
输入算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法已经给出了初始条件。
输出一个算法可能有1个或多个输出,以反映输入数据加工后的代码,没有输出的算法是没有意义的!
算法的评价通常一个好算法应该达到如下目标:
正确性算法应该正确的解决问题。
可读性算法应该具有较好的可读性,让人们理解算法的作用。
健壮性输入非法数据时,算法也可以做出适当 ...