📄 main.c
字号:
#include <stdio.h>
#include <csl.h>
#include <csl_timer.h>
#include <csl_irq.h>
#include "sine.h"
#define TIMER_CNT 20 /* Maximum count value */
/*----------------------------------------------------------------------------*/
void TimerEventHandler(void);
extern far void vectors();
static TIMER_Handle hTimer1;
static Uint32 TimerEventId;
static int cnt = 0;
int gain = INITIALGAIN;
IOBuffer currentBuffer;
/*----------------------------------------------------------------------------*/
static Uint32 TimerControl = TIMER_CTL_RMK(
TIMER_CTL_INVINP_NO,
TIMER_CTL_CLKSRC_CPUOVR4,
TIMER_CTL_CP_PULSE,
TIMER_CTL_HLD_YES,
TIMER_CTL_GO_NO,
TIMER_CTL_PWID_ONE,
TIMER_CTL_DATOUT_0,
TIMER_CTL_INVOUT_NO,
TIMER_CTL_FUNC_GPIO
);
/*----------------------------------------------------------------------------*/
void main()
{
CSL_init();
hTimer1 = TIMER_open(TIMER_DEV1, TIMER_OPEN_RESET);
TimerEventId = TIMER_getEventId(hTimer1);
IRQ_setVecs(vectors);
IRQ_globalEnable();
IRQ_nmiEnable();
IRQ_map(TimerEventId, 14);
IRQ_reset(TimerEventId);
TIMER_configArgs(hTimer1,
TimerControl, /* use predefined control value */
0x00100000, /* set period */
0x00000000 /* start count value at zero */
);
IRQ_enable(TimerEventId);
TIMER_start(hTimer1);
while(cnt <= TIMER_CNT);
}
void TimerEventHandler(void) {
int size = BUFFSIZE;
cnt++;
while(size--){
currentBuffer.modu[size] = currentBuffer.input[size] * gain;
currentBuffer.output[size]=currentBuffer.modu[size] * currentBuffer.input[size];
}
if (cnt > TIMER_CNT)
{
TIMER_pause(hTimer1);
TIMER_close(hTimer1);
printf("\nDone...");
exit(0);
}
printf("\n Count : %3d ",cnt);
}
interrupt void c_int14(void)
{
TimerEventHandler();
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -