📄 main.c
字号:
#include "stdio.h"
#include "pll.h"
#include "pllo.h"
void InitClk(void);
void InitInt(void);
void InitTimer0(void);
static int ct=0;
main()
{
RESET_REG_BIT(CSR,GIE);
InitClk();
InitInt();
InitTimer0();
while(1){;}
}
void InitInt(void)
{
printf("Interrupt Initial\n");
RESET_REG_BIT(CSR,GIE); //关中断
//LOAD_FIELD(0x0019c0004,0x01,0,5);//设置INT4为计数器中断
SET_REG_BIT(IER, NMIE);//开非屏蔽中断
}
void InitClk(void)
{
RESET_BIT(PLLCSR,0); //Disable PLLCSR
SET_BIT(PLLCSR,3); //PLLCSR unusable
SET_BIT(PLLDIV0,DEN);
LOAD_FIELD(PLLDIV0,1,PLLDIV,5); //D0=/2
LOAD_FIELD(PLLM,9,PLLMN,5); //PLLM=*9
SET_BIT(OSCDIV1,ODEN);
LOAD_FIELD(OSCDIV1,4,PLLDIV,5); //OSCDIV1=/5
SET_BIT(PLLDIV2,DEN);
LOAD_FIELD(PLLDIV2,1,PLLDIV,5); //D2=/2
SET_BIT(PLLDIV1,DEN);
LOAD_FIELD(PLLDIV1,0,PLLDIV,5); //D1=/1
SET_BIT(PLLDIV3,DEN);
LOAD_FIELD(PLLDIV3,2,PLLDIV,5); //D3=/3
RESET_BIT(PLLCSR,PLLRST); //PLLCSR in use
while(1)
{
if((*((int *)PLLCSR)&0x40)!=0)
break;
}
SET_BIT(PLLCSR,PLLEN); //Enable PLLCSR
printf("Clock is Ok\n");
}
void InitTimer0(void)
{
RESET_BIT(CTL0,GO);
RESET_BIT(CTL0,HLD);
*((int*)PRD0)=225000;
SET_BIT(CTL0,FUNC);
RESET_BIT(CTL0,CP);
RESET_BIT(CTL0,PWID);
SET_BIT(CTL0,CLKSRC);
RESET_BIT(CTL0,INVOUT);
SET_BIT(CTL0,HLD);
SET_BIT(CTL0,GO);
SET_REG_BIT(IER,IE14); //开中断
SET_REG_BIT(CSR,GIE); //开中断
printf("Timer is ok\n");
}
interrupt void func_int14(void)//interrupt for timer0
{
// printf("OK\n");
ct++;
if(ct>=1000)
{
printf("%d\n",ct);
ct=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -