自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

荒野

好活儿,当赏儿~~~

  • 博客(89)
  • 收藏
  • 关注

原创 C++ Primer Plus(速记版)-类和数据抽象

最简单地说,类就是定义了一个新的类型和一个新作用域。类成员类成员可以是属性方法或类型别名。成员可以是公有(public)私有(private)或受保护(protected)。公有成员可从类的外部访问,私有成员仅能在类内部访问,受保护成员在继承体系中有特殊访问权限。构造函数构造函数是特殊的成员函数,与类同名,用于初始化新创建的对象。构造函数可以有参数,也可以没有。默认构造函数无参数。通常使用构造函数初始化列表来初始化成员变量。

2024-09-15 20:02:25 905

原创 C++ Primer Plus(速记版)-容器和算法

顺序容器头文件所有的容器都是类模板。容器类型的定义方式为:容器名<存储类型>//放string类型的空vector容器// 放int类型的空list容器//放自定义类的空deque容器所有容器类型都定义了默认构造函数,用于创建指定类型的空容器对象。所有容器都提供这几种类型。size_type //无符号整型,用来替代字面值iterator //迭代器const_iterator //只读迭代器reverse_iterator //按逆序寻址元素的迭代器。

2024-09-13 17:51:53 1160

原创 C++ Primer Plus(速记版)-基本语言

左值和右值左值可以出现在赋值语句的左边或右边。右值只能出现在赋值的右边,不能出现在赋值语句的左边。变量是左值,因此可以出现在赋值语句的左边。数字字面值是右值,因此不能被赋值。初始化C++ 支持两种初始化变量的形式:复制初始化和直接初始化。// 直接初始化// 复制初始化使用多个初始化式初始化内置类型的对象只有一种方法:提供一个值,并且把这个值复制到新定义的对象中。对内置类型来说,复制初始化和直接初始化几乎没有差别。1.3 const 限定符const 变量不允许修改,会导致编译错误。

2024-09-11 19:25:21 944

原创 ARM体系与架构

支持交叉编译的编译器,作用就是,一个架构环境编译,另一个架构环境运行。这个编译过程就叫交叉编译。像windos平台用keil编译,然后stlink下载.axf文件,或者Jlink烧录hex文件,这种也属于交叉编译。x86架构上面生成arm架构的可运行程序。异步传输:是一种典型的基于字节的输入输出,数据传输每次一个字节,传输速度低。同步传输:需要外界的时钟信号进行通信。同步传输一般都是按帧传输。IIC协议,两根线,时钟线SCL数据线SDA。

2024-09-02 18:03:21 1049

原创 STM32总线和时钟树(速记版)

STM32存储器结构和系统架构

2024-08-16 21:43:01 1355

原创 每日面试题Day2

给一个short,末端放个1,然后16位的 Short 用数组拆成两个 8 位的char,判断高位低位哪边大。修饰函数参数、函数返回值、定义常量、修饰对象。sizeof是获取参数的内存大小,参数 \0 会保存在代码段常量区,2字节。定义静态变量或者函数,静态变量只初始化一次,如果在类里就属于类。防止编译器优化,a=1,a=2,a=3不被优化成a=3,C/C++中,strlen是逐字符扫描,碰到\0结束。const 定义常量 ,define 也定义常量,,因为寄存器的值经常改变,防止读缓存。

2024-08-13 22:06:12 791

原创 µC/OS-III

中断是 CPU 的一种常见特性,中断一般由硬件产生,当中断发生后,会中断 CPU 当前正在执行的程序而跳转到中断对应的服务程序中去执行,ARM Cortex-M 内核的 MCU 具有一个用于中断管理的嵌套向量中断控制器(NVIC,全称:Nested Vectored Interrupt Controller)。ARM Cortex-M 的 NVIC 最大可支持 256 个中断源,其中包括 16 个系统中断和 240 个外部中断。

2024-08-13 21:13:59 973

原创 每日面试题Day1

声明不为变量开辟空间,是对变量的类型和名称进行说明。

2024-08-12 20:59:19 956

原创 FMC和FSMC

