二、手把手带你做一个RTOS智能车项目 说明:RTOS智能车项目使用的RTOS是FreeRTOS。FreeRTOS是一个非常流行的开源RTOS,适用于各种嵌入式平台,因其轻量级、易于使用和高度可配置而受到广泛欢迎,能够在各种微控制器和嵌入式平台上运行。 FreeRTOS智能车项目课程介绍 FreeRTOS智能车项目课程,涵盖了制作STM32小车需要掌握的软硬
// freertos_task.c void ReleaseBus(void const * argument) { /* USER CODE BEGIN ReleaseBus */ /* Infinite loop */ // 每20ms检测一次总线是否有问题,若连续检测出5次则重新初始化! for(;;) { if (HAL_GPIO_ReadPin(I2C_GPIO_PORT, GPIO_PIN_SCL) == GPIO_PIN_RESET || HAL_GPIO_ReadPin...
在delay函数下的等待只能等待,没有占用CPU的情况,浪费资源 (2)基于Rtos的开发 Rtos有很多种,除了FreeRtos以外,我们可以在浏览器上搜索其他的Rtos,但在所有嵌入式系统中,FreeRtos是应用最多的 添加了Rtos的嵌入式系统实时性会提高,我们可以将某些程序分为多个任务,给予它们优先级,优先级高的优先获得CPU使用权,也就...
4.1 Freertos.c 4.2 tcpecho.h/c 4.3 lwipopts.h 3.4 tcpecho.ld(gcc编译器才用这个) 5.Tcp速度测试 1.CubeMX配置 很早就想用H750带一下Lan8720A,但lwip看起来有点复杂,这次趁着国庆节有时间,进行一下全面的调试。目的很简单,就是保证H750、Lan8720、FreeRTOS、lwip正常工作,潜在坑可能有点多,试之前也...
FreeRTOS有5种heap的实现方式,在STM32CubeMX中默认为heap_4.c。这种方式可以满足大部分使用需求,暂时不用关注其实现细节。 这一个堆的大小定义在FreeRTOSConfig.c中: FreeRTOS创建任务时默认的任务栈大小为128字,在32位系统中即为128*4=512Byte,再加上TCB块占用84Byte,一共596Byte。而大小为3072Byte的堆允许...
把Free RTOS内核源码文件添加到STM32工程后,需对工程的头文件包含路径进行配置,使编译器能找到相关头文件,如在Keil MDK中通过“Options for Target” - > “C/C++” - > “Include Paths”添加Free RTOS头文件路径。同时,在源文件中引入必要的头文件,例如: #include "FreeRTOS.h" #include "task.h" 这两...
进入FreeRTOSv202212.01\FreeRTOS\Source\portable\RVDS\ARM_CM4F,拷贝port.c和portmacro.h到 Free...
在FreeRTOS,main程序和中断服务函数使用主堆栈指针(MSP),用户创建任务使用进程堆栈指针(PSP)。进入应用程序后,首先进入main()函数,创建任务并开启任务调度器 vTaskStartScheduler();进入SVC中断 ,通过修改R15连接寄存器(LR)的值,进入用户模式,堆栈指针选择进程堆栈指针(PSP)。 后续程序进入中断后,系统会自动切换成主堆...
FreeRTOS资料多、生态活跃,在Cube中通过配置界面,三两下上手这款操作系统,推荐拿来入门。 基于不同的需求,下文再介绍下其他RTOS。 2μClinux μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。 同标准的Linux相比,μClinux...
FreeRTOS资料多、生态活跃,在Cube中通过配置界面,三两下上手这款操作系统,推荐拿来入门。 基于不同的需求,下文再介绍下其他RTOS。 2、μClinux μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。 同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作...