草庐IT

Phytium-FreeRTOS

全部标签

【智能家居项目】FreeRTOS版本——将裸机程序改造成FreeRTOS程序 | DHT11温湿度传感器

🐱作者:一只大喵咪1201🐱专栏:《智能家居项目》🔥格言:你只管努力,剩下的交给时间!如上图所示是裸机版本的智能家居项目总体框架结构,这篇文章开始,本喵要带着大家逐渐将智能家居项目从逻辑版本改为FreeRTOS版本,并且要增加温湿度显示和网络时间获取两个功能。目录😸裸机程序的不足😸合并代码😸改造😹思路😹将环形缓冲区改为队列😹队列调试😸DHT11温湿度传感器😹时序及驱动层代码😹其他层代码😸总结😸裸机程序的不足intmain(){ while(1) { if(按键按下) { 点亮LED灯(); } if(网络输入) { OLED显示(); LED控制(); 风扇控制(

freeRTOS任务优先级

一、freeRTOS任务优先级在FreeRTOS中,任务的优先级是用数字表示的,数字越大,优先级越高。通常情况下,0是最低优先级,而configMAX_PRIORITIES-1(configMAX_PRIORITIES是在FreeRTOS配置文件中定义的)是最高优先级。FreeRTOS还支持动态优先级调度,这意味着任务的优先级可以在运行时进行更改。这种灵活性使得系统能够在运行期间根据需要对不同任务的优先级进行调整。需要注意的是,在设计多任务应用程序时,必须非常小心地选择和使用任务的优先级,否则可能会导致一些问题,如优先级反转、死锁等。因此,应该结合实际的应用场景来合理设置任务的优先级,以确保系

【硬件+代码】STM32F103_FreeRTOS_扫地机器人_带支持IAP的Bootloader

资料下载:https://download.csdn.net/download/wouderw/87540711一、概述    使用STM32F103芯片,FreeRTOS系统开发的扫地机器人项目,支持多种外设和功能,比如电机、按键、LED、ADC(电池温度检测、边刷电流检测和放电电流IBAT)、电池管理、陀螺仪、掉落检测、悬空传感器、碰撞传感器、超声波距离传感器、垃圾盒检测、捕获输入等。    Bootloader支持IAP功能,可方便升级固件。二,代码1,代码注释完整、规范文件、函数、全局变量、局部变量都有完善的注释,阅读学习无障碍。 2,目录结构清晰从上面截图的左边部分,也可以看出每个外

stm32 freeRTOS lwip TCP快速发送,内存泄露问题

现象1:发送缓慢,tcp_write之后要等200多ms才能过发送出去,而且粘包严重。解决办法tcp_write之后,立马调用tcp_output,tcp就会立马发送。tcp_writetcp_output现象2:持续快速发送和接受TCP数据出现断言pbufsonqueue=>atleastonequeuenon-emptytcp_receive:validqueuelength而且出现TCP断连,死机情况。其实就是一句话主程序和以太网中断程序中对PCB->unsent之类的处理出现了问题,tcp_write不是没有临界保护,导致中断和主程序直接出现了共同操作((pcb)->snd_buf)(

CmBacktrace库详解-以Cortex-M3/M4+FreeRTOS为例

1.为什么写这篇文章        相信很多做FreeRTOS开发的同学在查找偶现的死机问题时,都希望能有一个像Linuxcoredump一样的机制,能够将死机现场的寄存器信息和调用栈保存起来,但原生的FreeRTOS并没有提供类似机制。朱天龙老师的CmBacktrace库则是提供了一种针对ARMCortex-M系列MCU的死机现场和断言触发现场信息保存的方法。        CmBacktrace源码在Github和gitee上均可下载,这里贴一下不需要梯子的gitee仓库地址:CmBacktrace:ARMCortex-M系列MCU错误追踪库,有需要的同学可以自行前往下载。        

彻底理解FreeRTOS中的队列(Queue)

“队列”(Queue)提供了任务与任务之间通信的机制。在这样的场景:一个或多个其他的任务产生数据,主任务要依次处理数据,队列就显得非常有用了。参考资料:《MasteringtheFreeRTOSRealTimeKernel》-Chapter4 QueueManagementFreeRTOS全解析-5.队列(Queue)目录1.队列的特征1.1数据存储1.2读取队列时阻塞1.3写入队列时阻塞1.4在多个队列上阻塞2.使用队列2.1创建队列2.2往队列发送数据2.3从队列接收数据2.4查询队列中的项数2.5例子3.任务接收不同数据4.当数据非常大,或者大小不定时4.1用队列传输大数据4.2用队列传

GD32F303调试小记(十)之LVGL移植(FreeRTOS)

一、前言在上文中,我们成功的移植进了FreeRTOS,接下来我们在此基础上,移入我们的LVGL图形界面库。二、LVGL一款用于绘制界面UI的开源库,让硬件资源更少的MCU跑出显示效果理想的界面。实际效果可以参考官方或者视频网站上开发者公布出来的界面效果。从官方的Github上来看,最早的公开为V5版本,V6和V7版本已经确定不再更新,目前LVGL官方团队仍在更新V8版本,我们可以看到V8里还有不少小版本。截至本文编写发布,LVGL正式发布的版本已至V8.3.7。从V8版本开始由于LVGL官方团队对API做了很大的调整,并不是很兼容V7及以前的版本。这里我们做个区分。使用的版本越新,意味着LVG

RISCV处理器的中断过程及移植FreeRTOS系统的相关知识总结

文章目录RISCV内部与中断相关的信号中断及异常发生的具体流程RISC-V架构中断触发的条件MIE、MPIE深层含义M()IE深层含义M()IP信号深层含义FreeRTOS内的中断服务处理程序FreeRTOS内的堆栈指针关键RISCV内部与中断相关的信号mcause_interrupt指示当前触发的是中断还是异常:1——中断、0——异常。mcause_exceptionCode[3:0]标识中断异常编码,如下表所示。异常编码异常种类0指令地址未对齐1取指失败2非法指令3断点4内存数据读取地址未对齐5内存数据读取失败6内存数据写入地址未对齐7内存数据写入失败11环境调用中段编码中断种类3软件中断

【单片机学习笔记】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc环境搭建

为摒弃在接受keil邮件,研究了下gun编译,以STM32F407为例,简单记录1.软件包准备Git选择对应版本直接安装即可https://git-scm.com/download/winmakegcc​1)将上述软件包放置于C盘根目录2)添加环境变量3)cmd命令行测试环境分别输入make-vgcc-v2.编写makefile#------------------------------------------------##@fileMakefile(basedongcc)#@authorurien#@versionv1.0.0##ChangeLog:#2023-10-20#-------

《Mastering the FreeRTOS Real Time Kernel》读书笔记(7)事件组

8.事件组之前已经介绍了多任务之间的交流桥梁,包括了队列和信号量。与队列和信号量不同:事件组允许任务在“阻塞”状态下等待一个或多个事件的组合发生。事件组在事件发生时,取消等待同一事件或事件组合的所有任务的阻塞状态。事件组的这些独特属性可用于同步多个任务、向多个任务广播事件、允许任务在“阻塞”状态下等待一组事件中的任何一个事件发生,以及允许任务在阻止状态下等待多个操作完成。事件组还提供了减少应用程序使用的RAM的机会,因为通常可以用单个事件组替换许多二进制信号量。8.2事件组的特性事件“flag”是一个布尔值(1或0),用于指示事件是否发生。事件“group”是一组事件标志。事件标志只能是1或0