重点学习点:
typedef enum {DISABLE = 0, ENABLE = !DISABLE} EventStatus, ControlStatus,FunctionalState;
typedef enum {FALSE = 0, TRUE = !FALSE} bool;
typedef enum {RESET = 0, SET = !RESET} FlagStatus;
typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrStatus;
typedef enum {FLAG_NOTSET = 0, FLAG_SET = !FLAG_NOTSET} FLAG_STATUS;
typedef enum {FLAG_FAIL = 0, FLAG_PASS = !FLAG_FAIL} FLAG_PASS_FAIL;
/* bit operations */
#define REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))
#define REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))
#define REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))
#define BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))
#define BITS(start, end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))
#define GET_BITS(regval, start, end) (((regval) & BITS((start),(end))) >> (start))
/**
* @}
*/
#define U8_MAX ((u8)255)
#define S8_MAX ((s8)127)
#define S8_MIN ((s8)-128)
#define U16_MAX ((u16)65535u)
#define S16_MAX ((s16)32767)
#define S16_MIN ((s16)-32768)
#define U32_MAX ((u32)4294967295uL)
#define S32_MAX ((s32)2147483647)
#define S32_MIN ((s32)-2147483648)
/**
* @brief Exported constants and macro
*/
#define IS_CONTROL_STATUS(STATUS) ((STATUS == DISABLE) || (STATUS == ENABLE))
#define wb(addr, value) (*((u8 volatile *) (addr)) = value)
#define rb(addr) (*((u8 volatile *) (addr)))
#define whw(addr, value) (*((u16 volatile *) (addr)) = value)
#define rhw(addr) (*((u16 volatile *) (addr)))
#define ww(addr, value) (*((u32 volatile *) (addr)) = value)
#define rw(addr) (*((u32 volatile *) (addr)))
一下是完整代码
#ifdef __cplusplus
extern "C" {
#endif
/** @addtogroup Library_configuration_section
* @{
*/
/**
* @brief In the following line adjust the value of External High Speed oscillator (HSE)
used in your application
Tip: To avoid modifying this file each time you need to use different HSE, you
can define the HSE value in your toolchain compiler preprocessor.
*/
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz*/
#endif /* HSE_VALUE */
/**
* @brief In the following line adjust the External High Speed oscillator (HSE) Startup
Timeout value
*/
#if !defined (HSE_STARTUP_TIMEOUT)
#define HSE_STARTUP_TIMEOUT ((uint16_t)0x500) /*!< Time out for HSE start up */
#endif /* HSE_STARTUP_TIMEOUT */
/**
* @brief In the following line adjust the Internal High Speed oscillator (HSI) Startup
Timeout value
*/
#if !defined (HSI_STARTUP_TIMEOUT)
#define HSI_STARTUP_TIMEOUT ((uint16_t)0x5000) /*!< Time out for HSI start up */
#endif /* HSI_STARTUP_TIMEOUT */
#if !defined (HSI_VALUE)
#define HSI_VALUE ((uint32_t)HSE_VALUE) /*!< Value of the Internal High Speed oscillator in Hz.
The real value may vary depending on the variations
in voltage and temperature. */
#endif /* HSI_VALUE */
#if !defined (LSE_VALUE)
#define LSE_VALUE ((uint32_t)32768) /*!< Value of the External Low Speed oscillator in Hz */
#endif /* LSE_VALUE */
#if !defined (LSI_VALUE)
#define LSI_VALUE ((uint32_t)LSE_VALUE) /*!< Value of the Internal Low Speed oscillator in Hz
The real value may vary depending on the variations
in voltage and temperature. */
#endif /* LSI_VALUE */
/**
* @}
*/
/** @addtogroup Configuration_section_for_CMSIS
* @{
*/
/**
* @brief Interrupt Number Definition
*/
#define __CM0_REV 0 /*!< Core Revision r0p0 */
#define __MPU_PRESENT 0 /*!< Do not provide MPU */
#define __NVIC_PRIO_BITS 2 /*!< Uses 2 Bits for the Priority Levels */
#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */
/*!< Interrupt Number Definition */
typedef enum IRQn
{
/****** Cortex-M0 Processor Exceptions Numbers ******************************************************/
NMI_IRQn = -14, /*!< 2 Non Maskable Interrupt */
HardFault_IRQn = -13, /*!< 3 Cortex-M0 Hard Fault Interrupt */
SVC_IRQn = -5, /*!< 11 Cortex-M0 SV Call Interrupt */
PendSV_IRQn = -2, /*!< 14 Cortex-M0 Pend SV Interrupt */
SysTick_IRQn = -1, /*!< 15 Cortex-M0 System Tick Interrupt */
/****** SY9XX specific Interrupt Numbers *************************************/
CKRDY_IRQn = 0, /*!< Clock Ready Interrupt */
WWDG_IRQn = 1, /*!< Window WatchDog Interrupt */
RTC_LVD_IRQn = 2, /*!< RTC&LVD Interrupt */
XIP_IRQn = 3, /*!< XIP Interrupt */
EVWUP_IRQn = 4, /*!< EXTI Event Wakeup Detection Interrupt */
LPWUP_POR_IRQn = 5, /*!< WAKEUP pin and POR Interrupt */
EXTI0_1_IRQn = 6, /*!< EXTI Line 0,1 Interrupts */
EXTI2_3_IRQn = 7, /*!< EXTI Line 2,3 Interrupts */
EXTI4_TO_15_IRQn = 8, /*!< EXTI Line 4~15 Interrupts */
MIC_IRQn = 9, /*!< MIC Interrupts */
PWS0_IRQn = 10, /*!< PWS0 Interrupt */
ADC_IRQn = 10, /*!< ADC Interrupt */
PWS1_IRQn = 11, /*!< PWS1 Interrupt */
VCC33_UV_OV_IRQn = 12, /*!< VCC33_UV or OV Interrupts */
BAT_UV_IRQn = 13, /*!< BAT_UV Interrupts */
USB_UV_IRQn = 14, /*!< USB_UV Interrupts */
USB_DET_IRQn = 15, /*!< BAT_DET Interrupts */
EXT0PLUG_IRQn = 16, /*!< EXT0PLUG Interrupts */
EXT1PLUG_IRQn = 17, /*!< EXT1PLUG Interrupts */
EBFTM_IRQn = 18, /*!< EBFTM Interrupts */
DUAL_TIMER_IRQn = 19, /*!< DUAL TIMER Interrupts */
TWI0_IRQn = 20, /*!< TWI0 Interrupt */
TWI1_IRQn = 21, /*!< TWI1 Interrupt */
SPI0_IRQn = 22, /*!< SPI0 Interrupt */
SPI1_IRQn = 23, /*!< SPI1 Interrupt */
UART0_IRQn = 24, /*!< UART0 Interrupt */
UART1_IRQn = 25, /*!< UART1 Interrupt */
UART2_IRQn = 26, /*!< UART2 Interrupt */
PDMA_CH0_IRQn = 27, /*!< PDMA Channel 0 Interrupt */
PDMA_CH1_IRQn = 28, /*!< PDMA Channel 1 Interrupt */
PDMA_CH2_IRQn = 29, /*!< PDMA Channel 2 Interrupt */
PDMA_CH3_IRQn = 30, /*!< PDMA Channel 3 Interrupt */
PDMA_CH4_5_6_7_IRQn = 31 /*!< PDMA Channel 4,5,6,7 Interrupt */
} IRQn_Type;
#include "core_cm0.h"
#include <stdint.h>
/** @addtogroup Exported_macros
* @{
*/
#define UNUSED(X) (void)X
#define Assert_Param(expr) ((void)0)
#define assert_param(expr) ((void)0)
/**
* @}
*/
/** @addtogroup Exported_Types
* @{
*/
typedef signed long s32;
typedef signed short s16;
typedef signed char s8;
typedef const int32_t sc32; /*!< Read Only */
typedef const int16_t sc16; /*!< Read Only */
typedef const int8_t sc8; /*!< Read Only */
typedef __IO int32_t vs32;
typedef __IO int16_t vs16;
typedef __IO int8_t vs8;
typedef __I int32_t vsc32; /*!< Read Only */
typedef __I int16_t vsc16; /*!< Read Only */
typedef __I int8_t vsc8; /*!< Read Only */
typedef unsigned long u32;
typedef unsigned short u16;
typedef unsigned char u8;
typedef unsigned long const uc32; /*!< Read Only */
typedef unsigned short const uc16; /*!< Read Only */
typedef unsigned char const uc8; /*!< Read Only */
typedef __IO uint32_t vu32;
typedef __IO uint16_t vu16;
typedef __IO uint8_t vu8;
typedef __I uint32_t vuc32; /*!< Read Only */
typedef __I uint16_t vuc16; /*!< Read Only */
typedef __I uint8_t vuc8; /*!< Read Only */
typedef enum {DISABLE = 0, ENABLE = !DISABLE} EventStatus, ControlStatus,FunctionalState;
typedef enum {FALSE = 0, TRUE = !FALSE} bool;
typedef enum {RESET = 0, SET = !RESET} FlagStatus;
typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrStatus;
typedef enum {FLAG_NOTSET = 0, FLAG_SET = !FLAG_NOTSET} FLAG_STATUS;
typedef enum {FLAG_FAIL = 0, FLAG_PASS = !FLAG_FAIL} FLAG_PASS_FAIL;
/* bit operations */
#define REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))
#define REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))
#define REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))
#define BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))
#define BITS(start, end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))
#define GET_BITS(regval, start, end) (((regval) & BITS((start),(end))) >> (start))
/**
* @}
*/
#define U8_MAX ((u8)255)
#define S8_MAX ((s8)127)
#define S8_MIN ((s8)-128)
#define U16_MAX ((u16)65535u)
#define S16_MAX ((s16)32767)
#define S16_MIN ((s16)-32768)
#define U32_MAX ((u32)4294967295uL)
#define S32_MAX ((s32)2147483647)
#define S32_MIN ((s32)-2147483648)
/**
* @brief Exported constants and macro
*/
#define IS_CONTROL_STATUS(STATUS) ((STATUS == DISABLE) || (STATUS == ENABLE))
#define wb(addr, value) (*((u8 volatile *) (addr)) = value)
#define rb(addr) (*((u8 volatile *) (addr)))
#define whw(addr, value) (*((u16 volatile *) (addr)) = value)
#define rhw(addr) (*((u16 volatile *) (addr)))
#define ww(addr, value) (*((u32 volatile *) (addr)) = value)
#define rw(addr) (*((u32 volatile *) (addr)))
16万+

被折叠的 条评论
为什么被折叠?



