RISC中关中断应该用原子操作,避免多任务环境造成错误

This commit is contained in:
2026-05-23 00:59:24 +08:00
parent f957224afd
commit 21b3c925c2
4 changed files with 13 additions and 3 deletions
+5 -1
View File
@@ -5,6 +5,7 @@
#include "os_compiler.h"
#include "os_systick.h"
#include "os_sched.h"
#include "os_isr.h"
#include "qkv3.h"
/* ------------------------------------------------------------------------------------------------------------------ */
@@ -16,7 +17,8 @@
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
static uint32_t _SysTick_Config(os_tick_t ticks)
OS_STATIC_FORCE_INLINE
uint32_t _SysTick_Config(os_tick_t ticks)
{
QKV3_PFIC->CFGR=0xFA050003; /* 关闭硬件压栈和嵌套 */
/*
@@ -187,6 +189,7 @@ void os_port_context_switch(void* from_sp, void* to_sp){
void SysTick_Handler(void) __attribute__((interrupt()));
void SysTick_Handler(void){
os_isr_enter();
QKV3_SysTick->CTLR=0;
QKV3_SysTick->CNTL0=0;QKV3_SysTick->CNTL1=0;QKV3_SysTick->CNTL2=0;QKV3_SysTick->CNTL3=0;
QKV3_SysTick->CNTH0=0;QKV3_SysTick->CNTH1=0;QKV3_SysTick->CNTH2=0;QKV3_SysTick->CNTH3=0;
@@ -194,5 +197,6 @@ void SysTick_Handler(void){
// 调用系统心跳处理
os_systick_tick();
os_isr_leave();
}
-2
View File
@@ -38,8 +38,6 @@
#define QKV3_SysTick ((QKV3_SysTick_Type *) 0xE000F000)
/* ------------------------------------------------------------------------------------------------------------------ */
/* */