📄 bsp.c
字号:
*/
static void Tmr_TickInit (void)
{
CPU_INT32U pclk_freq;
CPU_INT32U tmr_reload;
/* 初始化TIMER0的VIC*/
VICIntSelect &= ~(1 << VIC_TIMER0); /* TIMER0中断使能*/
VICVectAddr2 = (CPU_INT32U)Tmr_TickISR_Handler; /* 设置中断向量地址*/
VICVectCntl2 = 0x20 | VIC_TIMER0; /* 允许中断*/
VICIntEnable = (1 << VIC_TIMER0); /* 中断使能*/
pclk_freq = BSP_CPU_PclkFreq(); /*读取CPU主频*/
tmr_reload = pclk_freq / OS_TICKS_PER_SEC;
T0TCR = 0; /* 停TIME0*/
T0PC = 0; /* 清TIME0的预分频寄存器*/
T0MR0 = tmr_reload;
T0MCR = 3; /* Interrupt on MR0 (reset TC) */
T0CCR = 0; /* Capture is disabled. */
T0EMR = 0; /* No external match output. */
T0TCR = 1; /* Enable timer 0 */
}
/*
*********************************************************************************************************
* Tmr_TickISR_Handler()
*
* 功能描述: 处理用来产生uC/OS-II节拍的定时器中断
*
* 入口参数: 无
*
* 返回参数: 无
*********************************************************************************************************
*/
void Tmr_TickISR_Handler (void)
{
T0IR = 0xFF; /*复位TIME0的所有中断*/
OSTimeTick(); /* 调用uC/OS-II的OSTimeTick()*/
}
/*
*********************************************************************************************************
*********************************************************************************************************
** 本地函数
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* BSP_PLL_Init()
*
* 功能描述: 设置和激活锁相环PLL
*
* 入口参数: 无
*
* 返回参数: 无
*********************************************************************************************************
*/
static void BSP_PLL_Init (void)
{
#if OS_CRITICAL_METHOD == 3 /* 为CPU的状态寄存器分配存储空间*/
OS_CPU_SR cpu_sr = 0;
#endif
OS_ENTER_CRITICAL();
/* 设置系统各部分时钟 */
/* Set system timers for each component */
PLLCON = 1;
#if (Fpclk / (Fcclk / 4)) == 1
VPBDIV = 0;
#endif
#if (Fpclk / (Fcclk / 4)) == 2
VPBDIV = 2;
#endif
#if (Fpclk / (Fcclk / 4)) == 4
VPBDIV = 1;
#endif
#if (Fcco / Fcclk) == 2
PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
PLLFEED = 0xaa;
PLLFEED = 0x55;
while((PLLSTAT & (1 << 10)) == 0);
PLLCON = 3;
PLLFEED = 0xaa;
PLLFEED = 0x55;
/* 设置存储器加速模块 */
/* Set memory accelerater module*/
MAMCR = 0;
#if Fcclk < 20000000
MAMTIM = 1;
#else
#if Fcclk < 40000000
MAMTIM = 2;
#else
MAMTIM = 3;
#endif
#endif
MAMCR = 2;
OS_EXIT_CRITICAL();
}
/*
*********************************************************************************************************
* BSP_IO_Init()
*
* 功能描述: 初始化GPIO引脚.
*
* 入口参数: 无
*
* 返回参数: 无
*
* 注意事项:
*********************************************************************************************************
*/
static void BSP_IO_Init (void)
{
PINSEL0 = (PINSEL0 & 0xFFFF0000) | 0x05 | 0x50;
#ifdef __IN_CHIP
PINSEL2 = 0x0f814910;
#else
PINSEL2 = 0x0f814914;
#endif
BCFG0=0x1000ffef;
BCFG1=0x1000ffef;
}
/*
*********************************************************************************************************
* BSP_MAM_Init()
*
* 功能描述: 初始化存储器加速模块
*
* 入口参数: 无
*
* 返回参数: 无
*********************************************************************************************************
*/
//static void BSP_MAM_Init (void)
//{
// MAMCR = 0x00; /* Disable the Memory Accelerator Module */
// MAMTIM = 0x03; /* MAM fetch cycles are 3 CCLKs in duration */
// MAMCR = 0x02; /* Enable the Memory Accelerator Module */
//}
/*
*********************************************************************************************************
*********************************************************************************************************
** VIC FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* 中断控制器的设置
*********************************************************************************************************
*/
static void VIC_Init (void)
{
VICIntEnClear = 0xFFFFFFFF;/*禁止所有中断*/
VICProtection = 0;/*设置保护使能寄存器使得VIC寄存器可在用户模式或特权模式下访问*/
/* 以下是设置中断向量地址*/
// VICVectAddr1 = (CPU_INT32U)VIC_DummyWDT;
VICVectAddr2 = (CPU_INT32U)VIC_DummyTIMER0;
// VICVectAddr3 = (CPU_INT32U)VIC_DummyTIMER1;
// VICVectAddr4 = (CPU_INT32U)VIC_DummyUART0;
// VICVectAddr5 = (CPU_INT32U)VIC_DummyUART1;
// VICVectAddr6 = (CPU_INT32U)VIC_DummyPWM0;
// VICVectAddr7 = (CPU_INT32U)VIC_DummyI2C;
// VICVectAddr8 = (CPU_INT32U)VIC_DummySPI;
// VICVectAddr9 = (CPU_INT32U)VIC_DummyRTC;
// VICVectAddr10 = (CPU_INT32U)VIC_DummyEINT0;
// VICVectAddr11 = (CPU_INT32U)VIC_DummyEINT1;
// VICVectAddr12 = (CPU_INT32U)VIC_DummyEINT2;
}
static void VIC_DummyTIMER0 (void)
{
VIC_SpuriousInt = VIC_TIMER0;//TIME0的设置中断源 ????
VIC_Dummy();
}
static void VIC_Dummy (void)
{
while (1) {
(void)VIC_SpuriousInt;
}
}
/*
static void VIC_DummyWDT (void)
{
VIC_SpuriousInt = VIC_WDT;
VIC_Dummy();
}
static void VIC_DummyTIMER1 (void)
{
VIC_SpuriousInt = VIC_TIMER1;
VIC_Dummy();
}
static void VIC_DummyUART0 (void)
{
VIC_SpuriousInt = VIC_UART0;
VIC_Dummy();
}
static void VIC_DummyUART1 (void)
{
VIC_SpuriousInt = VIC_UART1;
VIC_Dummy();
}
static void VIC_DummyPWM0 (void)
{
VIC_SpuriousInt = VIC_UART1;
VIC_Dummy();
}
static void VIC_DummyI2C (void)
{
VIC_SpuriousInt = VIC_I2C;
VIC_Dummy();
}
static void VIC_DummySPI (void)
{
VIC_SpuriousInt = VIC_SPI;
VIC_Dummy();
}
static void VIC_DummyRTC (void)
{
VIC_SpuriousInt = VIC_RTC;
VIC_Dummy();
}
static void VIC_DummyEINT0 (void)
{
VIC_SpuriousInt = VIC_EINT0;
VIC_Dummy();
}
static void VIC_DummyEINT1 (void)
{
VIC_SpuriousInt = VIC_EINT1;
VIC_Dummy();
}
static void VIC_DummyEINT2 (void)
{
VIC_SpuriousInt = VIC_EINT2;
VIC_Dummy();
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -