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

📄 main.c

📁 简易正弦波发生器方案
💻 C
字号:
#include "SPCE061V004.h"

extern unsigned int SIN_Table[];		//在sintable.asm中定义的正弦表

unsigned int Table_Index=0;				//查表索引
unsigned int uiStep=1;					//步进值,初始化为1

int main(void)
{
	__asm("INT OFF");					//关掉IRQ、FIQ总中断
	*P_SystemClock = 0x0088;			//系统频率设置为49.152MHz,强振模式
	*P_DAC_Ctrl = 0x0000;				//DAC输出为写入DAC锁存器后即启动转换
	*P_TimerB_Data = 65511;				//初始化TimerB的重载值
	*P_TimerB_Ctrl = 0;					//设置TimerB的时钟源为Fosc/2
	
	*P_INT_Ctrl = 0x0400;				//打开TimerB的IRQ2中断
	__asm("IRQ ON");					//打开IRQ总中断
	
	while(1)
	{
		*P_Watchdog_Clear = 0x0001;		//清狗
	}
}

void IRQ2(void)__attribute__((ISR));	//声明为中断入口函数
void IRQ2(void)
{
	int uiData;	
	if(*P_INT_Ctrl&0x0400)				//判断是否为TimerB的IRQ2中断?
	{
		uiData = SIN_Table[Table_Index];	//读表
		uiData = uiData<<6;					//移位
		*P_DAC1 = uiData&0xffc0;			
		Table_Index+=uiStep;				//加上步进值
		if(Table_Index>=256)Table_Index-=256;	//索引溢出
		*P_INT_Clear = 0x0400;				//清中断标志
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -