📄 sampersys.c
字号:
#ifdef AT91SAM7S32
#include "AT91SAM7S32.h"
#include "lib_AT91SAM7S32.h"
#endif
#ifdef AT91SAM7S64
#include "AT91SAM7S64.h"
#include "lib_AT91SAM7S64.h"
#endif
#include "SAMperSYS.h"
#include "SAMinit.h"
#include "dbgu.h"
#ifdef FREERTOS_S32_RV
#include "portmacro.h"
#include "FreeRTOSConfig.h"
#endif
#ifdef USE_UCOS_II
#include "ucos_ii.h"
#endif
#ifdef USE_FATFS
extern void disk_timerproc (void);
#endif
void SAMPitISR(void)
{
unsigned int dummy = 0;
dummy =AT91F_PITGetPIVR(AT91C_BASE_PITC); // clear int flag
dummy = dummy;
#ifdef USE_UCOS_II
OSTimeTick();
#endif
#ifdef USE_FATFS
disk_timerproc();
#endif
}
#if OS_TASK_STAT_EN > 0
extern void OSView_RxTxISRHandler(void);
#endif
void SAMDbguISR(void)
{
#if OS_TASK_STAT_EN > 0
OSView_RxTxISRHandler();
#endif
}
void SAMsysISR(void)
{
unsigned int s = 0;
/* PIT interrupt */
s = AT91F_PITGetStatus(AT91C_BASE_PITC);
s &= AT91C_PITC_PITS;
if (s) SAMPitISR();
/* DEBUG UNIT interrupt */
//s = AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_DBGU);
//s |= AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_DBGU);
//if (s)
SAMDbguISR();
/* RTT interrupt */
AT91F_AIC_ClearIt(AT91C_BASE_AIC, AT91C_ID_SYS);
}
void SAMPitInit(void)
{
AT91F_PITC_CfgPMC();
#ifdef FREERTOS_S32_RV
AT91F_PITInit(AT91C_BASE_PITC, configTICK_RATE_HZ, MCK);
#endif
#ifdef USE_UCOS_II
AT91F_PITInit(AT91C_BASE_PITC, OS_TICKS_PER_SEC, MCK);
#endif
#ifdef USE_FATFS
/* call void disk_timerproc () @ 100Hz (10ms)*/
AT91F_PITInit(AT91C_BASE_PITC, 100, MCK);
#endif
AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_SYS, AT91C_AIC_PRIOR_LOWEST,
AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE,
SAMsysISR);
AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_SYS);
AT91F_PITEnableInt(AT91C_BASE_PITC);
}
void SAMRttInit(void)
{
AT91F_RTTSetPrescaler(AT91C_BASE_RTTC, 16); // 16/32768, approx. 0.5ms
AT91F_RTTRestart(AT91C_BASE_RTTC);
}
void SAMDbguInit(void)
{
AT91F_DBGU_Init();
AT91F_DBGU_Frame("DBGU Init Done! > DBGU\n\r");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -