FreeRTOS CubeMX卡在只运行第一个任务

这篇具有很好参考价值的文章主要介绍了FreeRTOS CubeMX卡在只运行第一个任务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 在用CubeMX创建的FreeRTOS,任务中如果使用HAL_Delay(1000);这样会导致无法切换任务,所以只能使用    osDelay(500);来延时

HAL_Delay(1000);




osDelay(500);

解决办法

osDelay是FreeRTOS(Real-Time Operating System)中的一个函数,用于实现任务的延时。FreeRTOS是一个开源的实时操作系统,专门用于嵌入式系统。osDelay函数允许任务挂起一段时间,然后由操作系统调度器在指定的时间后重新运行该任务。在等待期间,任务会被放入挂起状态,让其他任务有机会运行。

也就是说,当调用osDelay时,线程A进入阻塞态,此时任务控制器选择进入就绪态的线程B执行,循环往复,线程A、B同时被执行。我们可以将任务A和B进行如下改动,即可看到既打印A又打印B。

void A(void *argument)
{
  while (1)
  {
    printf("A\r\n");
    osDelay(1000);
  }
}

void B(void *argument)
{
  while (1)
  {
    printf("B\r\n");
    osDelay(1000);
  }
}

使用osDelay可能带来的问题

观察一下HAL_DelayosDelay的函数原型:

/**
  * @brief This function provides minimum delay (in milliseconds) based
  */
__weak void HAL_Delay(uint32_t Delay);

/*
  Wait for Timeout (Time Delay).
*/
osStatus_t osDelay (uint32_t ticks);

可以看到HAL_Delay函数的目的是提供毫秒级别的延时,意味着当你输入HAL_Delay(500),硬件会尽量延时精确到500ms的时间。

与之不同的是,osDelay函数的输入是ticksticks是一个计时单位,表示任务将被挂起的时间长度。每个tick的时间取决于FreeRTOS配置的时钟节拍(tick)周期。例如,如果tick周期为1毫秒,那么传递参数ticks为10就会使任务挂起10毫秒。由此可见,osDelay函数延时的时间和一个ticks记时时间长度有很大关系。

那么如何确定一个ticks具体代表多长时间呢?首先我们应该找到用于配置的头文件,通常这个头文件名字叫做FreeRTOSConfig.h。其中,configTICK_RATE_HZ配置选项的值表示每秒钟系统时钟节拍(tick)的数量。configTICK_RATE_HZ的值一般默认被设置为1000,表示系统时钟每秒产生1000个tick,即每个tick的时间间隔为1毫秒,此时osDelay对单个任务延时的时间长度和HAL_Delay近似。

                引用自:FreeRTOS中osDelay和HAL_Delay的区别 - 知乎

 2.中断中不能使用HAL_Delay(1000);由于sys的的中断优先级太低,所以,在其它中断里面无法获取时间文章来源地址https://www.toymoban.com/news/detail-753776.html

到了这里,关于FreeRTOS CubeMX卡在只运行第一个任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 Hal库FreeRTOS统计CPU占比 找出有问题的任务 仅需一个函数搞定 超简单

    一、实现目标 STM32F103 基于Hal库跑FreeRTOS,统计CPU占比 找出有问题的任务,类似实现一个windows 系统的任务查看界面。 代码运行结果如下 二、思路 记录任务的时间点,相减获得任务所占用的时间,所得时间/总时间,得到该CPU占比。  三、实现函数 只需要调用一个vTaskGetRunT

    2024年01月24日
    浏览(43)
  • STM32 CubeMX LwIP + freertOS 移植

    开发板: 官方 STM32F746  MCU型号:STM32F746NGH 网卡型号:LAN8742A  原理图如下 先用裸机测试LAN8742A的网卡驱动 使用CubeMX创建工程 系统时钟和时基定时器如下 无系统LWIP协议栈设置,静态IP地址,关闭DHCP 生产代码,下载进开发板。开发板网口与电脑网口通过网线直连,设置电脑本

    2024年01月16日
    浏览(83)
  • 基于STM32CubeMX创建FreeRTOS—以STM32F429为例

    目录 1. 实验任务 2. 使用STM32CubeMX创建基础工程 2.1 使用STM32CubeMX创建项目 2.2 创建新项目 2.3 时钟设置 2.4 时钟配置树 2.5 修改时钟基准,打开串行调试 2.6 配置串口 2.7 配置状态指示灯 2.8 FreeRTOS配置 2.9 配置工程输出项 3. 代码编辑 3.1 printf重映射 3.1.1 使用ARMCC 5编译器时的print

    2024年01月22日
    浏览(42)
  • 搭建STM32F407的Freertos系统(基于STM32CubeMX)

           本人长期开发Linux、Windows上应用软件,一直以来MCU开发有所接触,但较少(最近项目需要,小公司么,都得会,被逼的),好在有STM32CubeMX这样工具,貌似就是我想要的工具。         本次demo目标立下:         1. 搭建或移植FreeRTOS到STM32上,毕竟对于长期在Linux环境

    2024年02月10日
    浏览(61)
  • STM32cubemx对FreeRTOS的适配(工程模板配置)

    本篇文章将带大家使用STM32cubemx对FreeRTOS进行工程模板的配置。 1.开始工程的创建: 2.芯片型号选择: 3.修改时钟为TIM8: 在FreeRTOS中SYSTICK需要为FreeRTOS提供心跳,故这里选择TIM8替换SYNTICK。 4.配置RCC: 5.配置FreeRTOS: 6.开启串口方便调试和观察: 7.工程路径及编译器选择等:

    2024年02月07日
    浏览(49)
  • STM32CubeMX+FATFS+FREERTOS读写U盘

    软件:STM32CubeMX V6.6.1 、 KEIL5 V5.29 硬件:STM32F429ZET6 USB_OTG_FS:PA11/PA12引脚 USART1:PA9/PA10,方便输出调试信息 1)SYS下载方式选择SW方式,因为要使用FREERTOS,提前将时钟源修改为TIM7(其他定时器也可以) 2) RCC设置,选择高速外部晶振HSE(根据具体硬件选择) 3)USART1设置,方便输出调

    2024年01月18日
    浏览(46)
  • STM32基于HAL库和STM32CubeMX的实时操作系统FreeRtOS开发

    1、FreeRTOS RTOS是一类操作系统,µC/OS,FreeRTOS,RTX,RT-Thread 等这些都是RTOS 类的操作系统 FreeRTOS 是众多RTOS 类操作系统中的一种,FreeRTOS 十分的小巧,可以在资源有限的微控制器中运行,FreeRTOS 也不仅仅局限于在微控制器中使用。就单从文件数量上来看FreeRTOS 要比µC/OS 少得多

    2024年02月21日
    浏览(60)
  • STM32 CubeMX (第三步Freertos中断管理和软件定时)

    学习使用Freertos第三步 在 FreeRTOS 中,中断管理和软件定时: · taskENTER_CRITICAL() ·; 是一个函数在 FreeRTOS 中使用的,用于进入临界区(critical section)。在临界区内,中断会被禁用,这样可以确保在多任务环境下共享资源的安全性。你可以在需要保护共享资源的代码段中使用 ·

    2024年02月12日
    浏览(64)
  • STM32CubeMx学习FreeRTOS的绝对延时和相对延时

    在阻塞状态中 可以空闲出时间 来让低优先级的任务可以进行 有两种阻塞延时 一个是相对延时 也就是  这样的osDelay可以让在到这里的时候,延时500ms 也就是程序到这里才500ms 不记程序前面所用的时间 而还有一个绝对延时 绝对延时指的是 加上程序自己跑的时间 全部的一起

    2024年02月14日
    浏览(41)
  • STM32H743使用CubeMX配置Lwip、Freertos

    硬件:野火挑战者开发板STM32H743IIT6 软件版本: CubeMX 6.7.0 STM32CubeH7 Firmware Package V1.11.0 / 04-Nov-2022 原理图: 时钟树参数仅供参考 MPU配置需要查相关资料,一知半解 修改GPIO与硬件原理图对应,串口参数默认 参数配置与硬件对应 此处网络收发地址非常重要!!! 使能中断 串口

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包