在裸核开发下,在PDK的CSL的库想使用Soc内部定时器8-15中一个实现通用 64bit定时器自动加载模块,以定期器周期产生中断输入,然后实现中断功能。
初次开发DSP处理器, 非常白,想咨询一些问题。
1.首先,定时器软件框架如下:
int8_t timer_led(uint8_t instance, uint32_t timer_clk_freq)
{
CSL_TmrObj TmrObj; //Tmr struct
CSL_TmrHandle hTmr; //hTmr->TmrObj
CSL_Status status; //
CSL_TmrHwSetup hwSetup = CSL_TMR_HWSETUP_DEFAULTS;
CSL_TmrEnamode TimeCountMode = CSL_TMR_ENAMODE_CONT;
/* Clear local data structures */
memset(&TmrObj, 0, sizeof(CSL_TmrObj));
CSL_BootCfgLockKicker();
hTmr = CSL_tmrOpen(&TmrObj, instance, NULL, &status);
hwSetup.tmrTimerPeriodLo = period; //设定定时器周期计数数
/* Clock mode for timerLow output */
hwSetup.tmrClockPulseLo = CSL_TMR_CP_CLOCK;
CSL_tmrHwSetup(hTmr, &hwSetup);
/* Reset the 64-bits low Timer */
CSL_tmrHwControl(hTmr, CSL_TMR_CMD_RESET64, NULL); //选择CSL_TMR_CMD_RESET64模式不知道是否正确?
/* Start the timer in CONTINUOUS Mode . */
CSL_tmrHwControl(hTmr, CSL_TMR_CMD_START64 , (void *)&TimeCountMode);
}
这样实现通过自动加载的64位定时程序正确吗?程序运行了,感觉运行基本正常。
2.C6678的核心中断中有定时器中断,下步只通过INTC配置直接产生一级中断给CPU,不行CIC配置。这样方式对吗?
3。上图定时器8中断时间对应Input event number 66和67 ,描述中 Timer interrput low和Timer interrput high对应什么?是中断出发电平?
我采用通过64位定时器产生中断时,Timer interrput low和Timer interrput high都有输出?
4。请问现在针对C6678裸核中断,官方还有什么案例参考?