浏览该文件的文档.
46 #ifndef CPU_MODULE_PRESENT
47 #define CPU_MODULE_PRESENT
163 #define CPU_CFG_ADDR_SIZE CPU_WORD_SIZE_32
164 #define CPU_CFG_DATA_SIZE CPU_WORD_SIZE_32
166 #define CPU_CFG_ENDIAN_TYPE CPU_ENDIAN_TYPE_LITTLE
176 #if (CPU_CFG_ADDR_SIZE == CPU_WORD_SIZE_32)
178 #elif (CPU_CFG_ADDR_SIZE == CPU_WORD_SIZE_16)
185 #if (CPU_CFG_DATA_SIZE == CPU_WORD_SIZE_32)
187 #elif (CPU_CFG_DATA_SIZE == CPU_WORD_SIZE_16)
211 #define CPU_CFG_STK_GROWTH CPU_STK_GROWTH_HI_TO_LO
278 #define CPU_CFG_CRITICAL_METHOD CPU_CRITICAL_METHOD_STATUS_LOCAL
283 #if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
284 #define CPU_SR_ALLOC() CPU_SR cpu_sr = (CPU_SR)0;
286 #define CPU_SR_ALLOC()
291 #define CPU_INT_DIS() { cpu_sr = CPU_SR_Save(); }
292 #define CPU_INT_EN() { CPU_SR_Restore(cpu_sr); }
295 #ifdef CPU_CFG_INT_DIS_MEAS_EN
298 #define CPU_CRITICAL_ENTER() { CPU_INT_DIS(); \
299 CPU_IntDisMeasStart(); }
302 #define CPU_CRITICAL_EXIT() { CPU_IntDisMeasStop(); \
307 #define CPU_CRITICAL_ENTER() { CPU_INT_DIS(); }
308 #define CPU_CRITICAL_EXIT() { CPU_INT_EN(); }
349 #define CPU_CFG_LEAD_ZEROS_ASM_PRESENT
368 #define CPU_INT_STK_PTR 0u
369 #define CPU_INT_RESET 1u
370 #define CPU_INT_NMI 2u
371 #define CPU_INT_HFAULT 3u
372 #define CPU_INT_MEM 4u
373 #define CPU_INT_BUSFAULT 5u
374 #define CPU_INT_USAGEFAULT 6u
375 #define CPU_INT_RSVD_07 7u
376 #define CPU_INT_RSVD_08 8u
377 #define CPU_INT_RSVD_09 9u
378 #define CPU_INT_RSVD_10 10u
379 #define CPU_INT_SVCALL 11u
380 #define CPU_INT_DBGMON 12u
381 #define CPU_INT_RSVD_13 13u
382 #define CPU_INT_PENDSV 14u
383 #define CPU_INT_SYSTICK 15u
392 #define CPU_REG_NVIC_NVIC (*((CPU_REG32 *)(0xE000E004)))
393 #define CPU_REG_NVIC_ST_CTRL (*((CPU_REG32 *)(0xE000E010)))
394 #define CPU_REG_NVIC_ST_RELOAD (*((CPU_REG32 *)(0xE000E014)))
395 #define CPU_REG_NVIC_ST_CURRENT (*((CPU_REG32 *)(0xE000E018)))
396 #define CPU_REG_NVIC_ST_CAL (*((CPU_REG32 *)(0xE000E01C)))
398 #define CPU_REG_NVIC_SETEN(n) (*((CPU_REG32 *)(0xE000E100 + (n) * 4u)))
399 #define CPU_REG_NVIC_CLREN(n) (*((CPU_REG32 *)(0xE000E180 + (n) * 4u)))
400 #define CPU_REG_NVIC_SETPEND(n) (*((CPU_REG32 *)(0xE000E200 + (n) * 4u)))
401 #define CPU_REG_NVIC_CLRPEND(n) (*((CPU_REG32 *)(0xE000E280 + (n) * 4u)))
402 #define CPU_REG_NVIC_ACTIVE(n) (*((CPU_REG32 *)(0xE000E300 + (n) * 4u)))
403 #define CPU_REG_NVIC_PRIO(n) (*((CPU_REG32 *)(0xE000E400 + (n) * 4u)))
405 #define CPU_REG_NVIC_CPUID (*((CPU_REG32 *)(0xE000ED00)))
406 #define CPU_REG_NVIC_ICSR (*((CPU_REG32 *)(0xE000ED04)))
407 #define CPU_REG_NVIC_VTOR (*((CPU_REG32 *)(0xE000ED08)))
408 #define CPU_REG_NVIC_AIRCR (*((CPU_REG32 *)(0xE000ED0C)))
409 #define CPU_REG_NVIC_SCR (*((CPU_REG32 *)(0xE000ED10)))
410 #define CPU_REG_NVIC_CCR (*((CPU_REG32 *)(0xE000ED14)))
411 #define CPU_REG_NVIC_SHPRI1 (*((CPU_REG32 *)(0xE000ED18)))
412 #define CPU_REG_NVIC_SHPRI2 (*((CPU_REG32 *)(0xE000ED1C)))
413 #define CPU_REG_NVIC_SHPRI3 (*((CPU_REG32 *)(0xE000ED20)))
414 #define CPU_REG_NVIC_SHCSR (*((CPU_REG32 *)(0xE000ED24)))
415 #define CPU_REG_NVIC_CFSR (*((CPU_REG32 *)(0xE000ED28)))
416 #define CPU_REG_NVIC_HFSR (*((CPU_REG32 *)(0xE000ED2C)))
417 #define CPU_REG_NVIC_DFSR (*((CPU_REG32 *)(0xE000ED30)))
418 #define CPU_REG_NVIC_MMFAR (*((CPU_REG32 *)(0xE000ED34)))
419 #define CPU_REG_NVIC_BFAR (*((CPU_REG32 *)(0xE000ED38)))
420 #define CPU_REG_NVIC_AFSR (*((CPU_REG32 *)(0xE000ED3C)))
422 #define CPU_REG_NVIC_PFR0 (*((CPU_REG32 *)(0xE000ED40)))
423 #define CPU_REG_NVIC_PFR1 (*((CPU_REG32 *)(0xE000ED44)))
424 #define CPU_REG_NVIC_DFR0 (*((CPU_REG32 *)(0xE000ED48)))
425 #define CPU_REG_NVIC_AFR0 (*((CPU_REG32 *)(0xE000ED4C)))
426 #define CPU_REG_NVIC_MMFR0 (*((CPU_REG32 *)(0xE000ED50)))
427 #define CPU_REG_NVIC_MMFR1 (*((CPU_REG32 *)(0xE000ED54)))
428 #define CPU_REG_NVIC_MMFR2 (*((CPU_REG32 *)(0xE000ED58)))
429 #define CPU_REG_NVIC_MMFR3 (*((CPU_REG32 *)(0xE000ED5C)))
430 #define CPU_REG_NVIC_ISAFR0 (*((CPU_REG32 *)(0xE000ED60)))
431 #define CPU_REG_NVIC_ISAFR1 (*((CPU_REG32 *)(0xE000ED64)))
432 #define CPU_REG_NVIC_ISAFR2 (*((CPU_REG32 *)(0xE000ED68)))
433 #define CPU_REG_NVIC_ISAFR3 (*((CPU_REG32 *)(0xE000ED6C)))
434 #define CPU_REG_NVIC_ISAFR4 (*((CPU_REG32 *)(0xE000ED70)))
435 #define CPU_REG_NVIC_SW_TRIG (*((CPU_REG32 *)(0xE000EF00)))
437 #define CPU_REG_MPU_TYPE (*((CPU_REG32 *)(0xE000ED90)))
438 #define CPU_REG_MPU_CTRL (*((CPU_REG32 *)(0xE000ED94)))
439 #define CPU_REG_MPU_REG_NBR (*((CPU_REG32 *)(0xE000ED98)))
440 #define CPU_REG_MPU_REG_BASE (*((CPU_REG32 *)(0xE000ED9C)))
441 #define CPU_REG_MPU_REG_ATTR (*((CPU_REG32 *)(0xE000EDA0)))
443 #define CPU_REG_DBG_CTRL (*((CPU_REG32 *)(0xE000EDF0)))
444 #define CPU_REG_DBG_SELECT (*((CPU_REG32 *)(0xE000EDF4)))
445 #define CPU_REG_DBG_DATA (*((CPU_REG32 *)(0xE000EDF8)))
446 #define CPU_REG_DBG_INT (*((CPU_REG32 *)(0xE000EDFC)))
457 #define CPU_REG_NVIC_ST_CTRL_COUNTFLAG 0x00010000
458 #define CPU_REG_NVIC_ST_CTRL_CLKSOURCE 0x00000004
459 #define CPU_REG_NVIC_ST_CTRL_TICKINT 0x00000002
460 #define CPU_REG_NVIC_ST_CTRL_ENABLE 0x00000001
464 #define CPU_REG_NVIC_ST_CAL_NOREF 0x80000000
465 #define CPU_REG_NVIC_ST_CAL_SKEW 0x40000000
468 #define CPU_REG_NVIC_ICSR_NMIPENDSET 0x80000000
469 #define CPU_REG_NVIC_ICSR_PENDSVSET 0x10000000
470 #define CPU_REG_NVIC_ICSR_PENDSVCLR 0x08000000
471 #define CPU_REG_NVIC_ICSR_PENDSTSET 0x04000000
472 #define CPU_REG_NVIC_ICSR_PENDSTCLR 0x02000000
473 #define CPU_REG_NVIC_ICSR_ISRPREEMPT 0x00800000
474 #define CPU_REG_NVIC_ICSR_ISRPENDING 0x00400000
475 #define CPU_REG_NVIC_ICSR_RETTOBASE 0x00000800
478 #define CPU_REG_NVIC_VTOR_TBLBASE 0x20000000
481 #define CPU_REG_NVIC_AIRCR_ENDIANNESS 0x00008000
482 #define CPU_REG_NVIC_AIRCR_SYSRESETREQ 0x00000004
483 #define CPU_REG_NVIC_AIRCR_VECTCLRACTIVE 0x00000002
484 #define CPU_REG_NVIC_AIRCR_VECTRESET 0x00000001
487 #define CPU_REG_NVIC_SCR_SEVONPEND 0x00000010
488 #define CPU_REG_NVIC_SCR_SLEEPDEEP 0x00000004
489 #define CPU_REG_NVIC_SCR_SLEEPONEXIT 0x00000002
492 #define CPU_REG_NVIC_CCR_STKALIGN 0x00000200
493 #define CPU_REG_NVIC_CCR_BFHFNMIGN 0x00000100
494 #define CPU_REG_NVIC_CCR_DIV_0_TRP 0x00000010
495 #define CPU_REG_NVIC_CCR_UNALIGN_TRP 0x00000008
496 #define CPU_REG_NVIC_CCR_USERSETMPEND 0x00000002
497 #define CPU_REG_NVIC_CCR_NONBASETHRDENA 0x00000001
500 #define CPU_REG_NVIC_SHCSR_USGFAULTENA 0x00040000
501 #define CPU_REG_NVIC_SHCSR_BUSFAULTENA 0x00020000
502 #define CPU_REG_NVIC_SHCSR_MEMFAULTENA 0x00010000
503 #define CPU_REG_NVIC_SHCSR_SVCALLPENDED 0x00008000
504 #define CPU_REG_NVIC_SHCSR_BUSFAULTPENDED 0x00004000
505 #define CPU_REG_NVIC_SHCSR_MEMFAULTPENDED 0x00002000
506 #define CPU_REG_NVIC_SHCSR_USGFAULTPENDED 0x00001000
507 #define CPU_REG_NVIC_SHCSR_SYSTICKACT 0x00000800
508 #define CPU_REG_NVIC_SHCSR_PENDSVACT 0x00000400
509 #define CPU_REG_NVIC_SHCSR_MONITORACT 0x00000100
510 #define CPU_REG_NVIC_SHCSR_SVCALLACT 0x00000080
511 #define CPU_REG_NVIC_SHCSR_USGFAULTACT 0x00000008
512 #define CPU_REG_NVIC_SHCSR_BUSFAULTACT 0x00000002
513 #define CPU_REG_NVIC_SHCSR_MEMFAULTACT 0x00000001
516 #define CPU_REG_NVIC_CFSR_DIVBYZERO 0x02000000
517 #define CPU_REG_NVIC_CFSR_UNALIGNED 0x01000000
518 #define CPU_REG_NVIC_CFSR_NOCP 0x00080000
519 #define CPU_REG_NVIC_CFSR_INVPC 0x00040000
520 #define CPU_REG_NVIC_CFSR_INVSTATE 0x00020000
521 #define CPU_REG_NVIC_CFSR_UNDEFINSTR 0x00010000
522 #define CPU_REG_NVIC_CFSR_BFARVALID 0x00008000
523 #define CPU_REG_NVIC_CFSR_STKERR 0x00001000
524 #define CPU_REG_NVIC_CFSR_UNSTKERR 0x00000800
525 #define CPU_REG_NVIC_CFSR_IMPRECISERR 0x00000400
526 #define CPU_REG_NVIC_CFSR_PRECISERR 0x00000200
527 #define CPU_REG_NVIC_CFSR_IBUSERR 0x00000100
528 #define CPU_REG_NVIC_CFSR_MMARVALID 0x00000080
529 #define CPU_REG_NVIC_CFSR_MSTKERR 0x00000010
530 #define CPU_REG_NVIC_CFSR_MUNSTKERR 0x00000008
531 #define CPU_REG_NVIC_CFSR_DACCVIOL 0x00000002
532 #define CPU_REG_NVIC_CFSR_IACCVIOL 0x00000001
535 #define CPU_REG_NVIC_HFSR_DEBUGEVT 0x80000000
536 #define CPU_REG_NVIC_HFSR_FORCED 0x40000000
537 #define CPU_REG_NVIC_HFSR_VECTTBL 0x00000002
540 #define CPU_REG_NVIC_DFSR_EXTERNAL 0x00000010
541 #define CPU_REG_NVIC_DFSR_VCATCH 0x00000008
542 #define CPU_REG_NVIC_DFSR_DWTTRAP 0x00000004
543 #define CPU_REG_NVIC_DFSR_BKPT 0x00000002
544 #define CPU_REG_NVIC_DFSR_HALTED 0x00000001
554 #ifndef CPU_CFG_ADDR_SIZE
555 #error "CPU_CFG_ADDR_SIZE not #define'd in 'cpu.h' "
556 #error " [MUST be CPU_WORD_SIZE_08 8-bit alignment]"
557 #error " [ || CPU_WORD_SIZE_16 16-bit alignment]"
558 #error " [ || CPU_WORD_SIZE_32 32-bit alignment]"
560 #elif ((CPU_CFG_ADDR_SIZE != CPU_WORD_SIZE_08) && \
561 (CPU_CFG_ADDR_SIZE != CPU_WORD_SIZE_16) && \
562 (CPU_CFG_ADDR_SIZE != CPU_WORD_SIZE_32))
563 #error "CPU_CFG_ADDR_SIZE illegally #define'd in 'cpu.h' "
564 #error " [MUST be CPU_WORD_SIZE_08 8-bit alignment]"
565 #error " [ || CPU_WORD_SIZE_16 16-bit alignment]"
566 #error " [ || CPU_WORD_SIZE_32 32-bit alignment]"
570 #ifndef CPU_CFG_DATA_SIZE
571 #error "CPU_CFG_DATA_SIZE not #define'd in 'cpu.h' "
572 #error " [MUST be CPU_WORD_SIZE_08 8-bit alignment]"
573 #error " [ || CPU_WORD_SIZE_16 16-bit alignment]"
574 #error " [ || CPU_WORD_SIZE_32 32-bit alignment]"
576 #elif ((CPU_CFG_DATA_SIZE != CPU_WORD_SIZE_08) && \
577 (CPU_CFG_DATA_SIZE != CPU_WORD_SIZE_16) && \
578 (CPU_CFG_DATA_SIZE != CPU_WORD_SIZE_32))
579 #error "CPU_CFG_DATA_SIZE illegally #define'd in 'cpu.h' "
580 #error " [MUST be CPU_WORD_SIZE_08 8-bit alignment]"
581 #error " [ || CPU_WORD_SIZE_16 16-bit alignment]"
582 #error " [ || CPU_WORD_SIZE_32 32-bit alignment]"
588 #ifndef CPU_CFG_ENDIAN_TYPE
589 #error "CPU_CFG_ENDIAN_TYPE not #define'd in 'cpu.h' "
590 #error " [MUST be CPU_ENDIAN_TYPE_BIG ]"
591 #error " [ || CPU_ENDIAN_TYPE_LITTLE]"
593 #elif ((CPU_CFG_ENDIAN_TYPE != CPU_ENDIAN_TYPE_BIG ) && \
594 (CPU_CFG_ENDIAN_TYPE != CPU_ENDIAN_TYPE_LITTLE))
595 #error "CPU_CFG_ENDIAN_TYPE illegally #define'd in 'cpu.h' "
596 #error " [MUST be CPU_ENDIAN_TYPE_BIG ]"
597 #error " [ || CPU_ENDIAN_TYPE_LITTLE]"
603 #ifndef CPU_CFG_STK_GROWTH
604 #error "CPU_CFG_STK_GROWTH not #define'd in 'cpu.h' "
605 #error " [MUST be CPU_STK_GROWTH_LO_TO_HI]"
606 #error " [ || CPU_STK_GROWTH_HI_TO_LO]"
608 #elif ((CPU_CFG_STK_GROWTH != CPU_STK_GROWTH_LO_TO_HI) && \
609 (CPU_CFG_STK_GROWTH != CPU_STK_GROWTH_HI_TO_LO))
610 #error "CPU_CFG_STK_GROWTH illegally #define'd in 'cpu.h' "
611 #error " [MUST be CPU_STK_GROWTH_LO_TO_HI]"
612 #error " [ || CPU_STK_GROWTH_HI_TO_LO]"
618 #ifndef CPU_CFG_CRITICAL_METHOD
619 #error "CPU_CFG_CRITICAL_METHOD not #define'd in 'cpu.h' "
620 #error " [MUST be CPU_CRITICAL_METHOD_INT_DIS_EN ]"
621 #error " [ || CPU_CRITICAL_METHOD_STATUS_STK ]"
622 #error " [ || CPU_CRITICAL_METHOD_STATUS_LOCAL]"
624 #elif ((CPU_CFG_CRITICAL_METHOD != CPU_CRITICAL_METHOD_INT_DIS_EN ) && \
625 (CPU_CFG_CRITICAL_METHOD != CPU_CRITICAL_METHOD_STATUS_STK ) && \
626 (CPU_CFG_CRITICAL_METHOD != CPU_CRITICAL_METHOD_STATUS_LOCAL))
627 #error "CPU_CFG_CRITICAL_METHOD illegally #define'd in 'cpu.h' "
628 #error " [MUST be CPU_CRITICAL_METHOD_INT_DIS_EN ]"
629 #error " [ || CPU_CRITICAL_METHOD_STATUS_STK ]"
630 #error " [ || CPU_CRITICAL_METHOD_STATUS_LOCAL]"