|
#include <stdio.h>
#include "M051Series.h"
#include "disdrv.h"
#include "time2.h"
#include "time1.h"
#include "video.h"
#include "snake.h"
#include "muart1.h"
#define PLLCON_SETTING CLK_PLLCON_50MHz_HXT
#define PLL_CLOCK 50000000
#define MFLAG 1
#define MLAYER 15
u8 flag;
// void test(void)
// {
// u8 i;
// while(1)
// {
// if(flag=='L')
// {
// i = 'M';
// UART_Write(UART0,&i,1);
// }
// }
// }
void SYS_Init(void)
{
CLK->PWRCON |= CLK_PWRCON_IRC22M_EN_Msk; /* Init System Clock * Enable IRC22M clock */
CLK_WaitClockReady(CLK_CLKSTATUS_IRC22M_STB_Msk);/* Waiting for IRC22M clock ready */
CLK->CLKSEL0 = CLK_CLKSEL0_HCLK_S_HIRC;/* Switch HCLK clock source to HIRC */
CLK->PLLCON |= CLK_PLLCON_PD_Msk; /* Set PLL to Power-down mode and PLL_STB bit in CLKSTATUS register will be cleared by hardware.*/
CLK->PWRCON |= CLK_PWRCON_XTL12M_EN_Msk | CLK_PWRCON_OSC10K_EN_Msk; /* Enable external 12 MHz XTAL, IRC10K */
CLK->PLLCON = PLLCON_SETTING; /* Enable PLL and Set PLL frequency */
CLK_WaitClockReady(CLK_CLKSTATUS_PLL_STB_Msk | CLK_CLKSTATUS_XTL12M_STB_Msk | CLK_CLKSTATUS_IRC10K_STB_Msk); /* Waiting for clock ready */
CLK->CLKSEL0 = CLK_CLKSEL0_STCLK_S_HCLK_DIV2 | CLK_CLKSEL0_HCLK_S_PLL; /* Switch HCLK clock source to PLL, STCLK to HCLK/2 */
CLK->APBCLK = CLK_APBCLK_UART0_EN_Msk; /* Enable peripheral clock */
CLK->CLKSEL1 = CLK_CLKSEL1_UART_S_PLL; /* Peripheral clock source */
SystemCoreClockUpdate(); /* Update System Core Clock *User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
}
int main(void)
{
SYS_Init();/* Init System, peripheral clock and multi-function I/O */
disdrv_init();
Time2_Init();
Time1_Init();
uart0_init();
while(1)
{
//test();
// //snake_game();
flash1(); //文字推出顯示
flash2(); //亂放圓環
flash5(); //激光金字塔
flash6(); //水滴出字
flash7(); //四核打印字體
flash8(); //:平面擺動
flash9(); //煙花
flash10(); //雨滴
flash3() ; //萬家燈火
flash4(); //下雪 雪上升
flash11(); //字體擺動
flash12();
flash13();
flash14();
//flash15();
}
}
/*測試燈程序
#if MFLAG
DIS_LAT(0);
for(i=0;i<16;i++)
{
write_DM13(0x0000);
if(i==MLAYER)write_DM13(j);//
}
DIS_LAT(1);
for(i=0;i<16;i++)
{
layer_set(i);
CLK_SysTickDelay(50000);
}
j<<=1;
#else
DIS_LAT(0);
for(i=0;i<16;i++)
{
write_DM13(0x0000);
if(i==MLAYER )write_DM13(0xffff);///
}
DIS_LAT(1);
for(i=0;i<16;i++)
{
layer_set(i);
CLK_SysTickDelay(500000);
}
j<<=1;
#endif
*/
//測試燈程序
//for(i=1;i<5;i++)
// check_l ed(i);
//check_led(4);
void UART0_IRQHandler(void)
{
static uint32_t u32IntSts1;
if(u32IntSts1&UART_ISR_RDA_INT_Msk)//檢查是否接收數據中斷,是否接到break信號
{
flag = UART_READ(UART0);
}
}
|
|