mirror of
https://github.com/raspberrypi/pico-sdk.git
synced 2025-04-24 09:02:28 +00:00
42 lines
914 B
C
42 lines
914 B
C
#include <stdio.h>
|
|
|
|
#if PICO_RP2040
|
|
#include "RP2040.h"
|
|
#else
|
|
#include "RP2350.h"
|
|
#endif
|
|
#include "pico/stdlib.h"
|
|
#include "hardware/irq.h"
|
|
|
|
__STATIC_FORCEINLINE int some_function(int i) {
|
|
return __CLZ(i);
|
|
}
|
|
|
|
static bool pendsv_called, irq_handler_called;
|
|
|
|
void PendSV_Handler(void) {
|
|
pendsv_called = true;
|
|
}
|
|
|
|
void DMA_IRQ_0_Handler(void) {
|
|
irq_handler_called = true;
|
|
irq_clear(DMA_IRQ_0_IRQn);
|
|
}
|
|
|
|
int main(void) {
|
|
stdio_init_all();
|
|
for(int i=0;i<10;i++) {
|
|
printf("%d %d\n", i, some_function(i));
|
|
}
|
|
SCB->ICSR = SCB_ICSR_PENDSVSET_Msk;
|
|
printf("PENDSV: ");
|
|
puts(pendsv_called ? "SUCCESS" : "FAILURE");
|
|
printf("DMA_IRQ_0: ");
|
|
irq_set_enabled(DMA_IRQ_0_IRQn, true);
|
|
irq_set_pending(DMA_IRQ_0_IRQn);
|
|
puts(irq_handler_called ? "SUCCESS" : "FAILURE");
|
|
bool ok = pendsv_called && irq_handler_called;
|
|
puts(ok ? "PASSED" : "FAILED");
|
|
return !ok;
|
|
}
|