他们共用地址数据总线等信号,他们具有不同的 CS 以区分不同的设备,比如外设 TFTLCD 就是用的 FMC_NE1 做片选,其实就是将 TFTLCD 当成 SRAM 来控制。至于于 ADDR[27:26] 的设置,当使用 FMC_NE1 来连接外部设备的时候,是直接在寄存器中配置区域1 的寄存器组。最大255个时钟周期。需要每隔一段时间刷新一次数据,才能保存数据,掉电丢失数据,是行列地址复用的,许多都有页模式。地址线(A0~A18),数据线(D0~D15),写信号 WE,读信号 OE,片选信号 CS,

2024-08-09 19:23:44 1296

原创 正点原子STM32F407工程改成STM32F429标准库版本

第四步,找到systemf4xx.C中系统时钟PLL相关参数的设置,只需要改P、Q、M、N,使得系统时钟符合板子的标准。我这里用的阿波罗板子V2测试的,是180MHz正常启动。第三步,修改芯片类型的宏定义,该宏决定了.s文件中系统时钟参数的设定。F407和F429都属于STM32F4XX,启动文件就不用换了。根据自己的芯片型号选择对应的芯片,编译时编译器会。根据该选项链接兼容的指令集。

2024-08-08 19:45:45 360

原创 CAN通信(速记版)

CAN 协议经过 ISO 标准化后有两个标准:ISO11898 标准和 ISO11519-2 标准。前者适用通信速率为 125Kbps~1Mbps 场景,后者适用125Kbps以下场景。STM32 自带基本扩展 CAN(bxCAN)。它支持 CAN 协议 2.0A 和 2.0B,都属于11898标准。支持最高传输速率为1 Mbps。CANFD类似CAN2.0,支持5Mbps。2.0A使用标准帧格式,而2.0B使用扩展帧格式。

2024-08-08 11:49:46 853

原创 MQTT(速记版)

MQ一般指消息队列中间件,而MQTT是一种轻量级、发布-订阅模式的消息传输协议。MQTT是基于TCP/IP协议族的,位于应用层。TCP/IP协议族的网络模型:四层模型:应用层、传输层、网络层、数据链路层应用层: HTTP, HTTPS, FTP,SMTP , POP3, ssh MQTT传输层: TCP, DUP网络层: IP数据链路层双向通信:发布、订阅模式是双向通信,客户端既可以向主题发布消息,也可以订阅接收特定主题上的消息。连续、有状态的会话:MQTT 提供了客户端与。

2024-08-03 11:22:25 126

原创 看门狗IWDG、WWDG(速记版)

内置的看门狗有独立看门狗 IWDG和窗口看门狗 WWDG都用来在程序卡死的时候复位程序。独立看门狗只有一个最晚时间界限。窗口看门狗有一个最早界限和最晚界限。独立看门狗有独立的时钟,一般设置来源时钟LSI40KHz。窗口看门狗挂靠在APB1总线上36MHz。

2024-08-01 21:53:30 944

原创 实时时钟RTC+电源控制PWR(速记版)

Unix时间戳以秒为单位从1970年1月1日00:00:00 UTC(协调世界时间)开始计算。这个时间点被称为“Unix纪元”(Unix Epoch)。Unix时间戳表示从这个起始时间点到指定时间点的秒数。Unix时间戳与时区无关。无论在世界的哪个地方,Unix时间戳都是相同的。

2024-08-01 20:28:09 1093

原创 STM32通信协议 总集篇 (速记版)

通用同步/异步收发器。UART 就是异步收发器。通常很少用到 USART 的同步功能。比特率每秒钟传输多少个比特位。对于接收方来说,意味着多久取一次电平数据。波特率:每秒传输多少个码元。USART的码元就是比特,故比特率=波特率。起始位下降沿+1bit低电平 代表起始位。数据位低位先行。可选5~9位,常用8 位。校验位:奇/偶校验,数据位1的个数为奇/偶则置位。停止位1bit高电平代表停止位0x55,串口通信先传低位再传高位0xff。

2024-07-29 14:21:03 762

原创 STM32HAL库 -- RS485接口通信(速记版)

485(一般称作 RS485/EIA-485)隶属于OSI 模型物理层,是串行通讯的一种。电气特性规定为2 线半双工,多点通信的类型。它的电气特性和 RS-232 大不一样。用缆线两端的电压差值来表示传递信号。RS485 仅规定了接受端和发送端的电气特性。它没有规定或推荐任何数据协议485 推荐的一主多从连接方式如图 40.1.1 所示:可作为RS485 的收发器。

2024-06-27 11:59:01 1402

原创 STM32HAL库 -- SPI 读写 FLASH实验(速记版)

SPI 是英语 Serial Peripheral interface 缩写,顾名思义就是串行外围设备接口。SPI 通信协议是 Motorola 公司首先在其 MC68HCXX 系列处理器上定义的。SPI 接口是一种高速的全双工同步的通信总线,已经广泛应用在众多 MCU、存储芯片、AD 转换器和 LCD 之间。大部分 STM32 有3 个SPI 接口,本实验使用的是 SPI5。SPI的引脚信息MISO(Master In / Slave Out)主设备数据输入,从设备数据输出。MOSI。

2024-06-27 10:48:24 1359

原创 STM32HAL库--IIC实验(速记版)

IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器以及其外围设备。IIC 是由数据线 SDA和时钟线 SCL构成的串行总线。IIC 总线有如下特点:① 数据线用来传输数据,时钟线用来同步数据收发。② 总线上每个器件都有唯一器件地址,只需知道器件地址,根据时序即可实现微控制器与器件之间的通信。③ 数据线 SDA 和时钟线 SCL都是双向线路空闲时都是 SDA 和 SCL 都是高电平。

2024-06-26 15:13:19 911

原创 STM32HAL库--DMA实验(速记版)

DMA,全称为:Direct Memory Access,即直接存储器访问。DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路,能使 CPU 的效率大为提高。STM32F429 最多有 2 个 DMA 控制器共 16 个数据流(每个控制器 8 个),每一个 DMA控制器都用于管理一个或多个外设的存储器访问请求。每个数据流总共可以有多达 8 个通道(或称请求)。每个数据流通道都要一个。

2024-06-25 19:18:24 1440

原创 STM32HAL库--PWR低功耗实验(速记版)

电源控制部分(PWR)概述了不同电源域的电源架构以及电源配置控制器。PWR 的内容比较多,我们把它们的主要特性概括为以下 3 点:电源系统:USB 稳压器、内核域(VCORE)、VDD 域、备份域、模拟域(VDDA)。电源监控:POR/PDR 监控器、BOR 监控器、PVD 监控器、AVD 监控器、VBAT 阈值、温度阈值。电源管理:VBAT 电池充电、工作模式、电压调节控制、低功耗模式。下面将分别对这 3 个特性进行简单介绍。

2024-06-25 13:13:55 1355

原创 STM32HAL库--SDRAM实验(速记版)

SDRAM,英文名是: Synchronous Dynamic Random Access Memory,即同步动态随机存储器,相较于 SRAM(静态存储器),SDRAM 具有:容量大和价格便宜的特点。STM32F429 支持 SDRAM,因此,我们可以外挂 SDRAM,从而大大降低外扩内存的成本。阿波罗板载的 SDRAM 型号为:W9825G6KH,其内部结构框图如图所示。最后,我们来看看使用 HAL 库实现对 W9825G6KH 的驱动,需要对 FMC 进行哪些配置。

2024-06-24 01:00:47 1077

原创 STM32HAL库--定时器篇(速记版)

STM32F4有2个基本定时器,TIM6 和 TIM7。基本定时器框图有三个部分,时钟源控制器和时基单元。时基单元又有PSC预分频器CNT计数器和ARR自动重装载寄存器。基本定时器相关寄存器有6个:PSC 预分频寄存器,存储预分频值。预分频9000就写8999。CNT 计数器,存当前计数值。ARR 自动重装载寄存器。存储重装载值。计数9000就写8999。CR1 控制寄存器1。有ARPE位控制自动重装载预装载使能。有CEN位控制计数使能。

2024-06-20 20:38:00 1497

原创 STM32时钟系统

