STM32F103移植FreeRTOS必须搞明白的系列知识---4(FreeRTOSConfig.h配置文件)

本文介绍STM32F103移植FreeRTOS的关键配置,包括FreeRTOSConfig.h配置项详解,如CPU时钟频率、系统节拍频率、最大优先级等,并通过实例展示配置方法。

STM32F103移植FreeRTOS必须搞明白的系列知识---1(Cortex-CM3中断优先级)

STM32F103移植FreeRTOS必须搞明白的系列知识---2(FreeRTOS任务优先级)

STM32F103移植FreeRTOS必须搞明白的系列知识---3(堆栈)

STM32F103移植FreeRTOS必须搞明白的系列知识---4(FreeRTOSConfig.h配置文件)
 

目录

一、FreeRTOSConfig.h配置文件概述

二、configCPU_CLOCK_HZ

三、configTICK_RATE_HZ

四、configMAX_PRIORITIES

五、configMINIMAL_STACK_SIZE

六、configTOTAL_HEAP_SIZE

七、configKERNEL_INTERRUPT_PRIORITY

八、configMAX_SYSCALL_INTERRUPT_PRIORITY 

九、实例

       1、配置configMAX_PRIORITIES

       2、配置configTOTAL_HEAP_SIZE

        3、配置configKERNEL_INTERRUPT_PRIORITY

        4、配置configMAX_SYSCALL_INTERRUPT_PRIORITY

        5、创建5个任务

        6、配置NVIC中断优先级组和抢占优先级和响应优先级


一、FreeRTOSConfig.h配置文件概述

        FreeRTOSConfig.h配置文件是由FreeRTOS官网提供给用户针对具体的某一款MCU并且独立于FreeRTOS内核的配置文件。

        要想实现STM32F103移植,必须熟悉FreeRTOSConfig.h配置文件中的以下几项(注:博主使用的FreeRTOS版本为FreeRTOS Kernel V10.2.1)。

         1、configCPU_CLOCK_HZ

         2、configTICK_RATE_HZ

         3、configMAX_PRIORITIES

         4、configMINIMAL_STACK_SIZE

         5、configTOTAL_HEAP_SIZE

         6、configKERNEL_INTERRUPT_PRIORITY

         7、configMAX_SYSCALL_INTERRUPT_PRIORITY 

二、configCPU_CLOCK_HZ

        写入实际的CPU内核时钟频率,也就是CPU指令执行频率。(stm32f103芯片的晶振为72MHZ。)

​        配置此值是为了正确的配置系统节拍中断周期。

        例如,在STM32F10X中,FreeRTOS Kernel V10.2.1

#define configCPU_CLOCK_HZ            ( ( unsigned long ) 72000000 )

三、configTICK_RATE_HZ

        FreeRTOS系统自己的节拍中断的频率。即一秒中断的次数,每次中断FreeRTOS都会进行任务调度。

        系统节拍中断用来测量时间,因此,越高的测量频率意味着可测到越高的分辨率时间。但是,高的系统节拍中断频率也意味着RTOS内核占用更多的CPU时间,因此会降低效率。RTOS演示例程都是使用系统节拍中断频率为1000HZ,这是为了测试RTOS内核,比实际使用的要高。(实际使用时不用这么高的系统节拍中断频率)
  多个任务可以共享一个优先级,RTOS调度器为相同优先级的任务分享CPU时间,在每一个RTOS 系统节拍中断到来时进行任务切换。高的系统节拍中断频率会降低分配给每一个任务的“时间片”持续时间。

  例如,在STM32F10X中,FreeRTOS Kernel V10.2.1

#define configTICK_RATE_HZ            ( ( TickType_t ) 1000 )

  表示滴答中断(SYSTICK)1毫秒中断1次。

  如果想让滴答中断(SYSTICK)100微秒中断1次,可以如下进行配置

#define configTICK_RATE_HZ            ( ( TickType_t ) 100 )


四、configMAX_PRIORITIES

        配置应用程序最大可用的优先级数目。

  在FreeRTOS内核中,每个有效优先级都会消耗一定量的RAM,因此这个值最好不要超过你的应用实际需要的优先级数目,FreeRTOS官网建议,宏configMAX_PRIORITIES最大数目不要超过32,那么工程项目可以使用的任务的优先级号范围为(0~31)

        每一个任务都会被分配一个优先级,任务的优先级值在0~ (configMAX_PRIORITIES - 1)之间。

        FreeRTOS任务优先级数值越,表示任务优先级越;FreeRTOS任务优先级数值越,表示任务优先级越

        空闲任务的优先级为0(tskIDLE_PRIORITY),因此它是最低优先级任务。

        例如,在STM32F103中,FreeRTOS Kernel V10.2.1

#define configMAX_PRIORITIES		( 5 )

        程序中给任务分配优先级时,可用的优先级号为:(0~configMAX_PRIORITIES-1)

        #define configMAX_PRIORITIES=5,因此工程项目中任务可用的优先级号范围为(0~4)。优先级号0被FreeRTOS内核固定分配给空闲任务;优先级号1,优先级号2,优先级号3,优先级号4都可以分配给用户任务。
        警告:优先级号5禁止分配给任务。如果优先级号5分配给任务,则会造成系统崩溃。

五、configMINIMAL_STACK_SIZE

        定义空闲任务使用的堆栈大小。

        通常此值不应小于对应处理器演示例程文件FreeRTOSConfig.h中定义的数值。

       例如,在STM32F103中,FreeRTOS Kernel V10.2.1

#define configMINIMAL_STACK_SIZE	( ( unsigned short ) 128 )

       在STM32F103中,堆栈大小不是以字节为单位,而是以字为单位的。在32位架构下,栈大小为128表示栈内存占用128*4=512字节的空间。

六、configTOTAL_HEAP_SIZE

        配置FreeRTOS任务栈可用的RAM总量。

        工程项目分配的所有任务都在该区域申请用户栈,每个任务的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值