03 2025 档案

摘要:第六十二章 SDIO-FatFs移植与读写测试 1. FatFs移植步骤 上一章我们已经完成了SD卡驱动程序以及进行了简单的读写测试。该工程有很多东西是现在可以使用的,所以我们先把上一章的工程文件完整的拷贝一份, 并修改文件夹名为“SDIO-FatFs移植与读写测试”,如果此时使用KEIL软件打开该 阅读全文
posted @ 2025-03-10 18:49 hazy1k 阅读(0) 评论(0) 推荐(0) 编辑
摘要:第六十一章 SDIO-SD卡读写测试 1. 硬件设计 STM32控制器的SDIO引脚是被设计固定不变的,开发板设计采用四根数据线模式。对于命令线和数据线须需要加一个上拉电阻。 2. 软件设计 2.1 前提须知 际上,SD卡是非常常用外设部件,ST公司在其测试板上也有板子SD卡卡槽, 并提供了完整的驱 阅读全文
posted @ 2025-03-10 13:03 hazy1k 阅读(0) 评论(0) 推荐(0) 编辑
摘要:第三十一章 SDIO-SD卡读写 1. SDIO简介 SD卡(Secure Digital Memory Card)在我们生活中已经非常普遍了,控制器对SD卡进行读写通信操作一般有两种通信接口可选, 一种是SPI接口,另外一种就是SDIO接口。SDIO全称是安全数字输入/输出接口,多媒体卡(MMC) 阅读全文
posted @ 2025-03-09 17:26 hazy1k 阅读(10) 评论(0) 推荐(0) 编辑
摘要:第十五章 CPU使用率统计 1. CPU利用率的基本概念 CPU 使用率其实就是系统运行的程序占用的 CPU 资源,表示机器在某段时间程序运行的情况,如果这段时间中,程序一直在占用 CPU 的使用权,那么可以人为 CPU 的利用率是 100%。 CPU 的利用率越高,说明机器在这个时间上运行了很多程 阅读全文
posted @ 2025-03-09 11:09 hazy1k 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第十四章 中断管理 1. 异常与中断的基本概念 异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果不及时进行处理,轻则系统出错,重则会导致系统毁灭性瘫痪。所以正确地处理异常,避免错误的发生是提高软件鲁棒性(稳定性)非常重要的一环,对于实时系统更是如此。 异常是指任何打断处理器正常执行,并且 阅读全文
posted @ 2025-03-09 10:46 hazy1k 阅读(1) 评论(0) 推荐(0) 编辑
摘要:第十三章 内存管理 1. 内存管理的基本概念 在计算系统中,变量、中间数据一般存放在系统存储空间中,只有在实际使用时才将它们从存储空间调入到中央处理器内部进行运算。通常存储空间可以分为两种:内部存储空间和外部存储空间。内部存储空间访问速度比较快,能够按照变量地址随机地访问,也就是我们通常所说的 RA 阅读全文
posted @ 2025-03-08 15:10 hazy1k 阅读(3) 评论(0) 推荐(0) 编辑
摘要:第十二章 任务通知 1. 任务通知的基本概念 FreeRTOS 从 V8.2.0 版本开始提供任务通知这个功能,每个任务都有一个 32 位的通知值,在大多数情况下,任务通知可以替代二值信号量、计数信号量、事件组, 也可以替代长度为 1 的队列(可以保存一个 32 位整数或指针值) 。 相对于以前使用 阅读全文
posted @ 2025-03-08 14:40 hazy1k 阅读(3) 评论(0) 推荐(0) 编辑
摘要:第十一章 软件定时器 1. 软件定时器的基本概念 定时器,是指从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户可以自定义定时器的周期与频率。类似生活中的闹钟,我们可以设置闹钟每天什么时候响,还能设置响的次数,是响一次还是每天都响。 定时器有硬件定时器和软件定时器之分: 硬件定时器是芯片 阅读全文
posted @ 2025-03-07 13:22 hazy1k 阅读(8) 评论(0) 推荐(0) 编辑
摘要:第十章 事件 1. 事件的基本概念 事件是一种实现任务间通信的机制,主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。与信号量不同的是,它可以实现一对多,多对多的同步。即一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒 阅读全文
posted @ 2025-03-06 20:30 hazy1k 阅读(6) 评论(0) 推荐(0) 编辑
摘要:第九章 互斥量 1. 互斥量基本概念 互斥量又称互斥信号量(本质是信号量),是一种特殊的二值信号量,它和信号量不同的是,它支持互斥量所有权、递归访问以及防止优先级翻转的特性,用于实现对临界资源的独占式处理。任意时刻互斥量的状态只有两种,开锁或闭锁。当互斥量被任务持有时,该互斥量处于闭锁状态,这个任务 阅读全文
posted @ 2025-03-06 20:29 hazy1k 阅读(7) 评论(0) 推荐(0) 编辑
摘要:第八章 信号量 同志们, 回想一下, 你是否在裸机编程中这样使用过一个变量:用于标记某个事件是否发生,或者标志一下某个东西是否正在被使用,如果是被占用了的或者没发生,我们就不对它进行操作。 1. 信号量基本概念 信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的 阅读全文
posted @ 2025-03-05 13:32 hazy1k 阅读(10) 评论(0) 推荐(0) 编辑
摘要:https://www.cnblogs.com/hazy1k/category/2447699.html 阅读全文
posted @ 2025-03-04 21:30 hazy1k 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第一章 MATLAB基础知识 1. 一般运算符和操作符 一般运算符和操作符构成运算的基本的操作指令,如加+减-乘**除/和乘方^等运算,这些操作指令几乎在所有计算机语言中都有,且大同小异。在MATLAB中,几乎所有的操作都是以矩阵为基本运算单元的,这与其他计算机语言有很大不同,也是MATLAB的重要 阅读全文
posted @ 2025-03-04 21:29 hazy1k 阅读(7) 评论(0) 推荐(0) 编辑
摘要:第七章 消息队列 1. 消息队列的基本概念 队列又称消息队列,是一种常用于任务间通信的数据结构, 队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务能够从队列里面读取消息,当队列中的消息是空时,读取消息的任务将被阻塞,用户还可以指定阻塞的任务时间 阅读全文
posted @ 2025-03-04 15:48 hazy1k 阅读(14) 评论(0) 推荐(0) 编辑
摘要:第六十章 RTC-闹钟 1. 硬件设计 参考RTC-万年历实验 2. 软件设计 2.1 编程大纲 时间结构体定义 闹钟工作机制配置 主函数测试 2.2 代码分析 其他地方与RTC-万年历类似,此处只分析main函数不同之处 2.2.1 时间结构体配置 /*时间结构体,默认时间2000-01-01 0 阅读全文
posted @ 2025-03-03 23:01 hazy1k 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第六章 任务管理 1. 任务的基本概念 FreeRTOS 的任务可认为是一系列独立任务的集合。每个任务在自己的环境中运行。在任何时刻,只有一个任务得到运行, FreeRTOS 调度器决定运行哪个任务。调度器会不断的启动、停止每一个任务,宏观看上去所有的任务都在同时在执行。作为任务,不需要对调度器的活 阅读全文
posted @ 2025-03-03 20:58 hazy1k 阅读(9) 评论(0) 推荐(0) 编辑
摘要:第五章 FreeRTOS启动流程 在目前的 RTOS 中,主要有两种比较流行的启动方式,暂时还没有看到第三种,接下来我将通过伪代码的方式来讲解下这两种启动方式的区别,然后再具体分析下 FreeRTOS的启动流程。 1. 万事俱备,只欠东风 这种方法是在 main 函数中将硬件初始化, RTOS 系统 阅读全文
posted @ 2025-03-03 13:58 hazy1k 阅读(8) 评论(0) 推荐(0) 编辑
摘要:第四章 创建多任务-SRAM动态内存 创建多任务只需要按照创建单任务的套路依葫芦画瓢即可,接下来我们创建两个任务,任务 1 让一个 LED 灯闪烁,任务 2 让另外一个 LED 闪烁,两个 LED 闪烁的频率不一样 #include "FreeRTOS.h" #include "task.h" #i 阅读全文
posted @ 2025-03-03 13:23 hazy1k 阅读(2) 评论(0) 推荐(0) 编辑
摘要:第三章 创建单任务-SRAM动态内存 这里,我们创建一个单任务,任务使用的栈和任务控制块是在创建任务的时候FreeRTOS 动态分配的,并不是预先定义好的全局变量。 1. 动态内存空间的堆从哪里来 在创建单任务—SRAM 静态内存的例程中,任务控制块和任务栈的内存空间都是从内部的 SRAM 里面分配 阅读全文
posted @ 2025-03-02 22:37 hazy1k 阅读(2) 评论(0) 推荐(0) 编辑
摘要:第二章 创建单任务-SRAM静态内存 我们创建一个单任务,任务使用的栈和任务控制块都使用静态内存,即预先定义好的全局变量,这些预先定义好的全局变量都存在内部的 SRAM 中。 1. 定义任务函数 // LED任务函数 static void LED_Task(void* parameter) { w 阅读全文
posted @ 2025-03-02 17:17 hazy1k 阅读(6) 评论(0) 推荐(0) 编辑