sampersys.c

来自「S64和VS1003的MP3播放实现的源代码/」· C语言 代码 · 共 110 行

C
110
字号
#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 + =
减小字号Ctrl + -
显示快捷键?