richcms v0.0.9_6版本已经更新

richcms最新版本v0.0.9_6版本已经更新,richcms是一个使用golang开发供站长免费使用的内容管理系统。可以官网免费下载安装使用。v0.0.9_6版本增加的内容:支持AI文章。国内AI厂商接入,包括:deepseek(支持deepseek v3和deepseek r1)、豆包、kimi。AI定时任务。

richcms的下载地址及文档:

一、v0.0.9_6版本新增内容:

  • 支持AI文章。国内AI厂商接入,包括:deepseek(支持deepseek v3和deepseek r1)、豆包、kimi。
  • AI定时任务。

二、使用方法:

  • 完成AI文章的参数配置
  • 新建提示词
  • 开启AI文章定时任务。

三、升级安装:

  1. 覆盖二进制可执行文件,重启服务。
  2. 覆盖views/admin下的所有后台管理html模板文件即可;

四、后台使用截图:

image.png

image.png

image.png

image.png

<think>我们正在处理将FreeRTOSv0.0.9移植到MM32SPIN0280芯片的配置文件FreeRTOSConfig.h。由于FreeRTOS的版本v0.0.9非常古老,可能与现代的FreeRTOS配置有所不同,但基本配置项应该是类似的。我们需要根据MM32SPIN0280芯片的特性(ARMCortex-M0内核)来配置。注意:FreeRTOS v0.0.9可能没有现代版本的一些特性,因此配置选项可能较少。但是,我们仍然需要配置一些基本参数,如时钟频率、任务数量、堆大小等。以下是一个针对MM32SPIN0280(Cortex-M0)的FreeRTOSConfig.h配置文件的示例。由于v0.0.9版本较旧,我们参考了FreeRTOS的通用配置,并针对Cortex-M0进行了调整。在配置之前,需要了解:1.MM32SPIN0280的系统时钟频率(例如,内部RC振荡器或外部晶振频率,以及系统时钟设置)。 2.需要使用的功能(如队列、信号量、软件定时器等)以及任务的最大优先级。 假设系统时钟为48MHz(这是MM32SPIN0280常见的时钟设置),我们使用SysTick作为FreeRTOS的时钟源。以下是一个示例配置文件:```c#ifndef FREERTOS_CONFIG_H#defineFREERTOS_CONFIG_H/*这里假设使用GCC编译器,针对Cortex-M0 */#include<stdint.h> /*设置芯片的时钟频率,用于配置正确的SysTick */#define configCPU_CLOCK_HZ(( unsignedlong )48000000)/* FreeRTOS的系统节拍中断频率,这里设置为1000Hz,即1ms一个tick */#define configTICK_RATE_HZ( (TickType_t )1000 )/*设置可用的最大优先级 */#define configMAX_PRIORITIES(5) /*设置任务的最小堆栈大小,根据任务需求调整*/ #defineconfigMINIMAL_STACK_SIZE(( unsignedshort )128) /*设置总的堆大小,单位为字(4字节) */#define configTOTAL_HEAP_SIZE(( size_t )(4 *1024 ))/*设置任务名称的最大长度 */#define configMAX_TASK_NAME_LEN(10 )/*使用SysTick定时器作为FreeRTOS的时钟 */#define configUSE_16_BIT_TICKS0/*Cortex-M0是32位,所以设置为0 *//*设置是否使用互斥量*/ #defineconfigUSE_MUTEXES1/*设置是否使用递归互斥量*/ #defineconfigUSE_RECURSIVE_MUTEXES0/*设置是否使用计数信号量 */#define configUSE_COUNTING_SEMAPHORES1/*设置是否使用空闲钩子函数*/ #defineconfigUSE_IDLE_HOOK0/*设置是否使用任务切换钩子函数 */#define configUSE_TICK_HOOK0/*设置是否使用软件定时器*/ #defineconfigUSE_TIMERS0/*设置软件定时器服务任务优先级*/ #defineconfigTIMER_TASK_PRIORITY(configMAX_PRIORITIES-1 )/*设置软件定时器队列长度*/ #defineconfigTIMER_QUEUE_LENGTH5/*设置软件定时器任务堆栈大小 */#define configTIMER_TASK_STACK_DEPTH( configMINIMAL_STACK_SIZE *2) /*设置内存分配方案:1表示使用heap_1.c,2表示使用heap_2.c,3表示使用heap_3.c,4表示使用heap_4.c,5表示使用heap_5.c*/ #defineconfigUSE_HEAP_SCHEME4/*推荐使用heap_4,因为它可以避免碎片*//*设置是否使用抢占式调度器 */#define configUSE_PREEMPTION1/*设置是否使用时间片调度 */#define configUSE_TIME_SLICING1/*设置是否使用任务通知功能(v0.0.9可能没有,所以设为0)*/ #defineconfigUSE_TASK_NOTIFICATIONS0/*设置是否使用队列集*/#define configUSE_QUEUE_SETS0/*设置是否使用协程(v0.0.9可能支持协程) */#define configUSE_CO_ROUTINES0/*设置协程的有效优先级数量*/ #defineconfigMAX_CO_ROUTINE_PRIORITIES(2 )/*设置是否开启栈溢出检测:0关闭,1开启(需要钩子函数)*/ #defineconfigCHECK_FOR_STACK_OVERFLOW0/*设置是否开启任务运行时间统计 */#define configGENERATE_RUN_TIME_STATS0/*设置是否开启跟踪功能*/ #defineconfigUSE_TRACE_FACILITY0/*设置是否使用统计任务 */#define configUSE_STATS_FORMATTING_FUNCTIONS0/*设置是否在任务创建时把任务名作为参数*/ #defineconfigUSE_TASK_FPU_SUPPORT0/* Cortex-M0没有FPU,所以为0 *//*设置是否使用互斥量优先级继承*/#define configUSE_MUTEXES_INHERITANCE0/*设置是否使用新任务创建通知*/ #defineconfigUSE_NEWLIB_REENTRANT0/*设置中断优先级,Cortex-M0的优先级寄存器为8位,但通常只使用高几位*/#define configKERNEL_INTERRUPT_PRIORITY255/*注意:在Cortex-M中,优先级数值越高,逻辑优先级越低 *//*设置可屏蔽中断的最高优先级(数值上最低的优先级)*/ #defineconfigMAX_SYSCALL_INTERRUPT_PRIORITY191/*设置断言函数,通常使用标准断言*/ #defineconfigASSERT(x )if(( x) ==0) {taskDISABLE_INTERRUPTS(); for( ;;); }/*设置任务函数原型*/ #defineINCLUDE_vTaskPrioritySet0#define INCLUDE_uxTaskPriorityGet0#defineINCLUDE_vTaskDelete1#define INCLUDE_vTaskCleanUpResources0#defineINCLUDE_vTaskSuspend1#defineINCLUDE_vTaskDelayUntil1#defineINCLUDE_vTaskDelay1#define INCLUDE_xTaskGetSchedulerState0/*设置FreeRTOS钩子函数*/ #defineconfigUSE_DAEMON_TASK_STARTUP_HOOK0/*设置是否使用空闲任务栈溢出检测 */#define configIDLE_SHOULD_YIELD1/*设置任务切换中断的优先级,这里使用最低优先级 */#define configPRIO_BITS4#defineconfigLIBRARY_LOWEST_INTERRUPT_PRIORITY0x0f#defineconfigLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY0x01/*设置中断优先级分组,Cortex-M0只支持2位优先级分组(即4个优先级) *//*但注意:Cortex-M0的优先级寄存器是8位,但实际只使用高2位(即4个优先级)*/ #defineconfigKERNEL_INTERRUPT_PRIORITY(15<< (8 -configPRIO_BITS) )#define configMAX_SYSCALL_INTERRUPT_PRIORITY(1<< (8 -configPRIO_BITS) )/*与内存分配相关的设置*/ externvoid vApplicationGetIdleTaskMemory( void**ppxIdleTaskTCBBuffer,void **ppxIdleTaskStackBuffer,uint32_t *pulIdleTaskStackSize );extern voidvApplicationGetTimerTaskMemory( void**ppxTimerTaskTCBBuffer, void**ppxTimerTaskStackBuffer,uint32_t *pulTimerTaskStackSize); /*如果需要使用静态分配,可以定义以下宏 */// #define configSUPPORT_STATIC_ALLOCATION1#endif/* FREERTOS_CONFIG_H*/ ```注意:1.以上配置是一个基础示例,具体需要根据实际应用调整。特别是堆大小(configTOTAL_HEAP_SIZE)需要根据可用内存和任务数量调整。2.由于FreeRTOS v0.0.9版本较旧,可能某些配置选项不存在,如果编译时出现未定义的宏,可以注释掉。3.中断优先级设置需要根据实际中断控制器进行调整。Cortex-M0的优先级寄存器通常只有2位或3位有效,因此优先级数值只能是0x00,0x40,0x80,0xC0(如果2位有效)或更多。上面的设置中,我们假设优先级寄存器有4位有效(但实际上Cortex-M0通常只有2位),所以需要根据具体芯片调整。 4.在MM32SPIN0280上,需要确认系统时钟频率,并设置configCPU_CLOCK_HZ为实际值。 建议:1.参考MM32SPIN0280的FreeRTOS移植示例(如果有的话)。 2.根据实际应用需求开启或关闭某些功能(如软件定时器、互斥量等)以节省内存。 另外,由于FreeRTOSv0.0.9版本非常古老,建议尽可能升级到较新的版本(如V10.x),以获得更好的功能和稳定性。 [^1]:FreeRTOS简介与移植到STM32F103§§相关问题§§1.FreeRTOS v0.0.9版本与现代版本的主要区别是什么?2.如何为MM32SPIN0280配置FreeRTOS的时钟源? 3. FreeRTOSConfig.h中堆大小如何确定? 4.在Cortex-M0上移植FreeRTOS需要注意哪些问题?</think>### FreeRTOS v0.0.9 移植到 MM32SPIN0280 的配置文件示例 以下是针对 **MM32SPIN0280**(ARM Cortex-M0 内核)的 `FreeRTOSConfig.h` 完整配置文件示例。配置基于 FreeRTOS v0.0.9 的特性裁剪,并适配 MM32SPIN0280 的硬件资源(如时钟频率、内存大小等)。 ```c #ifndef FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H /* 芯片基础配置 ------------------------------------------------*/ #define configCPU_CLOCK_HZ (SystemCoreClock) // 假设系统时钟为48MHz #define configTICK_RATE_HZ (1000) // SysTick中断频率1kHz(1ms周期) #define configUSE_16_BIT_TICKS 0 // Cortex-M0使用32位Tick计数器 /* 内核功能裁剪 ------------------------------------------------*/ #define configUSE_PREEMPTION 1 // 启用抢占式调度 #define configUSE_IDLE_HOOK 0 // 关闭空闲任务钩子(节省内存) #define configUSE_TICK_HOOK 0 // 关闭Tick钩子 #define configUSE_DAEMON_TASK_STARTUP_HOOK 0 #define configUSE_TICKLESS_IDLE 0 // 关闭低功耗模式(简化移植) /* 内存管理配置 ------------------------------------------------*/ #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 6 * 1024 ) ) // 堆大小6KB(根据MM32SPIN0280的RAM调整) #define configAPPLICATION_ALLOCATED_HEAP 0 #define configSUPPORT_STATIC_ALLOCATION 1 // 启用静态内存分配 #define configSUPPORT_DYNAMIC_ALLOCATION 1 // 启用动态内存分配 /* 任务配置 ---------------------------------------------------*/ #define configMAX_PRIORITIES ( 5 ) // 最大任务优先级数 #define configMINIMAL_STACK_SIZE ( ( uint16_t ) 128 ) // 空闲任务最小栈大小 #define configMAX_TASK_NAME_LEN ( 10 ) // 任务名称最大长度 /* 同步机制裁剪 ------------------------------------------------*/ #define configUSE_MUTEXES 1 // 启用互斥锁 #define configUSE_RECURSIVE_MUTEXES 0 // 关闭递归互斥锁(节省内存) #define configUSE_COUNTING_SEMAPHORES 0 // 关闭计数信号量 #define configUSE_QUEUE_SETS 0 // 关闭队列集 #define configUSE_TASK_NOTIFICATIONS 0 // 关闭任务通知(v0.0.9可能不支持) /* 调试与统计 --------------------------------------------------*/ #define configCHECK_FOR_STACK_OVERFLOW 0 // 关闭栈溢出检测(调试时可设为1) #define configGENERATE_RUN_TIME_STATS 0 // 关闭运行时间统计 #define configUSE_TRACE_FACILITY 0 // 关闭可视化跟踪 /* 中断配置(适配Cortex-M0)-------------------------------------*/ #define configKERNEL_INTERRUPT_PRIORITY (0xFF) // 内核中断最低优先级 #define configMAX_SYSCALL_INTERRUPT_PRIORITY (0x80) // 可调用API的最高中断优先级 #define configPRIO_BITS 4 // MM32SPIN0280使用4位优先级 /* 包含的API函数(按需启用)-------------------------------------*/ #define INCLUDE_vTaskDelay 1 #define INCLUDE_vTaskDelayUntil 1 #define INCLUDE_vTaskDelete 0 // 关闭任务删除(减少复杂度) #define INCLUDE_xTaskGetCurrentTaskHandle 1 /* 硬件相关适配(必须实现)--------------------------------------*/ extern void vPortSetupTimerInterrupt(void); // 在port.c中实现SysTick初始化 #define vPortInitialiseBlocks() // 内存初始化(heap_1.c无需此函数) /* 断言函数(调试用)-------------------------------------------*/ #include <assert.h> #define configASSERT(x) assert(x) #endif /* FREERTOS_CONFIG_H */ ``` --- ### 关键配置说明 1. **时钟配置** - `configCPU_CLOCK_HZ`:需与 MM32SPIN0280 的实际系统时钟一致(默认为48MHz)。 - `configTICK_RATE_HZ`:控制任务调度频率,典型值为1kHz。 2. **内存管理** - `configTOTAL_HEAP_SIZE`:根据 MM32SPIN0280 的 RAM 大小调整(该芯片仅8KB RAM,建议分配6KB给堆)。 - 使用 **heap_1.c**(仅分配)或 **heap_2.c**(简单动态分配)作为内存方案[^1]。 3. **中断优先级** - Cortex-M0 需通过 `configMAX_SYSCALL_INTERRUPT_PRIORITY` 控制可安全调用 FreeRTOS API 的中断优先级范围。 4. **功能裁剪** 关闭非必要功能(如递归互斥锁、任务通知)以节省资源,适配 MM32SPIN0280 的有限内存[^1]。 --- ### 移植步骤 1. **克隆 FreeRTOS v0.0.9 源码** ```bash git clone --branch V0.0.9 https://github.com/FreeRTOS/FreeRTOS-Kernel ``` 2. **将配置文件放入工程** 将上述 `FreeRTOSConfig.h` 放在项目目录的 `/FreeRTOS/include/` 下。 3. **实现硬件适配层** 在 `port.c` 中完成: - SysTick 初始化(`vPortSetupTimerInterrupt()`)。 - 上下文切换函数(PendSV 中断处理)。 4. **链接器配置** 确保 FreeRTOS 的代码段(如 `.text.freertos`)和堆内存分配到 MM32SPIN0280 的 RAM 中。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值