程序小白
认证:优质创作者
所在专题目录 查看专题
初识Arduino:简单是简单了点,还是蛮有意思的
基于ESP32快速搭建蓝牙串口透传应用(Arduino)
基于ESP32搭建的蓝牙串口透传应用代码分析(Arduino)
基于ESP32搭建GPIO-Interrupt应用及分析(Arduino)
基于ESP32例程分析Functional-Interrupt(C++浅析)及GPIO-API详解
基于ESP32——FreeRTOS初识(Arduino)
作者动态 更多
小小调度器——开局default,优雅总藏于细节之中
04-02 09:23
小小调度器——调度器核心的纯C实现
04-01 14:09
小小调度器——原来C代码还能这么写,原作者没少挨打吧!
03-27 15:42
解析由系统库引发的hardfault血案(RT-Thread+ESP32)
2023-07-17 16:04
TINA瞬时现象仿真分析——运放缓冲器振铃
2023-02-28 11:38

基于ESP32——FreeRTOS初识(Arduino)

       我希望:从今天开始你可以彻底抛离裸奔的方式,不论你在开发多么复杂的软件系统还是一个多么简单的软件应用,不论你对RTOS有多么的陌生,哪怕只是听说过从没用过,不论你写的代码有多少坑,勇敢去尝试,我相信他会给你打开一扇新的大门。从今天开始,我也在告诫自己再也不许回到那个裸奔时代,人可以走弯路,但不能走回头路。

                                                                                                      ————程序小白,

======================万事开头皆例程========================

1. 选择我们的例程,并且保存到本地。

2.  ESP32是有两个CPU组成的,你可以选择任务运行在哪个核心上:

3. 在setup中调用任务创建函数xTaskCreatePinnedToCore,创建任务:

4. 创建任务以后,任务会自动开始运行,这个时候loop函数其实没什么用了:

===============setup——loop机制的由来===================

你好不好奇setup——loop机制到底从何而来?

当你新建一个工程的时候,你会发现自动给到我们的就是setup和loop函数:

接下来给出答案:

      其实setup和loop本身就是在任务中被调用,而我们在loopTask任务中创建了新的任务,也就是程序开始执行就跳入了一个任务中,后续所有的代码运行环境都是任务级。在我们的例程中实际的运行是在三个任务之间不断的切换。

      细心的道友会发现在app_main()函数中调用的任务创建函数 和 我们在示例中调用的任务创建函数是不一样的:

      xTaskCreateUniversal      和  xTaskCreatePinnedToCore 到底有哪些区别。

      xTaskCreate 和 xTaskCreatePinnedToCore 到底有哪些区别。

===============ESP32提供了freertos全套的接口文件==================

================freertos源文件以lib库的形式提供===================

====================xTaskCreate 原型=======================

==================程序员眼中的xTaskCreate ====================

=================freertos眼中的xTaskCreate =====================

任务句柄:pvCreatedTask用于获取任务状态的控制块,改变任务控制块就可以控制任务的状态转换。

任务优先级:uxPriority ,一个应用中永远都不止只有一个任务准备就绪,等待获取CPU资源,同时就绪的任务,就需要任务优先级进行排队处理。

任务栈:任务栈的目的时保存当一个任务由运行到中断状态切换时,任务当前执行的上下文环境,等任务再次就绪后,执行任务栈可以从任务中断的位置继续执行该任务。

结论:引入了RTOS以后(其实不论他是不是free),实际可控的空间就越来越广了,以前除了中断,你无法打断一个函数的执行,哪怕应用中断任务化,你也无法将所有的任务全部放入中断,中断只是一个特殊的任务级切换应用。它有助于你理解任务的切换,但他并不等同与任务。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 4
收藏 2
关注 115
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