查看: 309|回复: 14

[未解决] FreeRTOS临界区保护

[复制链接]
  • TA的每日心情
    无聊
    2020-8-12 12:25
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    发表于 2020-8-1 18:33 | 显示全部楼层 |阅读模式
    FreeRTOS创建了两个任务,一个任务是定时读取传感器的数据,第二个任务是定时将读取的数据打印到oled屏幕上。


    传感器的数据上传到了全局变量,但是oled屏幕时不时的有一角乱码。。小白弱弱的问一下大佬们解决办法,是不是需要创建临界保护区???

    该用户从未签到

    发表于 2020-8-2 01:52 | 显示全部楼层
    临界区是用于中断的,和多任务没有关系
    要搞清楚乱码的问题,先把程序最简化,去除和oled无关的代码,或者直接写一个测试程序,就只是在oled上显示,看看会不会有问题
  • TA的每日心情
    无聊
    2020-8-12 12:25
  • 签到天数: 28 天

    [LV.4]偶尔看看III

     楼主| 发表于 2020-8-2 10:04 | 显示全部楼层
    开在边缘 发表于 2020-8-2 01:52
    临界区是用于中断的,和多任务没有关系
    要搞清楚乱码的问题,先把程序最简化,去除和oled无关的代码,或者 ...

    嗯嗯。我试过了。。原因就是其中一个任务是固定间隔读取传感器,另一个任务就是将得到的数据打印到oled屏幕上。。。然后两个任务的优先级是一样的。。。然后两个任务之间互相打断,,,我实在是不知道怎么处理了。。

    该用户从未签到

    发表于 2020-8-2 12:49 | 显示全部楼层
    seattle 发表于 2020-8-2 10:04
    嗯嗯。我试过了。。原因就是其中一个任务是固定间隔读取传感器,另一个任务就是将得到的数据打印到oled屏 ...

    什么叫“两个任务之间互相打断”?
  • TA的每日心情
    无聊
    2020-8-12 12:25
  • 签到天数: 28 天

    [LV.4]偶尔看看III

     楼主| 发表于 2020-8-2 13:36 来自手机 | 显示全部楼层
    开在边缘 发表于 2020-8-2 12:49
    什么叫“两个任务之间互相打断”?

    FreeRTOS对同优先级的任务是执行完一个在执行另一个吗?

    该用户从未签到

    发表于 2020-8-2 15:00 | 显示全部楼层
    seattle 发表于 2020-8-2 13:36
    FreeRTOS对同优先级的任务是执行完一个在执行另一个吗?

    如果执行完一个再执行另一个,那还叫什么多任务?如果多个任务是同等优先级别的,那么freeRTOS会在多个任务之间交替执行,也就是这个任务执行一条语句,那个任务执行一条语句。
  • TA的每日心情
    无聊
    2020-8-12 12:25
  • 签到天数: 28 天

    [LV.4]偶尔看看III

     楼主| 发表于 2020-8-2 15:06 | 显示全部楼层
    开在边缘 发表于 2020-8-2 15:00
    如果执行完一个再执行另一个,那还叫什么多任务?如果多个任务是同等优先级别的,那么freeRTOS会在多个任 ...

    对。我就是这个意思,,,任务1读取传感器,任务2将任务1读取的数据打印到oled屏幕上。

    任务2打印数据的过程中被任务1打断了,所以数据前后不一样然后打印出来就有一点乱码了

    该用户从未签到

    发表于 2020-8-2 15:16 | 显示全部楼层
    seattle 发表于 2020-8-2 15:06
    对。我就是这个意思,,,任务1读取传感器,任务2将任务1读取的数据打印到oled屏幕上。

    任务2打印数据的 ...

    当任务2执行到一半的时候,此时开始执行任务1,然后等任务1执行完毕后再继续执行任务2,这个才叫打断,也就是常说的中断。

    你这个是任务1和任务2同时在执行,怎么叫打断呢?
  • TA的每日心情
    无聊
    2020-8-12 12:25
  • 签到天数: 28 天

    [LV.4]偶尔看看III

     楼主| 发表于 2020-8-2 16:31 | 显示全部楼层
    开在边缘 发表于 2020-8-2 15:16
    当任务2执行到一半的时候,此时开始执行任务1,然后等任务1执行完毕后再继续执行任务2,这个才叫打断,也 ...

    那会不会两个任务同时在执行,然后任务1打印数据到oled过程中 任务2修改了1要打印的数据。。进而造成的oled屏幕一小部分乱码???

    该用户从未签到

    发表于 2020-8-2 16:46 | 显示全部楼层
    seattle 发表于 2020-8-2 16:31
    那会不会两个任务同时在执行,然后任务1打印数据到oled过程中 任务2修改了1要打印的数据。。进而造成的ol ...

    oled只会显示被任务2修改后的数据,但是不会出现乱码
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    Arduino UNO中文数据手册
    Arduino UNO中文数据手册
    2018.9.23重新翻译整理 转载请注明来自Arduino中文社区,并附本帖链接 本帖地址:http
    LabVIEW监控温度传感器
    LabVIEW监控温度传感器
    这里涉及 dht11 数字温度湿度传感器模块、TM1637数码显示模块、LabVIEW。 功能
    黑乌鸦的Arduino兵器库-----DS1302时钟模块
    黑乌鸦的Arduino兵器库---
    嗯 这是一个系列后期会罗列几乎所有的常见基础模块的demo所以 大家的回复将是我最大
    中文 字库 的8针 OLED 12864模块 arduino
    中文 字库 的8针 OLED 128
    屏幕电路SPI连线: 中文字库OLED Arduino UNO GND GND
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表