📄 os_cpu_c.c
字号:
//==================================================
//:os_cpu.c
// ----
//--MSP430移植
//--2007/09 by zhaoert
//==================================================
#include "..\core\os.h"
#include <msp430x44x.h>
//------------------------------------------------------
#define TIMER_CNT ((8000000/4)/HZ) // (1/(8M/4))*TIMER_CNT=1/HZ
//OSInitTick
void OSInitTick(void){
//InitTick --- HZ=..., HZ is defined in os_cfg.h
TACTL=TASSEL1+TACLR; //use SMCLK, clear TAR
CCTL0=CCIE; //enable IR
CCR0=TIMER_CNT;
TACTL|=MC0; //Timer_a增计数模式
}
//OSInitTaskStk
void OSInitTaskStk(void(*task)(void), OS_STK* ptos, INT8U TaskID){
OS_STK* stk=ptos;
INT16U tmp;
tmp=(INT16U)task;
*stk--=tmp; //PC
//*stk--=0x00; //R3
*stk--=0x00; //R4
*stk--=0x00; //R5
*stk--=0x00; //R6
*stk--=0x00; //R7
*stk--=0x00; //R8
*stk--=0x00; //R9
*stk--=0x00; //R10
*stk--=0x00; //R11
*stk--=0x00; //R12
*stk--=0x00; //R13
*stk--=0x00; //R14
*stk--=0x00; //R15
*stk =0x08; //SR
OSTaskStkPtr[ TaskID ] = stk;
}
//-------------------------------------------------------------------
//Timer ISR
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void){
//OSTimeTick()=...
INT8U i;
for(i=1;i<OS_MAX_TASK+1;i++){
if(OSWaitTick[i]!=0){
OSWaitTick[i]--;
if(OSWaitTick[i]==0){
OSRdyTbl|=OSMaskTbl[i];
}
}
}
}
//:~
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -