- 博客(18)
- 收藏
- 关注
原创 多线程(四)----线程安全
线程安全问题的万恶之源就是多线程的抢占式执行所带来的随机性.有了多线程, 此时抢占式执行下, 代码执行的顺序, 会出现更多的变数, 代码执行顺序的可能性就从一种情况变成了无数种情况. 只要有一种情况使得代码结果不正确, 都是视为bug, 线程不安全.
2025-03-18 21:02:04
1153
原创 GPIO输入
按键是一个常见的输入设备, 按下导通, 松开断开· 按键存在的一个问题就是, 按键抖动原因: 按键内部使用的是机械式弹簧片来进行通断的, 所以在按下和松手的瞬间会伴随有一连串的抖动解决办法: 加一段延时, 将抖动时间通过延时的方法略过。
2025-02-08 22:01:30
297
原创 多线程(一)
进程最主要的目的是为了解决""的问题,因为CPU进入了多核的时代,想要进一步提高程序的执行速度,就需要充分地利用CPU的多核资源,还需要程序代码能够把这些CPU核心给利用起来虽然解决了并发编程的问题,已经利用起CPU多核资源,但是进程的开销比较大(),形象一些来说就是",重在上。
2025-02-07 17:27:00
468
原创 Java List + ArrayList 详解
在集合框架中, List是一个接口, 继承Collection接口, Collection接口 继承 Iterable接口;Collection接口规范了容器中常用的一些方法:实现Iterable 接口是为了让对象可以被 for-each 循环遍历, 以下是Iterable接口的一些方法List 是一个线性表, 即有N个相同类型元素的有限序列, 在该序列上可以执行增删改查以及变量登操作. List接口中提供了一系列方法, 具体如下:常用方法在下面Arraylist中介绍;
2025-02-05 18:41:52
828
原创 LED闪烁 + 流水灯 + 蜂鸣器
LED灯闪烁大致需要三个步骤, 首先是使用RCC开启GPIO的时钟,其次是初始化GPIO,最后就是使用输出或者输入的函数控制GPIO, 这里涉及到RCC和GPIO两个外设先上代码首先要做的就是配置时钟, 在Library中找到rcc.h的头文件, 其中有很多关于RCC时钟的函数, 其中, 最常用的就是这三个函数.第一个参数选择外设, 第二个参数选择使能或失能要点亮PA0口的LED, 所以选择RCC_APB2外设_GPIOA这一项, 置为第一个参数, 然后第二个参数选择ENABLE, 这样时钟就开启了。
2025-02-02 18:15:03
810
原创 STM32新建工程
打开keil5,新建一个工程点击第一个(NewuVisionProject)新建完文件名后选到所用的芯片后,点击OK,随后找到工程文件夹,新建三个文件夹。
2025-01-20 01:44:06
414
原创 集合 + 复杂度
首先array数组是存储数据所必需的, 故不算, 进入for循环, 创建的是临时变量, 临时变量在一次for循环结束后, 就会自动销毁释放空间, 故临时变量仅能算一个.故当前代码的时间复杂度 (n-1)*1 = n-1 故时间复杂度为O(n)每调用一次函数, 就会在栈上开辟一个空间, 故空间复杂度应为O(n)空间复杂度是O(n), 因为fibArray的空间取决于输入变量n。递归的时间复杂度 = 递归的次数 * 每次递归之后执行的次数。时间复杂度: 算法中的基本操作的执行次数, 为算法的时间复杂度。
2024-12-30 23:27:21
427
原创 STM32 LED、蜂鸣器和面包板简介
LED:发光二极管,正向通电点亮,反向通电不亮的一端为极,的一端为极· 以下两张图,是用STM32 GPIO口驱动LED灯R1作用: ①防止LED因为电流过大而烧毁 ②调整LED的亮度低电平驱动的电路(低点亮)高电平驱动的电路(高点亮)两种电路的选择,看例如,在推挽输出的模式下,高低电平均有较强的驱动能力,故两种接法均可但是基本上,因为很多单片机或者芯片都使用了""的原则。
2024-04-03 22:40:15
1142
1
原创 8051指令系统与编程基础(一)
寻址方式------在指令中说明操作数所在地址的方法一般说,寻址方式越多,功能就越强大。灵活性则越大,指令系统就越复杂寻址方式所要解决的主要问题就是如何在整个存储器和寄存器的寻址空间内快速地找到指定的地址单元指令系统的寻址方式包括:接下来我们来一一介绍。
2024-03-28 03:24:16
1327
原创 STM32 GPIO
GPIO(General Purpose Input Output) 通用输入输出口· 可配置为8种输入输出模式· 引脚电平: 0V-3.3V,部分引脚可容忍5V(参考STM32的引脚定义,带FT可容忍5V)· 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等· 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
2024-03-28 02:45:46
2224
原创 内存管理
有两个进程分别在内存上使用0x1000-0x1FFF和0x8000-0x8FFF的地址范围, 比如现在在操作进程一,在修改进程一的代码,但是如果当进程一的代码出现bug,指针跳出进程一的地址范围,进入进程的地址范围,就会改掉进程二的代码,从而导致进程二崩溃.虚拟地址空间是程序中所获取到的内存地址,并非是真实的物理内存的地址,而是经过了 一层抽象,虚拟出来的地址,我们所学过的C语言指针指向的就是虚拟的内存地址.所以需要针对进程使用的内存空间进行"隔离",从而引入了虚拟地址空间。但是内存也是真是存在的东西。
2024-03-27 15:39:00
697
1
原创 STM32 简介
ST公司基于ARM Cortex-M内核开发的32位微控制器。STM32功能强大, 性能优异,片上资源丰富、功耗低,是一款。供电: 2.0~3.6V(标准3.3V)广泛,例如无人机,智能车,机器人等。内核: ARM Cortex-M3。接下来我们来看看它的引脚示意图。
2024-03-20 16:53:28
213
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人