摘要: 为什么要打开时钟:芯片是低功耗的,芯片复位之后外设都是关闭状态,要用外设之前都需要打开外设的时钟 时钟相当于外设的开关,不打开时钟,则晶振产生的振荡信号就无法输入到MCU内部的外设中,则没有时钟信号,触发器无法触发,则触发器无法锁存数据,而寄存器是由N个触发器组成,所以寄存器就无法工作,而控制硬件, 阅读全文
posted @ 2025-07-11 19:53 w1888 阅读(38) 评论(0) 推荐(0)
摘要: ![image-20250529161735378](https://img2024.cnblogs.com/blog/3630813/202507/3630813-20250711195152882-1537311252.png) ![image-20250625134752261](https://img2024.cnblogs.com/blog/3630813/202507/3630813- 阅读全文
posted @ 2025-07-11 19:51 w1888 阅读(7) 评论(0) 推荐(0)
摘要: 特性 TCP UDP 面向连接 是(需握手) 否(直接发) 可靠性 高,丢包重传,顺序保证 低,不重传,不保证顺序 速度 较慢(复杂) 快(轻量) 是否有拥塞控制 有 无 数据单位 字节流 数据报(报文段) 应用场景 Web、文件传输、聊天系统等 视频、音频、DNS、游戏等 阅读全文
posted @ 2025-07-11 19:51 w1888 阅读(10) 评论(0) 推荐(0)
摘要: 标准 I/O(stdio)是基于系统 I/O 封装的一套高级接口,它使用了用户态缓冲区来提高读写效率,减少系统调用次数。 **** 工作流程简要如下: 标准 I/O(如 fread()、fgets())内部会调用系统 I/O 接口(如 read())从文件中读取数据。 读取的数据会先进入内核空间的缓 阅读全文
posted @ 2025-07-11 19:49 w1888 阅读(7) 评论(0) 推荐(0)
摘要: 点击查看代码 uint8_t SPI3_Send(u8 val) { int i = 0; uint8_t data = 0; //1.SCK引脚输出低电平 MFRC522_SCK(0); delay_us(5); //2.循环发送8次,每次发送一个bit 遵循MSB 高位先出 for(i=0;i< 阅读全文
posted @ 2025-07-11 19:47 w1888 阅读(10) 评论(0) 推荐(0)
摘要: 点击查看代码 int main() { //1.硬件的初始化 LED_Config(); //可以看到一个脉冲信号的周期是20ms,其中高电平持续19ms,所以占空比高,由于LED灯是低电平亮,所以占空比越高LED越暗 while(1) { GPIO_ResetBits(GPIOF,GPIO_Pin 阅读全文
posted @ 2025-07-11 19:47 w1888 阅读(18) 评论(0) 推荐(0)
摘要: 定时器频率来自总线,总线来自系统时钟,系统时钟来自 PLL,PLL来源于 HSE/HSI(时钟源)。 时钟源:①HSE高速外部时钟 ②HSI高速内部时钟 ③LSE低速外部时钟 ④LSI低速内部时钟 ⑤PLL倍频锁相环 [HSE / HSI] ↓ [PLL] ← 倍频模块 ↓ SYSCLK ← 系统主 阅读全文
posted @ 2025-07-11 19:46 w1888 阅读(43) 评论(0) 推荐(0)
摘要: PN 结是指将P型半导体和N型半导体连接在一起后,在它们的交界面处形成的一个结区,是半导体器件(如二极管、三极管、MOS管等)的基本结构单元。二极管:只允许电流从 P → N 单向流动,LED 发光二极管:在正向导通时发光。 正向偏置原理图(导通): 电源+ P区 → N区 电源- | | | ↑↑ 阅读全文
posted @ 2025-07-11 19:43 w1888 阅读(67) 评论(0) 推荐(0)
摘要: 死锁的产生: (1) 资源互斥 (2) 循环等待 (3) 不可剥夺 (4) 请求保持 死锁的解决: (1) 避免持多个锁 (2) 采用超时机制 (3) 尽快释放资源 阅读全文
posted @ 2025-07-11 19:42 w1888 阅读(6) 评论(0) 推荐(0)
摘要: 1.结构体、联合体字节对齐 2.循环队列牺牲一块空间,判断满队 3.标准io有输入、输出缓冲区,减少使用read和write调用的次数。 4.BMP图片一行大小为4的倍数 5.在使用LVGL图形库时,采用多缓冲来提高图形的刷新效率 阅读全文
posted @ 2025-07-11 19:41 w1888 阅读(5) 评论(0) 推荐(0)
摘要: 1.取消字节对齐 2.用一个循环,循环里面每次获取A的一个字符并写入到文件B中 3.在使用LVGL图形库的时候,采用局部渲染的方式少量多次来进行显示,节约内存空间 阅读全文
posted @ 2025-07-11 19:40 w1888 阅读(3) 评论(0) 推荐(0)
摘要: 冒泡排序 //从左向右升序 void BubbleSort(int buf[10],int bufsize){ int temp=0; //第几轮 for(int i=1;i < bufsize;++i) { for(int j=0;j < bufsize-i;++j) { if(buf[j]>bu 阅读全文
posted @ 2025-07-11 19:39 w1888 阅读(6) 评论(0) 推荐(0)
摘要: 如果采用的是32bit的linux系统,则每个运行的程序都会得到4G大小的内存空间,只不过每个程序得到的4G大小的内存都是虚拟内存,而物理内存才只有4G,物理内存是真实存在的,而虚拟内存是通过映射得到的。 (1) 保留区 保留区也可以称为不可访问区域,用户是没有权限访问的,对于Linux系统而言,保 阅读全文
posted @ 2025-07-11 19:36 w1888 阅读(95) 评论(1) 推荐(0)
摘要: sudo su root :切换超级用户 mkdir 目录名 :创建目录 touch 文件名 :更新文件时间戳,若这个文件不存在则创建 rm -r :递归地删除目录及其内容 cd :切换路径 mv /home/test/a.txt /home/test/b.txt :将a.txt重命名为b.txt 阅读全文
posted @ 2025-07-11 19:32 w1888 阅读(4) 评论(0) 推荐(0)
摘要: 1.创建解码对象,并初始化 2.创建错误处理对象,并和解码对象绑定 3. 打开待解码的图片 4.读取图像信息(文件头) (可选)5.设置解码参数 6.开始解码 7.循环读取图片颜色分量(以行为单位) 8.解码完成 9.释放解码对象 阅读全文
posted @ 2025-07-11 19:29 w1888 阅读(57) 评论(0) 推荐(0)