#include "IfxCpu.h"
#include "IfxPort_Io.h"
#include "IfxPort_PinMap.h"
#include "IfxScuWdt.h"
#include "IfxStm.h"
#include "Ifx_IntPrioDef.h"
#include "Ifx_Types.h"
IfxCpu_syncEvent cpuSyncEvent = 0;
Ifx_STM * stmSfr;
IfxStm_CompareConfig stmConfig;
const IfxPort_Io_ConfigPin configPin[] = {
{&IfxPort_P10_2,
IfxPort_Mode_outputPushPullGeneral,
IfxPort_PadDriver_cmosAutomotiveSpeed1},
};
const IfxPort_Io_Config conf
= {sizeof(configPin) / sizeof(IfxPort_Io_ConfigPin),
(IfxPort_Io_ConfigPin *)configPin};
IFX_INTERRUPT(stm0Sr0ISR, 0, IFX_INTPRIO_STM0_SR0) {
IfxStm_clearCompareFlag(stmSfr, stmConfig.comparator);
IfxStm_increaseCompare(stmSfr, stmConfig.comparator, stmConfig.ticks);
IfxPort_setPinState(&MODULE_P10, 2, IfxPort_State_toggled);
}
void STM0_init(void) {
stmSfr = &MODULE_STM0;
IfxStm_initCompareConfig(&stmConfig);
sint32 ticks = IfxStm_getTicksFromMicroseconds(stmSfr, 100);
stmConfig.ticks = ticks;
stmConfig.triggerPriority = IFX_INTPRIO_STM0_SR0;
stmConfig.typeOfService = IfxSrc_Tos_cpu0;
IfxStm_initCompare(stmSfr, &stmConfig);
}
int core0_main(void) {
IfxCpu_enableInterrupts();
IfxScuWdt_disableCpuWatchdog(IfxScuWdt_getCpuWatchdogPassword());
IfxScuWdt_disableSafetyWatchdog(IfxScuWdt_getSafetyWatchdogPassword());
IfxCpu_emitEvent(&cpuSyncEvent);
IfxCpu_waitEvent(&cpuSyncEvent, 1);
IfxPort_Io_initModule(&conf);
STM0_init();
while(1) {
}
return 1;
}