⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sampersys.c

📁 S64和VS1003的MP3播放实现的源代码/
💻 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 + -