STM32 主控中,锁相环主要用于时钟信号净化和倍频。锁相环的输出同样也可作为芯片系统的时钟源。STM32F4xx器件有两个PLL,主 PLL由 HSI 或 HSE提供振荡器提供时钟信号,并具有两个不同的输出时钟:— 第一个输出用于生成高速系统时钟(最高达 168 MHz)— 第二个输出用于生成 USB OTG FS 的时钟 (48 MHz)、随机数发生器的时钟(

2024-06-19 16:50:00 1084

原创 STM32HAL库--NVIC和EXTI

NVIC,嵌套向量中断控制器,ARM Cortex-M内核的组件,用来中断使能挂起记录中断激活标志位配置中断优先级。分别对应寄存器组有中断使能和除能 ISER[8] ICER[8] 8个*32位寄存器中断挂起和解挂 ISPR[8] ICPR[8]记录中断激活标志位 IABR[8]配置中断优先级 IP[240] 240*8位寄存器,仅用高4位,放抢占优先级和子优先级。

2024-06-19 11:56:44 1280

原创 STM32--IAP程序升级实验

如果我们用的 Flash 容量大到可以存储两个或多个的完整程序,在保证每个程序完整的情 况下,上电后的程序通过修改 MSP 的方式,就可以保证一个单片机上有多个有功能差异的嵌 入式软件,这就是我们要讲解的 IAP 的设计思路。appxaddr存放的是用户程序Flash的首地址,(*(volatile u32*)appxaddr)的意思是取用户程序首地址里面的数据,这个数据就是用户代码的堆栈地址,堆栈地址指向RAM,而RAM的起始地址是0x20000000。从而MSP取值和CP取值的地址不同!

2024-06-18 15:55:30 1430

原创 HAL库--LCD实验

Liquid Crystal Display,即液晶显示器,由:玻璃基板、背光、驱动IC等组成。全彩LCD,是一种全彩显示屏(RGB565、RGB888),可以显示各种颜色。LCD基本组成:一个像素点有RGB三种色来表示。LCD接口分类:MCU屏接口由于自带SRAM,驱动简单,大部分单片机都能驱动!一眼看过去排针多的基本上都是MCU接口的屏并口总线时序,常用于MCU屏驱动IC的访问,由Intel提出,也叫英特尔总线8080时序信号说明8080写时序8080读时序/*8080时序简化写代码*/

2024-06-13 20:31:41 760

原创 HAL库--内存保护(MPU)实验

说白了MPU用来管理内存和外设存储区的访问权限MPU可配置保护8/16个内存区域(看芯片型号),每个区域最小要求256字节,且每个区域还可配置为8个子区域(大小一样)。可配置16个内存区域Cache(高级缓存)是提升STM32性能的关键一步。M7内核芯片做了一级Cache支持,Cache分为数据缓存D-Cache和指令缓存I-Cache。Cache支持4种基本操作:1,使能;2,禁止;3,清空;4,无效化数据缓存D-Cache是解决CPU加速访问SRAM。

2024-06-13 17:33:55 834

原创 嵌入式面试题(待完善)

(这个真的8知道,虚函数表在编译阶段就有了,但是虚函数指针是跟着对象一起出来的)

2024-05-30 09:25:07 330

原创 STM32HAL库-TIMER定时器篇

使用纯软件的方式(CPU死等)的方式实现定时(延时)功能缺点:延时不精准,CPU死等浪费资源函数的调用有压栈和出栈的过程,STM32是ARM架构,有流水线,一条指令会分为多个步骤在不同时间片内由CPU决定执行顺序,导致函数延时不准确1、基本定时器TIM6/TIM72、主要特性16位递增计数器(计数值0~65535)16位预分频器(分频系数1~65536)可用于触发DAC在更新事件时会产生中断/DMA请求基本定时器TIM6/TIM7简介。

2024-05-29 23:21:53 3554

原创 STM32HAL库-WWDG窗口看门狗

*******************************WWDG初始化*************************************/1、工作参数初始化 HAL_WWDG_Init()/*******************************WWDG中断函数初始化**************************/2、WWDG Msp初始化 HAL_WWDG_MspInit() 配置NVIC、CLOCK等。

2024-05-19 19:04:17 943

原创 STM32HAL库-IWDG篇

IWDG,Independent Watch Dog 独立看门狗IWDG的本质是能产生系统复位信号的计数器IWDG的特性:递减的计数器IWDG时钟由独立的RC振荡器,可在待机和停止模式下运行。看门狗被激活后,当递减计数器计数到0x00时产生复位是指计数器计数到0之前,重载计数器的值,防止复位Reset and Clock.,RCC,复位和时钟控制器Clock Status Register,CSR,时钟状态寄存器。

2024-05-18 20:23:42 1148

原创 STM32HAL库开发-串口篇

串口 是 串行通信接口的简称,指的是按位发送和接收数据的接口。如RS-232/422/485等RS-232被称为标准串口。

2024-05-18 01:01:58 2332

原创 STM32HAL库-中断篇

System configuration controller,即系统配置寄存器,用于外部中断映射配置等功能(F1为AFIO模块)SYSCFG模块的外部中断配置主要使用SYSCFG_EXTICR1~4,配置EXTI中断线0~15对应到哪个具体IO口特别注意:配置SYSCFG寄存器之前要使能SYSCFG时钟,方法如下:EXTI与IO对应关系EXTI0与Px0对应当Px0映射到EXTI0时,其他分组的Pin0就不能映射到EXTI0了可以看到EXTI0与引脚号为0的IO口对应。

2024-05-15 15:35:38 3254

原创 GPIO简介

上图比较关键的几个器件有 保护二极管、内部上下拉电阻、施密特触发器、P-MOS&N-MOS管一个信号输入进来,经过保护二极管,之后有两条路可以走,一个是模拟输入,也就是ADC和DAC,另一个是经过TLL肖特基触发器,之后可作为复用功能输入,两条路最后都是到达片上外设。经过TTL肖特基触发器后还可将信号保存到数据寄存器(IDR寄存器),之后可通过CPU去读ODR寄存器,这样就可以知道引脚输入的信号是高还是低(作为通用输入)

2024-05-10 23:24:55 1141

原创 STM32时钟系统和时钟树

正点原子提供的System文件夹包含常用的函数和驱动Systic即系统滴答定时器,包含在M3/4/7内核里面,核心是一个24位的递减计数器F1/F4/F7的Systic定时器的时钟来源于HCLK,也就是AHB总线上的时钟H7的Systic定时器的时钟来源于SYS_d1cpre_ck(H7),也就是系统的d1分频器Systic重装载数值寄存器(Load)和Systic当前数值寄存器(Val)Systic控制及状态寄存器(CTRL)

2024-05-09 15:38:21 1465

原创 嵌入式面试题1

在C语言中,静态变量(static variable)是一种特殊类型的变量,具有以下特点:### 特点:1. **生命周期**:静态变量的生命周期从程序开始到程序结束,即静态变量在程序运行期间一直存在,不会因为函数的调用和返回而被销毁。2. **作用域**:静态变量的作用域可以是全局的(在函数外部定义)或局部的(在函数内部定义)。在全局范围内定义的静态变量只能在定义它的源文件中访问,而在局部范围内定义的静态变量只能在定义它的函数内部访问。

2024-05-07 13:53:38 522

原创 STM32HAl库基础

Cortex-M内核含有硬件调试模块,该模块可在指令断点或数据断点处停止。内核停止时,可以查询内核的内部状态和系统的外部状态。完成查询后,可恢复程序执行。JTAG/SWD引脚F4/F7/H7系列默认全部SWJ-DP引脚为复用功能并映射到复用功能0(AF0)。

2024-05-05 21:13:05 1503

原创 STM32F4以太网LWIP - LAN8720

TCP/IP是一个协议簇,包含众多网络协议如TCP、IP、HTTP、FTP、MQTT、UDP、HRP、DHCP、DNS等等STM32F407自带有10/100Mbits/s数据传输速率的以太网内核(以太网网络接口卡的控制器,负责以太网中数据帧的发送和接收),这个以太网MAC内核有如下特性:1.支持外部PHY接口(以太网外部端口芯片,如LAN8720)实现10/100Mbit/s数据传输速率2.通过符合IEEE802.3的MII接口与外接的快速以太网PHY进行通信。

2024-05-04 14:53:27 3282 2

原创 LABELIMG自动更换全部txt文件标签

用于labelimg标签类别更换

2022-12-30 20:07:23 1078 2

原创 Java volatile为何不能保证原子性

关于volatile对inc++操作无法保证原子性的一点补充

2022-08-12 10:31:14 409

迪文串口屏例程,在DMG10600C070-03WTC型号测试OK

迪文串口屏例程,在DMG10600C070-03WTC型号测试OK

2024-10-17

QT开发-串口通信-示例代码-ubuntu系统

QT开发-串口通信-示例代码-ubuntu系统

2024-10-13

空空如也

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

TA关注的人

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