自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32——中断

在NVIC有一个专门的寄存器:中断优先级寄存器NVIC_IPRx,用来配置外部中断的优先级,IPR 宽度为8bit,原则上每个外部中断可配置的优先级为0~255,数值越小,优先级越高。但是绝大 多数CM3芯片都会精简设计,以致实际上支持的优先级数减少,在F103中,只使用了高4bit。如下所示:F103使用4bit表达优先级用于表达优先级未使用,读回为0用于表达优先级的这4bit,又被分组成抢占优先级和子优先级。

2024-02-08 12:04:34 1685

原创 RCC——使用HSE/HSI配置时钟

RCC:reset clock control 复位和时钟控制器。设置系统时钟SYSCLK、设置AHB分频因子(决定HCLK等于多少)、设置APB2分频因子(决 定PCLK2等于多少)、设置APB1分频因子(决定PCLK1等于多少)、设置各个外设的分频因子;控制AHB、APB2和APB1这三条总线时钟的开启、控制每个外设的时钟的开启。对于SYSCLK、 HCLK、PCLK2、PCLK1这四个时钟的配置一般是:PCLK2=HCLK=SYSCLK=PLLCLK=72M, PCLK1=HCLK/2 = 36M。

2024-02-01 18:23:00 1415 1

原创 STM32-GPIO输入——按键检测

为了方便移植,我们把按键引脚等资源宏定义到 “bsp_key.h”文件中,以下代码根据按键的硬件连接,把检测按键输入的GPIO端口、GPIO引脚号以及GPIO端口时钟 封装起来了。以下是我的开发板的定义,不同硬件根据自己资源更改。//引脚定义/** 按键按下标置宏* 按键按下为高电平,设置 KEY_ON=1, KEY_OFF=0* 若按键按下为低电平,把宏设置成KEY_ON=0 ,KEY_OFF=1 即可*/1.2.2 按键初始化函数利用上面的宏,编写按键的初始化函数。

2024-02-01 17:27:33 1581 1

原创 STM32第三节——点亮第一个LED灯

如果是第一次打开STM32CubeMX,软件会自动下载一些组件,等待下载完成即可。1.2 点击ACCESS TO MCU SELECTOR 选择CPU型号,我用的是STM32F103ZET6,选择进入工程后打开 RCC 选项,选择 Crystal/Ceramic Resonator,即使用外部晶振作为 HSE 的时钟源。接下来配置IO口,本次工程功能为点亮LED灯,所以只用配置一个IO口就行了,至于你的灯在那个IO口就需要查看对应的原理图了,如。

2024-01-25 18:34:02 826

原创 STM32第二节——GPIO

GPIO 就是通用输入输出端口的简称,GPIO是一种灵活的引脚(或针脚)配置,允许微控制器与外部世界进行数字输入和输出的通信。每个GPIO引脚可以被配置为输入或输出,从而使它们能够执行各种不同的任务。

2024-01-25 16:06:15 1102

原创 STM32第一节——初识STM32

STM32是由意法半导体(STMicroelectronics)公司推出的一系列32位的ARM Cortex-M微控制器。这些微控制器广泛用于嵌入式系统和物联网(IoT)应用中。STM32微控制器使用ARM Cortex-M内核,其中包括Cortex-M0、Cortex-M3、Cortex-M4和Cortex-M7等不同型号。这些内核提供了高性能、低功耗的处理能力。

2024-01-25 11:24:44 1306

原创 c++ 模版

泛型编程:是指数据的类型是广泛,任意的数据类型模板:可以将一个函数或类描述成一个模板,例如:画画,给一个人物模型上色彩,根据用户上的色彩是什么人物显示什么样的色彩,模版并不能直接使用,它只是一个框架。模板:函数模板和类模板。

2024-01-24 19:04:56 960 1

原创 c++ 异常

异常:发生错误 C++是一种容错机制,允许主动发生错误、主动捕获错误、主动去处理错误。 处理流程: (1)主动产生异常,抛出异常 (2)检测是否产生了异常 (3)捕获异常并对该异常进行处理 用于抛出异常,即主动产生异常使用格式: throw 异常的类型 ; //抛出该种类型的异常 用于检测是否产生异常使用格式: try { //待检测的代码 } 用于捕获异常并处理异常

2024-01-23 11:17:48 962 1

原创 C++输入输出流

输入/输出流类:iostream---------i input(输入) o output(输出) stream:流iostream:istream类:输入流类-------------cin:输入流类的对象ostream类:输出流类------------cout:输出流类的对象。

2024-01-23 11:05:48 958 1

原创 C++运算符重载

运算符重载是指赋于基本运算符新的运算,使之能应用于自定义的类型的运算(类类型),实际上是将运算符强制修饰为函数的形式。例如:C语言:运算符:+10+20 //实现两个数据(基本的数据类型)相加10.5+20C++:运算符:+People+Animal //People类类型、Animal类类型运算符重载: 本质上是给类定义运算操作,将类运算符强制修饰为函数(operator),将类的运算符操作变成函数操作。

