- 博客(11)
- 收藏
- 关注
原创 StmF103C8T6标准库使用FreeRtos----队列
官方 :Serial_Printf("big_queue数据:%s\r\n",buf);char buff[100]={"1111"} 打印未报错,正确执行,但是1111的结尾有个方块不知道是啥。改正:Serial_Printf("big_queue数据:%s\r\n",&buf);char buff[100]={"我是大数据"} 只能打印前几个字,后面都是黑色方块,原因未知。char buff[100]={"我"} 打印为报错,完美打印,没有方块,也没有乱码。
2023-06-27 13:57:31 332 1
原创 StmF103C8T6标准库使用FreeRtos----任务时间统计
注意:我们这里的任务堆栈大小为128,我之前设置的64,但是我发现设置64在实际操作中会出现错误,例如:我第一次按下按键,能够正常显示任务时间,第二次按下led灯闪烁那个任务会死机,后面怎么按都无效,现在改为128就可以正常运行了。他的if里面有三个宏定义要求,我们只定义了两个,所以找不到函数,为了方便,后续我们不在freertos.h中修改宏定义,将宏定义全部定义在configfreertos.h文件中:如下。定义完上面两个宏定义之后,在configfreertos.h中定义下列宏。
2023-06-16 09:15:44 501 1
原创 StmF103C8T6标准库使用FreeRtos----列表和列表项
1、实验目的:观察插入列表项、移除列表项的地址变化情况。具体的函数、结构体可以在list.c,list.h中找到。二:列表项的插入和删除实际操作。
2023-06-09 15:16:53 255
原创 StmF103C8T6标准库使用FreeRtos----临界代码段保护和调度器挂起和恢复(仅理论不看源码)
二:任务调度器挂起和恢复理论。一:临界代码段保护理论。
2023-06-08 09:52:38 112
原创 StmF103C8T6标准库使用FreeRtos----中断管理
Systick 中断的优先级应该设置为与 PendSV 中断同级或者更低,这是因为 Systick 中断的优先级比 PendSV 中断的优先级高时,会在 PendSV 中断执行期间被打断,这可能会导致任务切换出现问题。因此,PendSV 中断的优先级应该设置为最低,通常为数值为 15。当一个任务处于等待状态时,调度器会将 CPU 的控制权交给 PendSV 中断服务程序,PendSV 中断服务程序会在任务切换之前执行一些必要的清理和准备工作,然后将控制权交给调度器,由调度器选择下一个最高优先级的任务执行。
2023-06-07 16:41:38 1496 8
原创 StmF103C8T6标准库使用FreeRtos----任务挂起和恢复
4、实现在中断里面恢复任务,首先我们要了解freertos的优先级是5-15之间,如果我们按照NVIC优先级分组,例如抢占优先级为2,很明显优先级高于5,是不符合定义的。1、首先将前面创建静态任务使用过的configSUPPORT_STATIC_ALLOCATION 设置为0,不然会报错,让我们创建空闲任务,原因的话可以自己看开始调度任务那个函数,上一节讲过。注意:提一嘴,通过观察正点原子视频,当按键按下删除或者挂起任务时,那个任务所操纵的LED灯可能是常量也可能熄灭,不是代码有问题。
2023-06-07 13:28:17 775 3
原创 StmF103C8T6标准库使用FreeRtos----静态任务创建
在任务调度函数vTaskStartScheduler中我们可以看到该函数并未声明 ,既需要我们自己定义,定义函数的模板可以全局跳转下。注意:如果不想定义这个定时器任务,我们需要吧宏定义configUSE_TIMERS改为0,否则会报错,不过新版本freertos系统默认为0.这里还是跟着课程走,将其改为1.注意:这里定时器任务如果要把configUSE_TIMERS设置为1的话,上图中的所有定义都得修改,比较麻烦,这里还是将configUSE_TIMERS设置为0继续实验。4、创建静态任务,可以参考官网。
2023-06-07 10:39:56 507 1
原创 StmF103C8T6标准库使用FreeRtos----动态任务创建以及删除
被删除的那个LED灯大部分次数属于常暗,偶尔常亮(原因不明)三、完整的stm32标准库实现LED闪烁、串口打印以及任务删除。按键按下时得停顿下,不然打印时可能反应不过来。1、为什么要强制转换数据类型。一:动态创建任务的概念。2、为什么要加临界区。注意代码最后一行得空格。
2023-06-06 17:03:20 396 2
原创 StmF103C8T6标准库使用FreeRtos----LED灯简单测试rtos
一:首先,对LED灯函数进行编写。注意:函数最后一行都得换行。
2023-06-06 12:36:07 535 2
原创 StmF103C8T6标准库使用FreeRtos----API开发指南
2、网上版本freertosconfig.h中包含大量宏定义,而官方版本只有部分宏定义,其余部分宏定义得在freertos.h文件中手动搜索。当我们创建静态任务或者动态任务时,需要对部分宏定义进行修改,至于修改哪个宏定义,可以参考上面官方api指南,上面都有历程。一:手册版开发指南:链接:https://pan.baidu.com/s/1O9c3VbbMjPrNK0aPF1OxsQ?1、网上版本freertos移植时有7个c文件,官方版本只有6个。二:在官方网站观看api函数的使用。
2023-06-06 12:15:57 317 1
原创 StmF103C8T6标准库使用FreeRtos----移植
第四步准备移植:在自己的STM32项目下建立一个Freertos文件,然后将下载的freertos内核文件里面的include文件夹、portable文件夹以及所有.c文件全部复制到项目里面的文件夹中。第七步:在另一个下载好的freertos-main文件夹中找对对应芯片demo的freertosconfig.h文件。第六步:用keil软件打开工程,将对应的freerots文件导入,其中freerots.h在include文件夹中。第五步:删除portable文件里面的部分内容,只保留以下三个文件夹。
2023-06-06 12:01:10 2813 6
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人