
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
至此,我们已经掌握了 I2C 通信的原理与基本用法。最后,我们来系统地总结一下 I2C 的优势与局限。只需两根信号线(SCL、SDA),节省引脚、简化布线,适合板载多设备芯片之间的通信;支持多主机与多从机架构,具有高度灵活性;软件和硬件实现皆可,可以根据不同的需求,选择不同的实现;功能完善强大,支持寻址,应答,主机切换,主从数据发送等功能;成本低廉,无需专用通信器件,仅依赖通用 IO 与上拉电阻即
CPU 在进行上下文切换时,需要将寄存器中的执行状态保存到 SRAM 中。而在 FreeRTOS 系统中,系统往往同时存在多个任务。为了保证每个任务在被切换回来时,都能够继续从原来的位置正确执行,这些上下文信息显然不能混在一起保存。因此,FreeRTOS 为每一个任务,在 SRAM 中划分出一块独立且专属的内存区域,用于保存该任务的运行状态以及相关的工作数据。那么,这块属于“任务”的内存区域具体包
本文的内容标题叫做《FreeRTOS的任务调度》,是纯粹的理论课程,但是重点中的重点。FreeRTOS 的任务调度,是整个 RTOS 学习中最核心、最需要理解的一部分。如果这部分内容不求甚解,那么到后续学习FreeRTOS的使用,就会彻底变成“API Caller”,而且将完全无法调试FreeRTOS。调度任务这两个中文名词非常简单,大家都知道它们啥意思。但是在FreeRTOS中,它们是核心的专业
了解完FreeRTOS的任务调度机制,关于FreeRTOS的前置理论,我们就大体上搞定了。虽然还有很多理论需要学习,但我们暂缓一下脚步,在这一章节中,我们先把FreeRTOS集成到我们的项目中。先跑起来再说。基于SPL标准外设库模板工程,集成FreeRTOS,形成一个新的带FreeRTOS的标准库开发工程模板。再顺便,我们来讲一讲HAL库的开发方式,也讲一讲在HAL库开发工程中集成FreeRTOS
一个完整的计算机网络主要由硬件、软件、协议三部分构成。硬件是网络互联的物理构成(双绞线/光纤/路由器/交换机/网卡/主机…);软件是硬件正常运行的驱动(操作系统/聊天软件/APP…);协议是数据传输时, 数据在硬件之间流转的约定和规范。计算机网络的构成有 广域网、城域网、局域网、…计算机中的网络节点和线路的集合关系, 有常见的总线、星型、环状、网状…IP协议是四层模型中的核心协议,TCP、UDP协
这里的功能不固定,我也是随用随加的。因为我的项目比较简单,帧的类型不多,我就在我所有的节点实现的代码中的这部分初始化了四种帧格式,这样就发送起来简单,另外就是不需要来回的看和翻找确认了,尽管这对于程序来讲是一个无意义且浪费资源的行为,但是可以极大的便利我们,当然注释放在这里一样可以提醒,但是这样还有另外一个好处就是,我们做环回测试的时候,可以更方便的在一个MCU配置过滤器。其实和USART的思路大
消息队列(Queue)信号量(Semaphore)消息队列主要用于任务与任务、任务与中断之间传递数据信号量主要用于任务同步以及资源管理消息队列的作用几乎是不可替代的。如果需要在任务与任务,或者任务与中断之间传递数据,那么消息队列通常都是首选机制。但在实际应用中,很多时候并不需要传递数据。中断通知任务一个任务唤醒另一个任务某个事件发生后通知任务继续执行这种情况,本质上只是 发送通知和接收通知。二值信
当然了这只是演示它的功能,正常我们还是需要配置中断来接收消息的这样会更合理,另外就是我们现在是环回模式只是用来自测,那么如果实现真正的通信需要修改什么呢?//只需要修改这个参数就好了 CAN_InitStruct . CAN_Mode = CAN_Mode_LoopBack;
直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。两个DMA控制器有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。上面来自官方文档对DMA的解释,从最后一句话,仲裁器协
到这里为止,三种常见的信号量机制:二值信号量、计数信号量、互斥信号量,我们已经全部学完了。我们可以对 信号量相关的操作 API 做一个简单的总结。三种信号量的创建函数各不相同,但本质上都是创建消息队列,返回消息队列句柄。释放信号量都使用xSemaphoreGive()函数:对于二值信号量而言,释放信号量表示信号状态从无到有,从0到1。对于计数信号量和互斥信号量而言,释放信号量表示资源被释放,可用资







