- 博客(54)
- 收藏
- 关注
原创 FreeRTOS-定时器详解
本文要讲解的软件定时器总结起来就一句话-两条定时器链表和一条消息队列,一个守护任务,如果你前面的两天延时链表(任务的阻塞与唤醒)与队列理解很深刻,那软件定时就非常简单了。FreeRTOS-时间片与任务阻塞的实现FreeRTOS-消息队列详解。
2023-06-11 20:22:34 8636 7
原创 FreeRTOS-任务通知详解
本文的重点主要有两点:1.搞明白任务通知的三个状态(实现任务通知的关键),2.明白任务通知的优缺点,以及任务通知模拟出来的队列、信号量、事件组与真实的有何区别。
2023-05-24 21:09:21 4542 6
原创 FreeRTOS-事件组详解
事件是一种实现任务/中断间通信的机制,主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。
2023-05-13 21:05:53 8309 1
原创 FreeRTOS-信号量详解
本文将详细全方位的讲解FreeRTOS的信量量,其实你学完了《FreeRTOS-消息队列详解》信号量的学习就非常简单了,因为所有的信号量的本质的都是特殊的队列(特殊在哪里:信号量只有队列头部,并没有后面的环形存储区,也就是说信号量只负责消息传递,并不传递数据),当然这么多信号量也是有区别的,不同的信号量对应不同的应用场景,还是以源码分析为主,源码分析透了,这几种信号量的区别,或者特殊机制(互斥量的优先级继承)就一清二楚了。《FreeRTOS-消息队列详解》
2023-01-27 20:57:20 15796 9
原创 STM32-启动文件详解
还是那句老话基础不牢地动山摇,今天主要来分析由汇编语言编写的启动文件,在进行main函数之前到底做了哪些准备工作,本篇文章所涉及到的部分汇编指令,以及CPU寄存器SP,PC,LR作用,以及最重要的什么是堆和栈请看->《FreeRTOS-ARM架构与程序的本质》,里面已经详细的阐述了以上问题,本文主要是了解启动文件的作用。
2023-01-12 11:28:04 6880 3
原创 FreeRTOS-消息队列详解
本文将详细全方位的讲解FreeRTOS的队列消息,其实在FreeRTOS中队列的重要性也不言而喻,与FreeRTOS任务调度同等重要,因为后面的各种信号量基本都是基于队列的。本文主要围绕(队列的创建、队列的出队、入队函数、队列的环形缓冲区的实现(数据的拷贝、先进先出、以及后进先出的实现)、队列锁、以及队列任务级函数与中断级函数的区别)队列的重要知识,本文都会以源码分析的形式进行解析。!!
2023-01-11 22:47:26 13075 10
原创 STM32SDIO外设详解
STM32SDIO外设详解,详解讲解主机STM32读写SD卡进行数据交互,重点理解SD卡的识别过程以及数据传输过程,理解每个重要命令与响应,彻彻底底理解SD卡的通信过程。
2022-10-24 11:03:16 4856 29
原创 FreeRTOS-任务管理
今天正式开启FreeRTOS应用讲解,本文将采用,先讲解原理然后分析FreeRTOS的源码,最后进行实验,由浅入深讲解FreeRTOS的应用,本文将详细阐述任务的多种状态以及任务状态之间如何切换,多种调度策略,以及空闲任务的作用,主要方式就是深入理解FreeRTOS的源码,才能深刻理解任务如何管理,本质上就是几个函数,几个链表,任务在这几条链表中挂来挂去就实现了任务的状态的切换。
2022-10-15 16:44:28 4541 2
原创 牛客网刷题-两个队列实现栈
前言:想要学好嵌入式,C语言与数据结构是必要熟练掌握的,而想熟练掌握一门语言,必须经过大量的练习,刷题,至少需要一两万行的代码量,才能具有一定的编程能力,至少拿到一个功能,怎么去用编程语言去实现它,从现在开始我要开启刷题之路,提高自己的编程水平,还有最重要的面试能力,最终所有的努力都需要得到面试官的认可才能拿高薪。推荐一款刷题神器 -> 点击跳转进入网站(数据结构算法方向)题目原型:输入输出示例:1.题目分析:题目意思很明确,就是要你用两个队列去实现一个栈,本质就是用两个队列的接口函数去实现栈
2022-10-09 17:55:13 1819 1
原创 FreeRTOS-时间片与任务阻塞的实现
本文将详细阐述FreeRTOS多优先级的实现,时间片的轮转,以及深入理解任务在就绪态与阻塞态如何相互转换,这一切的本质都基于链表,然后在加上一些简单的算法,只要掌握了链表一切都不是什么大问题。《FreeRTOS-链表的源码解析》《FreeRTOS-实现任务调度器》1.定义延时链表与延时链表指针2.任务延时链表初始化prvInitialiseTaskLists()函数。
2022-10-08 19:13:14 8080 5
原创 FreeRTOS-实现任务调度器
本文正式开启对FreeRTOS内核的研究,首当其冲的就是就是任务调度器的实现,任务调度器作为FreeRTOS的核心,因为FreeRTOS的本质就是任务的轮流运行,为了循序渐进的学习,避免一口吃成一个大胖子,本文只实现两个任务的切换,先不管任务的优先级,本文的目的就是将任务切换的全过程分析的透透彻彻,在此之前要深入理解FreeRTOS链表操作,还有ARM架构的知识,我已经帮你们总结好了。《FreeRTOS-链表的源码解析》《FreeRTOS-ARM架构与程序的本质》《FreeRTOS-ARM架构深入理解》
2022-10-04 18:00:00 14000 14
原创 FreeRTOS-ARM架构深入理解
由于FreeRTOS操作系统所涉及的ARM架构的知识较多,而且这是知识对理解FreeRTOS的本质和底层实现至关重要,仿佛ARM架构是为操作系统量身定制一般,所以ARM架构的知识的重要性我就不说了,本篇文章主要是对操作系统底层实现所用到ARM架构的知识进行汇总,所以本篇文章参考《Cortex-M3权威指南》,也是对我上篇文章《FreeRTOS-ARM架构与程序的本质》的补充。同几乎所有的处理器架构一样,Cortex-M处理器在运行时需要栈存储和栈指针(R13)。
2022-09-27 10:15:21 10126 23
原创 牛客网刷题-括号匹配问题
前言:想要学好嵌入式,C语言与数据结构是必要熟练掌握的,而想熟练掌握一门语言,必须经过大量的练习,刷题,至少需要一两万行的代码量,才能具有一定的编程能力,至少拿到一个功能,怎么去用编程语言去实现它,从现在开始我要开启刷题之路,提高自己的编程水平,还有最重要的面试能力。推荐一款刷题神器 -> 点击跳转进入网站(数据结构算法方向)题目原型:输入输出示例:1.题目分析:题目意思很明确,判断要字符串里面的括号是否匹配,首先左右括号的数量要相等,第二要按顺序匹配,成对称状态。2.解题思路:要想解决这个
2022-09-25 22:39:04 2363 6
原创 FreeRTOS-ARM架构与程序的本质
本文将结合ARM架构全面阐述程序的本质(什么是栈/堆,全局变量如何存储),以及深入理解函数调用过程,理解局部变量为啥具有临时性,函数如何传参,如何返回值等等,这些知识是理解FreeRTOS内核本质必要条件,才能深入理解FreeRTOS的任务切换所涉及的内存操作的实质,其重要性也不言而喻了堆和栈说白了都只是内存(单片机上的SRAM)中的一块空闲的空间,只是他们的用法和位置有所区分。栈栈区是从高地址向低地址方向生长:高地址是栈底,低地址是栈顶,也使用高地址空间在使用低地址空间。
2022-09-22 18:00:00 8737 27
原创 牛客网刷题-环形链表
前言:想要学好嵌入式,C语言与数据结构是必要熟练掌握的,而想熟练掌握一门语言,必须经过大量的练习,刷题,至少需要一两万行的代码量,才能具有一定的编程能力,至少拿到一个功能,怎么去用编程语言去实现它,从现在开始我要开启刷题之路,提高自己的编程水平,还有最重要的面试能力。推荐一款刷题神器 -> 点击跳转进入网站(数据结构算法方向)题目原型:输入输出示例:1.题目分析:题目中让我们判断一个链表是否带环,题目所说的带环不是环形链表的意思,而是最后一个结点又会重新指向前面某个结点,形成像一个环一样。2.
2022-09-20 18:28:57 1648 23
原创 FreeRTOS-链表的源码解析
FreeRTOS的学习,从RTOS的源码升入理解到RTOS的熟练应用,真正理解FreeRTOS的底层,但是要想阅读源码要求对C语言的指针与结构体,数据结构的链表和队列的知识的基本功要非常扎实,以及ARM的架构有所了解,本篇文章就带你们深入理解FreeRTOS的链表实现,以及为什么要这样实现,链表和队列贯穿整个操作系统,重要性就不言而喻了。《C语言链表超详解》《自定义类型-结构体详解》《指针超详解》
2022-09-13 18:42:57 8494 37
原创 牛客网刷题-合并两个排序的链表
前言:想要学好嵌入式,C语言与数据结构是必要熟练掌握的,而想熟练掌握一门语言,必须经过大量的练习,刷题,至少需要一两万行的代码量,才能具有一定的编程能力,至少拿到一个功能,怎么去用编程语言去实现它,从现在开始我要开启刷题之路,提高自己的编程水平,还有最重要的面试能力。推荐一款刷题神器 -> 点击跳转进入网站(数据结构算法方向)题目原型:输入输出示例:1.题目分析:两个有序链表合并成一个新的有序链表,有几种特殊情况当两个链表为空则新链表为空,其中一个链表为空则新链表为另一个不为空的链表。2.解题思
2022-09-11 18:00:00 1689 37
原创 牛客网刷题-反转链表
前言:想要学好嵌入式,C语言与数据结构是必要熟练掌握的,而想熟练掌握一门语言,必须经过大量的练习,刷题,至少需要一两万行的代码量,才能具有一定的编程能力,至少拿到一个功能,怎么去用编程语言去实现它,从现在开始我要开启刷题之路,提高自己的编程水平,还有最重要的面试能力。推荐一款刷题神器 -> 点击跳转进入网站(数据结构算法方向)题目原型:输入输出示例:1.题目分析:题目意思很简单就是链表头尾交换,将整个链表反向连接起来,实现之后返回新链表的头结点。2.解题思路:思路二:头插法创建一个新的空链
2022-09-02 23:41:12 1281 18
原创 STM32液晶显示中英文
为什么要有字模但是如果仅有字符编码,计算机还不知道该如何表达该字符,因为字符实际上是一个个独特的图形,计算机必须把字符编码转化成对应的字符图形人类才能正常识别,因此我们要给计算机提供字符的图形数据,这些数据就是字模,多个字模数据组成的文件也被称为字库,计算机显示字符时,根据字符编码与字模数据的映射关系找到它相应的字模数据,液晶屏根据字模数据显示该字符。......
2022-08-24 18:42:48 5549 7
原创 STM32液晶显示
液晶控制的基本原理,FSMC模拟8080时序实现与液晶控制器ili9341通信从而控制液晶屏,液晶驱动初始化、常用指令。
2022-08-12 18:22:51 8497 6
原创 STM32ADC模拟/数字转换详解
ADC单通道中断读取,ADC多通道DMA读取,双ADC多通道同步规则DMA读取,ADC温度传感器读取,模拟看门狗,和按键外部触发ADC转换
2022-06-30 18:00:00 17419 39
原创 函数栈帧的形成与释放
要彻底理解临时变量为何具有临时性,以及函数传参到底是如何形成临时拷贝,是否函数传参一定会形成临时拷贝,以及返回值是如何返回
2022-06-22 18:00:00 2243 15
原创 STM32SPI协议通信详解
深入讲解SPI协议通信时序,详细解析SPI读写串行FALSH实验,NorFlash的存储特性以及读写指令的详细介绍!!!
2022-05-21 17:51:43 12659 55
原创 STM32硬件I2C与软件模拟I2C超详解
I2C协议时序详细解剖,硬件I2C的实现,已经软件模拟I2C的实现,以及EEPROM的详细介绍
2022-05-12 16:13:40 63580 134
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人