从单片机到freertos
文章平均质量分 67
从单片机到freertos,各种干货
CJourneys
cosmicjourneys:我的学习之旅就像宇宙中的浩瀚旅程,不断探索新的知识和技能。
展开
-
嵌入式接口汇总
MOSIMISOCLKCSGNDSDACLKRXTXGNDCAN_HCAN_LVCCD+D-GNDDATA_1~DATA8HSYNCVSYNCCLKGNDR(T)XCPR(T)XCNR(T)XD0PR(T)XD0NR(T)XD1PR(T)XD0P1Mbps,500k,250k,125k模式0:空闲为低电平,上升沿开始采样,最常用的模式。模式1:空闲为低电平,下降沿开始采样。模式2:空闲为高电平,上升沿开始采样。模式3:空闲为高电平,下降沿开始采样。当SPI出现异常时,常用的查找问题方式包括以下几种:检查硬件原创 2024-03-14 14:16:45 · 627 阅读 · 0 评论 -
FreeRTOS 简介
用于在系统空闲时执行一些特定的任务或操作。空闲任务钩子函数是在 FreeRTOS 的空闲任务中执行的,因此系统在没有其它任务需要执行时会调用空闲任务钩子函数,以充分利用系统空闲时间。原创 2024-03-20 14:40:15 · 766 阅读 · 0 评论 -
单片机实现动态内存管理
多数传统的单片机并没有动态内存管理功能。单片机通常具有有限的存储资源,包括固定大小的静态RAM(SRAM)用于数据存储和寄存器用于特定功能。这些资源在编译时被分配并且在程序的整个生命周期中保持不变。原创 2023-08-07 14:12:27 · 901 阅读 · 0 评论 -
嵌入式系统的内存解析
地址映射物理内存映射是指将物理内存的地址范围映射到特定的逻辑地址空间中的过程。具体来说,当处理器访问逻辑地址空间中的某个地址时,操作系统和硬件会根据预定义的映射规则,将该逻辑地址转换为对应的物理地址。以类似0x08000000这样的地址为例,它通常用于映射物理内存中的特定区域,如Flash存储器。在一些嵌入式系统中,Flash存储器通常位于物理地址空间的固定位置,并且这个位置也被映射到逻辑地址空间的固定位置。当操作0x08000000之后的地址就可以操作Flash存储器.原创 2023-08-03 16:12:17 · 436 阅读 · 0 评论 -
C程序设计:状态机
状态机是一种常用的编程模型,用于描述系统的状态和状态之间的转换规则。无论使用何种操作系统或编程框架,状态机都可以用来帮助设计和实现系统的逻辑。即使在使用 FreeRTOS 的情况下,如果系统的逻辑需要描述为多个状态和状态转换,那么状态机仍然是一种很有用的设计工具。在上面的例子中,有两个状态 S1 和 S2,输入有两个选项 A 和 B,输出有四个选项 O1、O2、O3 和 O4。根据当前状态和输入,状态机会根据表格的规则进行状态转移,并输出相应的结果。原创 2023-07-31 14:16:28 · 606 阅读 · 0 评论 -
C程序设计:基于双向链表的flash磨损平衡算法
优势:简单有效:使用链表队列来管理Flash中的数据块,通过遍历链表来查找、更新和新增节点,在Flash中实现磨损平衡。这种实现方式相对简单直观,并且能够有效地管理数据块的使用,减少Flash磨损不平衡的问题。灵活性:链表队列的形式可以灵活地添加、删除和移动节点,从而管理Flash中数据块的布局。这样可以根据程序的需求进行灵活的数据管理操作,提供了一定的灵活性和可扩展性。最大化使用寿命:通过使用链表队列和磨损平衡策略,可以尽可能地均衡使用Flash中的数据块,延长Flash的使用寿命。原创 2023-07-28 13:45:45 · 521 阅读 · 0 评论 -
freeRTOS:基于(队列+线程)的日志系统设计
故障排查与调试:嵌入式系统通常运行在资源有限的环境中,故障排查和调试变得尤为复杂。日志系统可以记录系统在运行过程中的各种操作、状态和事件信息,方便开发人员追踪和定位问题所在。通过分析日志,可以快速找到故障源,并进行相应的修复和调试。系统性能优化:嵌入式系统的资源有限,因此性能优化尤为关键。日志系统可以记录系统运行过程中的性能指标,如任务执行时间、资源利用率等。通过分析这些日志,可以发现系统性能瓶颈,进行性能优化和资源管理,提高系统的响应速度和资源利用效率。原创 2023-07-27 11:00:55 · 730 阅读 · 0 评论 -
单片机中实现bootloader功能
Bootloader是指系统启动的第一段代码,位于计算机或嵌入式设备的非易失性存储器(如闪存、EPROM等)中。它负责初始化硬件设备、加载操作系统内核,并将控制权传递给内核的入口点,开始系统的正常运行。Bootloader的主要功能包括以下几个方面:硬件初始化:Bootloader负责初始化计算机或设备的硬件设备,包括处理器、内存、外设等。这些初始化操作确保系统硬件处于正确的状态,并为后续的操作做好准备。引导加载:Bootloader从存储介质(如闪存)中读取操作系统内核的镜像,并将其加载到内存中。原创 2023-07-24 10:39:27 · 1778 阅读 · 0 评论 -
freeRTOS:消息队列的简单使用
函数将消息发送到消息队列中。该函数接受消息队列句柄、要发送的消息和等待发送的时间(如果队列已满)。函数从消息队列中接收消息。该函数接受消息队列句柄、接收消息的缓冲区以及等待接收的时间(如果队列为空)。函数来创建消息队列,并指定队列的长度和每个消息的大小。函数获取当前在消息队列中的消息数量。函数删除消息队列以释放资源。首先,在任务之间创建一个消息队列。最后,在不再需要使用消息队列时,可以调用。接下来,在发送消息的任务中调用。在接收消息的任务中,调用。原创 2023-07-19 11:44:22 · 389 阅读 · 0 评论 -
I2C接口从原理到应用
I2C(Inter-Integrated Circuit)是一种串行通信接口,用于在集成电路之间进行数字数据传输。它由Philips(现在的NXP Semiconductors)公司在上世纪80年代开发,并已广泛应用于各种电子设备中。下面是I2C接口从原理到应用的简要介绍:原理:I2C接口基于两根线,即串行数据线(SDA)和串行时钟线(SCL设备之间通过这两根线进行双向的通信。在I2C通信中,有两种基本角色:主设备(master)和从设备(slave)。原创 2023-07-13 10:02:24 · 171 阅读 · 0 评论 -
SPI从原理到应用
(Serial Peripheral Interface)是一种,用于在微控制器、传感器、存储器和其他外围设备之间进行数据交换SPI协议使用多路单向通信方式,其中包括一个。主设备通过控制clk以及MISO、MOSICS与从设备进行通信。SPI通信基于全双工传输模式,主设备和从设备之间可以同时发送和接收数据。通信过程由主设备发起,其通过选择特定的片选线来选中从设备。数据交换通过时钟信号同步进行,主设备控制时钟的频率和极性。原创 2023-07-12 15:54:54 · 586 阅读 · 1 评论 -
C程序设计:基于双向链表的软件定时器
基于双向链表的软件定时器是一种常见的实现方式,它可以在操作系统或应用程序中用于管理定时任务。双向链表是一种数据结构,它包含指向前一个节点和后一个节点的指针。在软件定时器的实现中,每个定时任务可以表示为一个节点,节点中包含定时任务的信息,如定时时间、回调函数等。软件定时器可以被添加到硬件定时器中,主线程循环中,另开线程中。原创 2023-07-06 15:37:38 · 369 阅读 · 0 评论 -
C程序设计:基于循环双向链表的事件管理器
基于循环双向链表的事件管理系统是一种用于管理事件的数据结构。它可以用于多种场景,包括计划任务、调度、日程安排等。原理如下:事件节点:每个事件都被表示为一个节点,每个节点包含一些必要的属性,比如事件的名称、开始时间、结束时间等。节点之间通过指针连接形成链表。循环链表:链表的最后一个节点的下一个节点指针指向链表的第一个节点,形成一个循环链表。这样可以方便地进行遍历和循环操作。双向链表:除了通常的单向指针外,每个节点还包含一个指向前一个节点的指针。这样可以在链表中高效地进行向前或向后遍历。原创 2023-07-05 10:11:11 · 128 阅读 · 0 评论 -
C程序设计:一种基于linux内核双向链表的移植
每个链表节点包含两个指针,prev指向前一个节点,next指向下一个节点。在实际使用中,通常会在自定义的数据结构中嵌入,以便将其作为链表节点使用。原创 2023-06-29 13:17:32 · 777 阅读 · 1 评论 -
freeRTOS:串口驱动模板(基于消息队列)
一种基于超时机制+的串口数据收发模板,适合多线程平台 (ESP32+freertos)1.创建freertos的串口队列。2.创建freertos线程在线程中不断读取队列中的数据,再将读到的数据保存在自己写的环形队列中。3.在其他地方对环形队列的数据出队。以上三步完成串口数据的读。写串口则直接通过接口即可。原创 2023-06-28 14:41:44 · 1132 阅读 · 0 评论 -
C程序设计:环形队列
2.环形队列读的速度慢于写时,一旦写的地址到达了读的地址时,队列将被清空。1.在多线程的队列读写,应在读写时加锁来保护。原创 2023-06-28 14:16:42 · 470 阅读 · 0 评论 -
【单片机相关】JLINK 与STM32的SWD连接接线方式
原创 2021-06-18 11:58:08 · 1039 阅读 · 0 评论