FreeRTOS
文章平均质量分 63
记录FreeRTOS的学习过程
贾专家
这个作者很懒,什么都没留下…
展开
-
RTOS中断处理过程中的顶半和底半操作
在RTOS中,中断服务程序(ISR)的操作称为顶半操作,RTOS程序的任务操作成为底半操作。原创 2024-04-23 23:57:35 · 421 阅读 · 2 评论 -
FreeRTOS互斥锁
拿电脑中文档举例:当一个文档已经被打开,这时如果再双击打开这个文档,则会提示“操作无法完成,因为文件已在word软件中打开”。这是因为操作系统在第一次打开文件的时候,给文件设置了一把锁。而如果后面还有程序想要操作文件,则因为上锁的原因,打开失败。避免暂停系统运转,纯逻辑层面解决了临界资源争抢的问题。另外还能解决优先级反转的问题锁的机制:资源我正在用,已经上锁,我什么时候解锁,你什么时候用。上锁:防止随意访问解锁:有权访问。原创 2024-04-16 21:07:19 · 649 阅读 · 0 评论 -
FreeRTOS信号量
讲解FreeRTOS信号量的使用原创 2024-04-07 22:35:01 · 413 阅读 · 0 评论 -
用DMA传送LCD数据
前面我写了“FreeRTOS驱动ILI9488液晶”的代码,但是全程是使用CPU进行数据传送的,效率很低,所以本章进行DMA数据传输,解放CPU。3、因为只是实现刷屏一种颜色,所以不需要源地址自增,而目的地址只能是FSMC的映射地址0x64000002,所以也不自增;1、使用DMA传输数据的路径是从内存传输到FSMC中,都是在单片机内部进行,所以是Memory To Memory;完成上述配置后,将DMA相关配置代码添加进上期代码中,如下图所示。4、因为使用的是RGB565格式,所以字宽为半字。原创 2024-04-06 22:52:46 · 432 阅读 · 0 评论 -
利用FreeRTOS驱动ILI9488液晶
从原理图中可以看到片选引脚为NE1,但是我用的是GD303,GD303的NE1对应STM32F1的NE2,所以片选选择NE2,a、打开Img2Lcd软件(有需要的可以私信我),点击左上角的打开按键,选择需要显示的图片;b、点击像素,将水平和垂直数据分别改为320和480,如下图所示。,所以将PA1设置为GPIO_Output,对应的参数默认即可,如下图所示。b、修改左侧栏最大宽度和高度,分别设置为320和480,其他设置如上图所示;RS在原理图中为A0,图片的格式为RGB565,所以数据位宽为16位。原创 2024-04-02 22:27:15 · 1252 阅读 · 0 评论 -
空闲任务(IDLE)
问:不创建任何任务,直接启动调度器会怎样?调度器会无任务可调吗?答:如果所有任务都处于阻塞、挂起状态,而没有一个任务是就绪的话,那调度器就没有用了。RTOS一定有一个用来垫底的任务,即“空闲任务”。它永远处于就绪状态,一旦所有任务都被暂停,空闲任务就会被调度器调用。我们可以把空闲任务称为“背景任务”。原创 2024-02-26 10:18:31 · 358 阅读 · 0 评论 -
SVC(系统服务调用)
它是一个超级中断,是现代多任务操作系统的重要根基,下面是SVC汇编代码,暂时看不懂,先放到这里,后期能力提升后再来理解。原创 2024-02-26 08:54:32 · 258 阅读 · 0 评论 -
FreeRTOS的Shell调试
本实例开启USART1中断链接: linkShell的实质就是输入一个命令字符串,然后程序根据字符串的不同,执行对应的函数void function1(void){··················函数代码}ZNS_CMD_EXPORT(function1, this is a shell cmd demo)function1——函数名this is a shell cmd demo——函数名说明原创 2024-02-25 15:43:58 · 397 阅读 · 0 评论 -
FreeRTOS的API与宏定义
vTaskStartScheduler的作用是开启调度器,本质上可以简单理解为开启Tick中断。创建一个print_task_list任务,将打印的任务信息传给char str[200]创建一个print_task_list任务,将打印的剩余容量信息。xTaskCreate的作用是动态创建任务。5、Num: 任务编号(区分同名任务)总体堆容量的定义如下图所示,不到3kB。3、Priority:任务优先级。4、Stack: 任务栈水位栈。2、State: 任务状态。1、 Name: 任务名。原创 2024-02-25 11:34:45 · 926 阅读 · 0 评论 -
“一次性”任务
比如:开机自检、开机后要在屏幕上显示一下LOGO、开机时需要播放一段用户指导视频等等。一定要显性调用xTaskDelete对无用任务进行删除!用xTaskDelete()删除动态创建的任务即可。,否则容易Hardware Failure系统崩溃。因为某些任务只运行一次。原创 2024-02-26 08:53:40 · 164 阅读 · 0 评论