RISC中关中断应该用原子操作,避免多任务环境造成错误
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user