]> begriffs open source - cmsis-driver-bare/blob - test/cmsis-validate.c
Pass cmsis validator test
[cmsis-driver-bare] / test / cmsis-validate.c
1 #include <stdlib.h>
2
3 #include CMSIS_device_header
4 #include "Driver_GPIO.h"
5
6 #include "sram_vtor.h"
7
8 #include "cmsis_dv.h"
9 #include "cmsis_os2.h"
10
11 // CMSIS RTOS2 error handler
12 void osRtxErrorNotify(uint32_t code)
13 {
14         (void)code;
15         // Handle RTOS errors
16         while(1);
17 }
18
19 void cmsis_validate_task(void *args)
20 {
21         (void)args;
22         
23         cmsis_dv(NULL);
24         
25         // Exit task when done
26         osThreadExit();
27 }
28
29 int main(void)
30 {
31         NVIC_Relocate_VTOR();
32         
33         SystemCoreClockUpdate();
34
35         // Enable GPIO clocks
36         RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;  // Enable GPIOB for PB4/PB5
37         (void)RCC->AHB1ENR;
38         (void)RCC->AHB1ENR;
39         
40         // Enable SYSCFG clock (required for EXTI interrupt routing)
41         RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
42         (void)RCC->APB2ENR;
43
44         osKernelInitialize();
45         
46         const osThreadAttr_t thread_attr = {
47                 .name = "CMSIS Validate",
48                 .stack_size = 1024  // 1024 words = 4096 bytes
49         };
50         osThreadNew(cmsis_validate_task, NULL, &thread_attr);
51         
52         osKernelStart();
53         
54         // Should never reach here
55         while(1);
56 }