📄 main.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 + -