📄 stm8s_map.h
字号:
/**
******************************************************************************
* @file stm8s_map.h
* @brief This file contains all HW registers definitions and memory mapping.
* @author STMicroelectronics - MCD Application Team
* @version V1.0.1
* @date 09/22/2008
******************************************************************************
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
* <h2><center>© COPYRIGHT 2008 STMicroelectronics</center></h2>
* @image html logo.bmp
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM8S_MAP_H
#define __STM8S_MAP_H
/* Includes ------------------------------------------------------------------*/
#include "stm8s_conf.h"
/* Exported types ------------------------------------------------------------*/
/** @addtogroup MAP_FILE_Exported_Types_and_Constants
* @{
*/
/******************************************************************************/
/* IP registers structures */
/******************************************************************************/
/*----------------------------------------------------------------------------*/
/**
* @brief Analog to Digital Converter (ADC1)
*/
typedef struct ADC1_struct
{
vu8 DB0RH; /*!< ADC1 Data Buffer Register (MSB) */
vu8 DB0RL; /*!< ADC1 Data Buffer Register (LSB) */
vu8 DB1RH; /*!< ADC1 Data Buffer Register (MSB) */
vu8 DB1RL; /*!< ADC1 Data Buffer Register (LSB) */
vu8 DB2RH; /*!< ADC1 Data Buffer Register (MSB) */
vu8 DB2RL; /*!< ADC1 Data Buffer Register (LSB) */
vu8 DB3RH; /*!< ADC1 Data Buffer Register (MSB) */
vu8 DB3RL; /*!< ADC1 Data Buffer Register (LSB) */
vu8 DB4RH; /*!< ADC1 Data Buffer Register (MSB) */
vu8 DB4RL; /*!< ADC1 Data Buffer Register (LSB) */
vu8 DB5RH; /*!< ADC1 Data Buffer Register (MSB) */
vu8 DB5RL; /*!< ADC1 Data Buffer Register (LSB) */
vu8 DB6RH; /*!< ADC1 Data Buffer Register (MSB) */
vu8 DB6RL; /*!< ADC1 Data Buffer Register (LSB) */
vu8 DB7RH; /*!< ADC1 Data Buffer Register (MSB) */
vu8 DB7RL; /*!< ADC1 Data Buffer Register (LSB) */
vu8 DB8RH; /*!< ADC1 Data Buffer Register (MSB) */
vu8 DB8RL; /*!< ADC1 Data Buffer Register (LSB) */
vu8 DB9RH; /*!< ADC1 Data Buffer Register (MSB) */
vu8 DB9RL; /*!< ADC1 Data Buffer Register (LSB) */
vu8 RESERVED[12]; /*!< Reserved byte */
vu8 CSR; /*!< ADC1 control status register */
vu8 CR1; /*!< ADC1 configuration register 1 */
vu8 CR2; /*!< ADC1 configuration register 2 */
vu8 CR3; /*!< ADC1 configuration register 3 */
vu8 DRH; /*!< ADC1 Data high */
vu8 DRL; /*!< ADC1 Data low */
vu8 TDRH; /*!< ADC1 Schmitt trigger disable register high */
vu8 TDRL; /*!< ADC1 Schmitt trigger disable register low */
vu8 HTRH; /*!< ADC1 high threshold register high*/
vu8 HTRL; /*!< ADC1 high threshold register low*/
vu8 LTRH; /*!< ADC1 low threshold register high */
vu8 LTRL; /*!< ADC1 low threshold register low */
vu8 AWSRH; /*!< ADC1 watchdog status register high */
vu8 AWSRL; /*!< ADC1 watchdog status register low */
vu8 AWCRH; /*!< ADC1 watchdog control register high */
vu8 AWCRL; /*!< ADC1 watchdog control register low */
}
ADC1_TypeDef;
/** @addtogroup ADC1_Registers_Reset_Value
* @{
*/
#define ADC1_CSR_RESET_VALUE ((u8)0x00)
#define ADC1_CR1_RESET_VALUE ((u8)0x00)
#define ADC1_CR2_RESET_VALUE ((u8)0x00)
#define ADC1_CR3_RESET_VALUE ((u8)0x00)
#define ADC1_TDRL_RESET_VALUE ((u8)0x00)
#define ADC1_TDRH_RESET_VALUE ((u8)0x00)
#define ADC1_HTRL_RESET_VALUE ((u8)0xFF)
#define ADC1_HTRH_RESET_VALUE ((u8)0x03)
#define ADC1_LTRH_RESET_VALUE ((u8)0x00)
#define ADC1_LTRL_RESET_VALUE ((u8)0x00)
#define ADC1_AWCRH_RESET_VALUE ((u8)0x00)
#define ADC1_AWCRL_RESET_VALUE ((u8)0x00)
/**
* @}
*/
/** @addtogroup ADC1_Registers_Bits_Definition
* @{
*/
#define ADC1_CSR_EOC ((u8)0x80) /*!< End of Conversion mask */
#define ADC1_CSR_AWD ((u8)0x40) /*!< Analog Watch Dog Status mask */
#define ADC1_CSR_EOCIE ((u8)0x20) /*!< Interrupt Enable for EOC mask */
#define ADC1_CSR_AWDIE ((u8)0x10) /*!< Analog Watchdog interrupt enable mask */
#define ADC1_CSR_CH ((u8)0x0F) /*!< Channel selection bits mask */
#define ADC1_CR1_SPSEL ((u8)0x70) /*!< Prescaler selectiont mask */
#define ADC1_CR1_CONT ((u8)0x02) /*!< Continuous conversion mask */
#define ADC1_CR1_ADON ((u8)0x01) /*!< A/D Converter on/off mask */
#define ADC1_CR2_EXTTRIG ((u8)0x40) /*!< External trigger enable mask */
#define ADC1_CR2_EXTSEL ((u8)0x30) /*!< External event selection mask */
#define ADC1_CR2_ALIGN ((u8)0x08) /*!< Data Alignment mask */
#define ADC1_CR2_SCAN ((u8)0x02) /*!< Scan mode mask */
#define ADC1_CR3_DBUF ((u8)0x80) /*!< Data Buffer Enable mask */
#define ADC1_CR3_OVR ((u8)0x40) /*!< Overrun Status Flag mask */
/**
* @}
*/
/*----------------------------------------------------------------------------*/
/**
* @brief Analog to Digital Converter (ADC2)
*/
typedef struct ADC2_struct
{
vu8 CSR; /*!< ADC2 control status register */
vu8 CR1; /*!< ADC2 configuration register 1 */
vu8 CR2; /*!< ADC2 configuration register 2 */
vu8 RESERVED; /*!< Reserved byte */
vu8 DRH; /*!< ADC2 Data high */
vu8 DRL; /*!< ADC2 Data low */
vu8 TDRH; /*!< ADC2 Schmitt trigger disable register high */
vu8 TDRL; /*!< ADC2 Schmitt trigger disable register low */
}
ADC2_TypeDef;
/** @addtogroup ADC2_Registers_Reset_Value
* @{
*/
#define ADC2_CSR_RESET_VALUE ((u8)0x00)
#define ADC2_CR1_RESET_VALUE ((u8)0x00)
#define ADC2_CR2_RESET_VALUE ((u8)0x00)
#define ADC2_TDRL_RESET_VALUE ((u8)0x00)
#define ADC2_TDRH_RESET_VALUE ((u8)0x00)
/**
* @}
*/
/** @addtogroup ADC2_Registers_Bits_Definition
* @{
*/
#define ADC2_CSR_EOC ((u8)0x80) /*!< End of Conversion mask */
#define ADC2_CSR_EOCIE ((u8)0x20) /*!< Interrupt Enable for EOC mask */
#define ADC2_CSR_CH ((u8)0x0F) /*!< Channel selection bits mask */
#define ADC2_CR1_SPSEL ((u8)0x70) /*!< Prescaler selectiont mask */
#define ADC2_CR1_CONT ((u8)0x02) /*!< Continuous conversion mask */
#define ADC2_CR1_ADON ((u8)0x01) /*!< A/D Converter on/off mask */
#define ADC2_CR2_EXTTRIG ((u8)0x40) /*!< External trigger enable mask */
#define ADC2_CR2_EXTSEL ((u8)0x30) /*!< External event selection mask */
#define ADC2_CR2_ALIGN ((u8)0x08) /*!< Data Alignment mask */
/**
* @}
*/
/*----------------------------------------------------------------------------*/
/**
* @brief Auto Wake Up (AWU) peripheral registers.
*/
typedef struct AWU_struct
{
vu8 CSR; /*!< AWU Control status register */
vu8 APR; /*!< AWU Asynchronous prescalar buffer */
vu8 TBR; /*!< AWU Time base selection register */
}
AWU_TypeDef;
/** @addtogroup AWU_Registers_Reset_Value
* @{
*/
#define AWU_CSR_RESET_VALUE ((u8)0x00)
#define AWU_APR_RESET_VALUE ((u8)0x3F)
#define AWU_TBR_RESET_VALUE ((u8)0x00)
/**
* @}
*/
/** @addtogroup AWU_Registers_Bits_Definition
* @{
*/
#define AWU_CSR_AWUF ((u8)0x20) /*!< Interrupt flag mask */
#define AWU_CSR_AWUEN ((u8)0x10) /*!< Auto Wake-up enable mask */
#define AWU_CSR_MR ((u8)0x02) /*!< Master Reset mask */
#define AWU_CSR_MSR ((u8)0x01) /*!< Measurement enable mask */
#define AWU_APR_APR ((u8)0x3F) /*!< Asynchronous Prescaler divider mask */
#define AWU_TBR_AWUTB ((u8)0x0F) /*!< Timebase selection mask */
/**
* @}
*/
/*----------------------------------------------------------------------------*/
/**
* @brief Beeper (BEEP) peripheral registers.
*/
typedef struct BEEP_struct
{
vu8 CSR; /*!< BEEP Control status register */
}
BEEP_TypeDef;
/** @addtogroup BEEP_Registers_Reset_Value
* @{
*/
#define BEEP_CSR_RESET_VALUE ((u8)0x1F)
/**
* @}
*/
/** @addtogroup BEEP_Registers_Bits_Definition
* @{
*/
#define BEEP_CSR_BEEPSEL ((u8)0xC0) /*!< Beeper frequency selection mask */
#define BEEP_CSR_BEEPEN ((u8)0x20) /*!< Beeper enable mask */
#define BEEP_CSR_BEEPDIV ((u8)0x1F) /*!< Beeper Divider prescalar mask */
/**
* @}
*/
/*----------------------------------------------------------------------------*/
/**
* @brief Clock Controller (CLK)
*/
typedef struct CLK_struct
{
vu8 ICKR; /*!< Internal Clocks Control Register */
vu8 ECKR; /*!< External Clocks Control Register */
vu8 RESERVED; /*!< Reserved byte */
vu8 CMSR; /*!< Clock Master Status Register */
vu8 SWR; /*!< Clock Master Switch Register */
vu8 SWCR; /*!< Switch Control Register */
vu8 CKDIVR; /*!< Clock Divider Register */
vu8 PCKENR1; /*!< Peripheral Clock Gating Register 1 */
vu8 CSSR; /*!< Clock Security SyTDRH Register */
vu8 CCOR; /*!< Configurable Clock Output Register */
vu8 PCKENR2; /*!< Peripheral Clock Gating Register 2 */
vu8 CANCCR; /*!< CAN external clock control Register */
vu8 HSITRIMR; /*!< HSI Calibration Trimmer Register */
vu8 SWIMCCR; /*!< SWIM clock control register */
}
CLK_TypeDef;
/** @addtogroup CLK_Registers_Reset_Value
* @{
*/
#define CLK_ICKR_RESET_VALUE ((u8)0x01)
#define CLK_ECKR_RESET_VALUE ((u8)0x00)
#define CLK_CMSR_RESET_VALUE ((u8)0xE1)
#define CLK_SWR_RESET_VALUE ((u8)0xE1)
#define CLK_SWCR_RESET_VALUE ((u8)0x00)
#define CLK_CKDIVR_RESET_VALUE ((u8)0x18)
#define CLK_PCKENR1_RESET_VALUE ((u8)0xFF)
#define CLK_PCKENR2_RESET_VALUE ((u8)0xFF)
#define CLK_CSSR_RESET_VALUE ((u8)0x00)
#define CLK_CCOR_RESET_VALUE ((u8)0x00)
#define CLK_CANCCR_RESET_VALUE ((u8)0x00)
#define CLK_HSITRIMR_RESET_VALUE ((u8)0x00)
#define CLK_SWIMCCR_RESET_VALUE ((u8)0x00)
/**
* @}
*/
/** @addtogroup CLK_Registers_Bits_Definition
* @{
*/
#define CLK_ICKR_SWUAH ((u8)0x20) /*!< Slow Wake-up from Active Halt/Halt modes */
#define CLK_ICKR_LSIRDY ((u8)0x10) /*!< Low speed internal oscillator ready */
#define CLK_ICKR_LSIEN ((u8)0x08) /*!< Low speed internal RC oscillator enable */
#define CLK_ICKR_FHWU ((u8)0x04) /*!< Fast Wake-up from Active Halt/Halt mode */
#define CLK_ICKR_HSIRDY ((u8)0x02) /*!< High speed internal RC oscillator ready */
#define CLK_ICKR_HSIEN ((u8)0x01) /*!< High speed internal RC oscillator enable */
#define CLK_ECKR_HSERDY ((u8)0x02) /*!< High speed external crystal oscillator ready */
#define CLK_ECKR_HSEEN ((u8)0x01) /*!< High speed external crystal oscillator enable */
#define CLK_CMSR_CKM ((u8)0xFF) /*!< Clock master status bits */
#define CLK_SWR_SWI ((u8)0xFF) /*!< Clock master selection bits */
#define CLK_SWCR_SWIF ((u8)0x08) /*!< Clock switch interrupt flag */
#define CLK_SWCR_SWIEN ((u8)0x04) /*!< Clock switch interrupt enable */
#define CLK_SWCR_SWEN ((u8)0x02) /*!< Switch start/stop */
#define CLK_SWCR_SWBSY ((u8)0x01) /*!< Switch busy */
#define CLK_CKDIVR_HSIDIV ((u8)0x18) /*!< High speed internal clock prescaler */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -