/**************************************************************************//**
 * @item     CosyOS-III Config
 * @file     mcucfg_cm0.h
 * @brief    CMSIS Cortex-M Core Config File
 * @author   迟凯峰
 * @version  v3.0.0
 * @date     2026.08.15
 ******************************************************************************/

#ifndef __MCUCFG_CM0_H
#define __MCUCFG_CM0_H

#include "mcucfg_cmx.h"
#if (MCUCFG_SYSINT == 0)

////////////////////////////////////////////////////////////////////////////////

// 如果在 mcucfg_cmx.h 中，系统中断配置为 TIMn_IRQHandler + XXXx_IRQHandler，
// 用户需配置下方的用户定义项。

//////////////////////////////////* 用户定义 *//////////////////////////////////

/* 系统中断配置 */
// 默认配置仅为示例，给用户以参考和提示。

// PendSV_Handler替代中断-名称
#define MCUCFG_XXXx_IRQHandler          EXTI0_1_IRQHandler

// PendSV_Handler替代中断-中断向量号
#define MCUCFG_XXXx_IRQn                EXTI0_1_IRQn

// SysTick_Handler替代中断-中断向量号
#define MCUCFG_TIMn_IRQn                TIM14_IRQn

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

/* 系统滴答替代定时器-补充说明 */
// 您需自行手动配置和系统滴答替代定时器有关的一切事宜，包括使能更新中断；
// 例外的是，定时器中断的优先级将由CosyOS根据中断向量号自动配置为最低级。

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

/* 系统滴答替代定时器-额外配置 */
// 虽然系统滴答替代定时器需要用户自行手动配置，但仍需额外配置下方定义项，
// 用于 CosyOS-任务管理器 的CPU使用率统计、滴答时间统计等功能。
// 当然，如果您不打算使用 CosyOS-任务管理器，可不用配置。
// 默认配置仅为示例，给用户以参考和提示。

// 替代定时器-计数方式
// <1=> 从零向上计数至重装载值溢出 <2=> 从重装载值向下计数至零溢出
// <3=> 从重装载值向上计数至零溢出 <4=> 从零向下计数至重装载值溢出
// 告知CosyOS您所配置的定时器计数方式。
#define MCUCFG_SYSTICK_COUNTMODE        1

// 替代定时器-位数
// 如果定时器计数方式配置为3或4，应正确配置该定义。
#define MCUCFG_SYSTICK_BITS             16

// 替代定时器-当前值
// 应配置为可读的当前值寄存器。
#define MCUCFG_SYSTICK_CURRVALUE        (TIM14->CNT)

// 替代定时器-重装载值
// 如果该值为常量可配置为常量，否则应配置为可读的重装载值寄存器。
#define MCUCFG_SYSTICK_LOADVALUE        (SYSCFG_SYSTICK_CYCLE - 1) // = (TIM14->ARR)

// 替代定时器-时钟
// 告知CosyOS您所配置的定时器时钟，单位为兆赫（MHZ）。
#define MCUCFG_SYSTICK_CLK              1 // = (系统时钟 / (TIM14->PSC + 1))

//////////////////////////////////* 系统定义 *//////////////////////////////////

// 以下为系统定义，用户不可随意修改。

#define OS_PendSV_Handler               MCUCFG_XXXx_IRQHandler
#define MCUCFG_SYSTICK_AUTOCONFIG       0

#if (MCUCFG_XXXx_IRQn / 32 != MCUCFG_TIMn_IRQn / 32)
#error 参数非法，(MCUCFG_XXXx_IRQn / 32) 未能等于 (MCUCFG_TIMn_IRQn / 32)！
#endif

////////////////////////////////////////////////////////////////////////////////

#endif
#endif