2024-01-23 10:50:16 1003 1

原创 C++类的继承与多态

一个新的类拥有(共享)其它一个或多个已经存在的类的属性和方法,称为“类的继承”,例如:父亲和母亲是儿子的父类新的类,称为“子类”或“派生类”一个或多个已经存在的类,称为“父类”或“基类”如果是拥有一个类的属性和方法,称为“单继承”如果拥有多个类的属性和方法,称为“多继承”

2024-01-20 16:51:11 902

原创 C++类&对象

构造函数的作用是用于构造(创建)对象,是一种特殊的函数,如果用户没有显示的写出构造函数,那么编译器会自动生成一个隐式的不带参的构造函数;C++中成员函数的特性,在类的非静态成员函数中都会存在一个this指针,来指向当前类,它是隐式的不可见的,是作为函数的第一个参数。类是描述一类事物的特征和行为的统称,抽象的不存在的,泛指的概念,例如:描述一个人,从外观上(特征)和言行举止(行为)上进行描述。如果类中有其它类的成员修饰符,直到遇到下一个修饰符之前(类的后括号之前)的成员,都是用private修饰。

2024-01-20 16:10:12 1093

原创 基于socket的电子词典

这是一个没有图形界面的电子词典,以下是实现的功能1.服务器多线程同时连接多个客户端2.用户注册3.用户登录4.查询单词6.查询当前用户的历史搜索记录8.退出电子辞典记得创建以下三个数据表表格结构如下哦对,词典的话网上找个txt文档就好了附上服务器端与客户端代码。

2024-01-19 18:51:41 456 1

原创 网络编程常用API

接口声明:int socket(int domain, int type, int protocol);参数:domain:域。AF_INET/PF_INET: 网际协议AF_UNIX/PF_UNIX:本地协议,可写成 AF_LOCAL/PF_LOCALtype:类型。SOCK_STREAM:流式套接字 TCPSOCK_DGRAM:数据包套接字 UDPprotocol:协议。一般为 0返回值:成功:待连接套接字失败:-1备注:在网际协议中,选择流式套接字就代表 TCP 协议,选择数据包套接字就

2024-01-19 16:43:51 799 1

原创 Linux文件I/O编程技术剖析

目录1、一切皆文件1.1文件的概念1.2各类文件2.文件操作2.1系统IO2.1.1 打开文件 open2.1.2 关闭文件 close2.1.3 从文件中读取数据 open2.1.4 向文件写入数据 write2.1.5 设置偏移量 lseek2.1.6dup( )/dup2( )2.1.7fcntl( )和 ioctl( )2.2 标准IO2.2.1 打开文件 fopen2.2.2 关闭文件 fclose2.2.3 每次一个字符的读

2024-01-19 16:06:36 1627 1

原创 C语言数据结构知识疏解

(1)数据 数据分为:数值类型和非数值类型 是指客观事物的符号表示,所有能输入到计算机并被计算机处理的符号的总称(2)结构 数据与数据之间隐含的关系,称之为“结构”(3)数据结构 是指计算机处理和存储数据的一种方式,是数据之间具有某种特定关系的集合数据结构又分为: 存储结构和逻辑结构存储结构:是指数据在计算机中存储方式1)顺序存储 是指数据与数据之间的存储位置相邻2)链式存储 是指数据与数据之间的存储位置不一定相邻逻辑结构:是指数据与数据之间的逻辑位置 1)集合结构:数据与数据之间除了属于同

2024-01-18 15:24:11 1021 1

原创 指针学习——初阶

展示了指针的基本操作。在这个例子中,`a` 和 `*p` 的值是一样的,因为 `*p` 表示指针 `p` 所指向的地址中的值,而这个地址正是变量 `a` 的地址。在上面的定义的语句中,*告诉编译器p是一个指针,p存放了一个地址,而int则指明了p所存放的地址是int类型数据的地址。那么,因为p指向的是a的地址,所以 *p又表示一个指针变量 `p` 所指向的内存中的值。在编程中,当我们定义一个变量时,实际上是向计算机系统发送一个请求,请求系统为我们分配一块适当大小的内存,以存储相应类型的数据。

2024-01-17 18:45:07 311

原创 C 函数详解

/ 函数定义。

2024-01-17 17:43:23 326

原创 windows下的qt配置ffmpeg6.0

回到之前解压的文件夹下,把.dll后缀的文件都复制到项目运行后生成的debug文件夹下。加入如下代码引入头文件,使用extern "C"是因为要用C语言形式编译这些头文件。在QT的.pro文件下添加将include和lib文件引入。往下找到 6.0 build shared点击下载。复制include和lib文件夹到qt工程目录下。测试:查看是否成功,记得加入QDebug头文件。进入官网点击download,然后选择下图选项。成功输出一串版本信息的数字。

2024-01-17 16:10:11 668 1

空空如也

空空如也

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

TA关注的人

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