} | } | ||||
} | } | ||||
// Long ago you could install your own systick interrupt handler by just | |||||
// creating your own systick_isr() function. No longer. But if you | |||||
// *really* want to commandeer systick, you can still do so by writing | |||||
// your function into the RAM-based vector table. | |||||
// | |||||
// _VectorsRam[15] = my_systick_function; | |||||
// | |||||
// However, for long-term portability, use a MillisTimer object to | |||||
// generate an event every millisecond, and attach your function to | |||||
// its EventResponder. You can attach as a software interrupt, so your | |||||
// code will run at lower interrupt priority for better compatibility | |||||
// with libraries using mid-to-high priority interrupts. | |||||
extern "C" volatile uint32_t systick_millis_count; | extern "C" volatile uint32_t systick_millis_count; | ||||
void systick_isr(void) | void systick_isr(void) | ||||
{ | { |
void svcall_isr(void) __attribute__ ((weak, alias("unused_isr"))); | void svcall_isr(void) __attribute__ ((weak, alias("unused_isr"))); | ||||
void debugmonitor_isr(void) __attribute__ ((weak, alias("unused_isr"))); | void debugmonitor_isr(void) __attribute__ ((weak, alias("unused_isr"))); | ||||
void pendablesrvreq_isr(void) __attribute__ ((weak, alias("unused_isr"))); | void pendablesrvreq_isr(void) __attribute__ ((weak, alias("unused_isr"))); | ||||
void systick_isr(void) __attribute__ ((weak, alias("unused_isr"))); | |||||
void systick_isr(void); | |||||
void dma_ch0_isr(void) __attribute__ ((weak, alias("unused_isr"))); | void dma_ch0_isr(void) __attribute__ ((weak, alias("unused_isr"))); | ||||
void dma_ch1_isr(void) __attribute__ ((weak, alias("unused_isr"))); | void dma_ch1_isr(void) __attribute__ ((weak, alias("unused_isr"))); |