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

📄 main.c

📁 DSP上重新设定CPU的频率,虽然简单,但实用
💻 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 + -