hardware-exception
设置处理器异常处理程序的方法。
详细描述
异常由 exception_number 标识,该数值范围为 -15 到 -1;这些是相对于向量表中第一个 IRQ 向量索引的相对编号。(即向量表索引等于 exception_num 加 16)
每个核心有一套独立的异常处理程序,因此通过这些方法为每个核心设置的异常处理程序是相互独立的。
所有异常 API 仅影响当前执行的核心(即调用函数的那个核心)。
类型定义
typedef void(* exception_handler_t)(void)
异常处理函数类型。
枚举
enum exception_number { MIN_EXCEPTION_NUM = 2, [NMI_EXCEPTION] = 2, [HARDFAULT_EXCEPTION] = 3, [MEMMANAGE_EXCEPTION] = 4, [BUSFAULT_EXCEPTION] = 5, [USAGEFAULT_EXCEPTION] = 6, [SECUREFAULT_EXCEPTION] = 7, [SVCALL_EXCEPTION] = 11, [PENDSV_EXCEPTION] = 14, [SYSTICK_EXCEPTION] = 15, MAX_EXCEPTION_NUM = 15 }: 异常编号定义。
函数
- exception_handler_t exception_set_exclusive_handler (enum exception_number num, exception_handler_t handler): 为当前执行核心的指定异常设置处理程序。
void exception_restore_handler (enum exception_number num, exception_handler_t original_handler): 为当前核心恢复指定异常的原始处理程序。- exception_handler_t exception_get_vtable_handler (enum exception_number num): 从当前执行核心已安装的向量表中获取指定异常的当前处理程序。
bool exception_set_priority (uint num, uint8_t hardware_priority): 设置指定异常的优先级。uint exception_get_priority (uint num): 获取指定异常的优先级。
类型定义文档
exception_handler_t
typedef void(* exception_handler_t) (void)
异常处理函数类型。
所有异常处理函数均应为此类型,并遵循标准 ARM EABI 寄存器保存约定。