mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-09 17:08:34 +02:00
3179 lines
178 KiB
ObjectPascal
3179 lines
178 KiB
ObjectPascal
unit stm32f10x_cl;
|
||
interface
|
||
{$goto on}
|
||
{$PACKRECORDS 2}
|
||
//*
|
||
//******************************************************************************
|
||
//* @file stm32f0xx.h
|
||
//* @author MCD Application Team
|
||
//* @version V1.0.1
|
||
//* @date 20-April-2012
|
||
// CMSIS Cortex-M0 Device Peripheral Access Layer Header File.
|
||
//* This file contains all the peripheral register's definitions, bits
|
||
//* definitions and memory mapping for STM32F0xx devices.
|
||
//*
|
||
//* The file is the unique include file that the application programmer
|
||
//* is using in the C source code, usually in main.c. This file contains:
|
||
//* - Configuration section that allows to select:
|
||
//* - The device used in the target application
|
||
//* - To use or not the peripheral’s drivers in application code(i.e.
|
||
//* code will be based on direct access to peripheral’s registers
|
||
//* rather than drivers API), this option is controlled by
|
||
//* "#define USE_STDPERIPH_DRIVER"
|
||
//* - To change few application-specific parameters such as the HSE
|
||
//* crystal frequency
|
||
//* - Data structures and the address mapping for all peripherals
|
||
//* - Peripheral's registers declarations and bits definition
|
||
//* - Macros to access peripheral’s registers hardware
|
||
//*
|
||
//******************************************************************************
|
||
//* @attention
|
||
//*
|
||
//* <h2><center>© COPYRIGHT 2012 STMicroelectronics</center></h2>
|
||
//*
|
||
//* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
|
||
//* You may not use this file except in compliance with the License.
|
||
//* You may obtain a copy of the License at:
|
||
//*
|
||
//* http://www.st.com/software_license_agreement_liberty_v2
|
||
//*
|
||
//* Unless required by applicable law or agreed to in writing, software
|
||
//* distributed under the License is distributed on an "AS IS" BASIS,
|
||
//* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
//* See the License for the specific language governing permissions and
|
||
//* limitations under the License.
|
||
//*
|
||
//******************************************************************************
|
||
|
||
//Uncomment the line below according to the target STM32F0 device used in your
|
||
//application
|
||
|
||
//Tip: To avoid modifying this file each time you need to switch between these
|
||
//devices, you can define the device in your toolchain compiler preprocessor.
|
||
|
||
//STM32F0xx devices are:
|
||
//- STM32F050xx microcontrollers where the Flash memory density can go up to 32 Kbytes.
|
||
//- STM32F051xx microcontrollers where the Flash memory density can go up to 64 Kbytes.
|
||
|
||
//Comment the line below if you will not use the peripherals drivers.
|
||
//In this case, these drivers will not be included and the application code will
|
||
//be based on direct access to peripherals registers
|
||
|
||
//#define USE_STDPERIPH_DRIVER
|
||
|
||
//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.
|
||
|
||
const
|
||
HSE_VALUE = longword(8000000); //Value of the External oscillator in Hz
|
||
|
||
//In the following line adjust the External High Speed oscillator (HSE) Startup
|
||
//Timeout value
|
||
|
||
HSE_STARTUP_TIMEOUT = longword($0500); //Time out for HSE start up
|
||
|
||
//In the following line adjust the Internal High Speed oscillator (HSI) Startup
|
||
//Timeout value
|
||
|
||
HSI_STARTUP_TIMEOUT = longword($0500); //Time out for HSI start up
|
||
|
||
HSI_VALUE = longword(8000000); //Value of the Internal High Speed oscillator in Hz.
|
||
//The real value may vary depending on the variations
|
||
//in voltage and temperature.
|
||
|
||
HSI14_VALUE = longword(14000000); //Value of the Internal High Speed oscillator for ADC in Hz.
|
||
//The real value may vary depending on the variations
|
||
//in voltage and temperature.
|
||
|
||
LSI_VALUE = longword(40000); //Value of the Internal Low Speed oscillator in Hz
|
||
//The real value may vary depending on the variations
|
||
//in voltage and temperature.
|
||
|
||
LSE_VALUE = longword(32768); //Value of the External Low Speed oscillator in Hz
|
||
|
||
//STM32F0xx Standard Peripheral Library version number V1.0.1
|
||
|
||
__STM32F0XX_STDPERIPH_VERSION_MAIN = $01; //[31:24] main version
|
||
__STM32F0XX_STDPERIPH_VERSION_SUB1 = $00; //[23:16] sub1 version
|
||
__STM32F0XX_STDPERIPH_VERSION_SUB2 = $01; //[15:8] sub2 version
|
||
__STM32F0XX_STDPERIPH_VERSION_RC = $00; //[7:0] release candidate
|
||
|
||
//STM32F0xx Interrupt Number Definition, according to the selected device
|
||
//* in @ref Library_configuration_section
|
||
|
||
__CM0_REV = 0; //Core Revision r0p0
|
||
__MPU_PRESENT = 0; //STM32F0xx do not provide MPU
|
||
__NVIC_PRIO_BITS = 2; //STM32F0xx uses 2 Bits for the Priority Levels
|
||
__Vendor_SysTickConfig = 0; //Set to 1 if different SysTick Config is used
|
||
|
||
//Interrupt Number Definition
|
||
type
|
||
TIRQn_Enum = (
|
||
|
||
//***** Cortex-M0 Processor Exceptions Numbers *****************************************************
|
||
NonMaskableInt_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
|
||
|
||
//***** STM32F-0 specific Interrupt Numbers ********************************************************
|
||
WWDG_IRQn = 0, //Window WatchDog Interrupt
|
||
PVD_IRQn = 1, //PVD through EXTI Line detect Interrupt
|
||
RTC_IRQn = 2, //RTC through EXTI Line Interrupt
|
||
FLASH_IRQn = 3, //FLASH Interrupt
|
||
RCC_IRQn = 4, //RCC Interrupt
|
||
EXTI0_1_IRQn = 5, //EXTI Line 0 and 1 Interrupts
|
||
EXTI2_3_IRQn = 6, //EXTI Line 2 and 3 Interrupts
|
||
EXTI4_15_IRQn = 7, //EXTI Line 4 to 15 Interrupts
|
||
TS_IRQn = 8, //TS Interrupt
|
||
DMA1_Channel1_IRQn = 9, //DMA1 Channel 1 Interrupt
|
||
DMA1_Channel2_3_IRQn = 10, //DMA1 Channel 2 and Channel 3 Interrupts
|
||
DMA1_Channel4_5_IRQn = 11, //DMA1 Channel 4 and Channel 5 Interrupts
|
||
ADC1_COMP_IRQn = 12, //ADC1, COMP1 and COMP2 Interrupts
|
||
TIM1_BRK_UP_TRG_COM_IRQn = 13, //TIM1 Break, Update, Trigger and Commutation Interrupts
|
||
TIM1_CC_IRQn = 14, //TIM1 Capture Compare Interrupt
|
||
TIM2_IRQn = 15, //TIM2 Interrupt
|
||
TIM3_IRQn = 16, //TIM3 Interrupt
|
||
TIM6_DAC_IRQn = 17, //TIM6 and DAC Interrupts
|
||
TIM14_IRQn = 19, //TIM14 Interrupt
|
||
TIM15_IRQn = 20, //TIM15 Interrupt
|
||
TIM16_IRQn = 21, //TIM16 Interrupt
|
||
TIM17_IRQn = 22, //TIM17 Interrupt
|
||
I2C1_IRQn = 23, //I2C1 Interrupt
|
||
I2C2_IRQn = 24, //I2C2 Interrupt
|
||
SPI1_IRQn = 25, //SPI1 Interrupt
|
||
SPI2_IRQn = 26, //SPI2 Interrupt
|
||
USART1_IRQn = 27, //USART1 Interrupt
|
||
USART2_IRQn = 28, //USART2 Interrupt
|
||
CEC_IRQn = 30 //CEC Interrupt
|
||
);
|
||
|
||
//Analog to Digital Converter
|
||
|
||
TADC_Registers = record
|
||
|
||
ISR : longword; //ADC Interrupt and Status register, Address offset:0x00
|
||
IER : longword; //ADC Interrupt Enable register, Address offset:0x04
|
||
CR : longword; //ADC Control register, Address offset:0x08
|
||
CFGR1 : longword; //ADC Configuration register 1, Address offset:0x0C
|
||
CFGR2 : longword; //ADC Configuration register 2, Address offset:0x10
|
||
SMPR : longword; //ADC Sampling time register, Address offset:0x14
|
||
RESERVED1 : longword; //Reserved, 0x18
|
||
RESERVED2 : longword; //Reserved, 0x1C
|
||
TR : longword; //ADC watchdog threshold register, Address offset:0x20
|
||
RESERVED3 : longword; //Reserved, 0x24
|
||
CHSELR : longword; //ADC channel selection register, Address offset:0x28
|
||
RESERVED4 : array[0..4] of longword; //Reserved, 0x2C
|
||
DR : longword; //ADC data register, Address offset:0x40
|
||
end;
|
||
|
||
TADC_Common_Registers = record
|
||
|
||
CCR : longword;
|
||
end;
|
||
|
||
//HDMI-CEC
|
||
|
||
TCEC_Registers = record
|
||
|
||
CR : longword; //CEC control register, Address offset:0x00
|
||
CFGR : longword; //CEC configuration register, Address offset:0x04
|
||
TXDR : longword; //CEC Tx data register , Address offset:0x08
|
||
RXDR : longword; //CEC Rx Data Register, Address offset:0x0C
|
||
ISR : longword; //CEC Interrupt and Status Register, Address offset:0x10
|
||
IER : longword; //CEC interrupt enable register, Address offset:0x14
|
||
end;
|
||
|
||
//Comparator
|
||
|
||
TCOMP_Registers = record
|
||
|
||
CSR : longword; //COMP comparator control and status register, Address offset: 0x1C
|
||
end;
|
||
|
||
//CRC calculation unit
|
||
|
||
TCRC_Registers = record
|
||
|
||
DR : longword; //CRC Data register, Address offset: 0x00
|
||
IDR : byte; //CRC Independent data register, Address offset: 0x04
|
||
RESERVED0 : byte; //Reserved, 0x05
|
||
RESERVED1 : word; //Reserved, 0x06
|
||
CR : longword; //CRC Control register, Address offset: 0x08
|
||
RESERVED2 : longword; //Reserved, 0x0C
|
||
INIT : longword; //Initial CRC value register, Address offset: 0x10
|
||
end;
|
||
|
||
//Digital to Analog Converter
|
||
|
||
TDAC_Registers = record
|
||
|
||
CR : longword; //DAC control register, Address offset: 0x00
|
||
SWTRIGR : longword; //DAC software trigger register, Address offset: 0x04
|
||
DHR12R1 : longword; //DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08
|
||
DHR12L1 : longword; //DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C
|
||
DHR8R1 : longword; //DAC channel1 8-bit right aligned data holding register, Address offset: 0x10
|
||
RESERVED : array[0..5] of longword; //Reserved, 0x14
|
||
DOR1 : longword; //DAC channel1 data output register, Address offset: 0x2C
|
||
RESERVED1 : longword; //Reserved, 0x30
|
||
SR : longword; //DAC status register, Address offset: 0x34
|
||
end;
|
||
|
||
//Debug MCU
|
||
|
||
TDBGMCU_Registers = record
|
||
|
||
IDCODE : longword; //MCU device ID code, Address offset: 0x00
|
||
CR : longword; //Debug MCU configuration register, Address offset: 0x04
|
||
APB1FZ : longword; //Debug MCU APB1 freeze register, Address offset: 0x08
|
||
APB2FZ : longword; //Debug MCU APB2 freeze register, Address offset: 0x0C
|
||
end;
|
||
|
||
//DMA Controller
|
||
|
||
TDMA_Channel_Registers = record
|
||
|
||
CCR : longword; //DMA channel x configuration register
|
||
CNDTR : longword; //DMA channel x number of data register
|
||
CPAR : longword; //DMA channel x peripheral address register
|
||
CMAR : longword; //DMA channel x memory address register
|
||
end;
|
||
|
||
TDMA_Registers = record
|
||
|
||
ISR : longword; //DMA interrupt status register, Address offset: 0x00
|
||
IFCR : longword; //DMA interrupt flag clear register, Address offset: 0x04
|
||
end;
|
||
|
||
//External Interrupt/Event Controller
|
||
|
||
TEXTI_Registers = record
|
||
|
||
IMR : longword; //XTI Interrupt mask register, Address offset: 0x00
|
||
EMR : longword; //XTI Event mask register, Address offset: 0x04
|
||
RTSR : longword; //XTI Rising trigger selection register , Address offset: 0x08
|
||
FTSR : longword; //XTI Falling trigger selection register, Address offset: 0x0C
|
||
SWIER : longword; //XTI Software interrupt event register, Address offset: 0x10
|
||
PR : longword; //XTI Pending register, Address offset: 0x14
|
||
end;
|
||
|
||
//FLASH Registers
|
||
|
||
TFLASH_Registers = record
|
||
|
||
ACR : longword; //LASH access control register, Address offset: 0x00
|
||
KEYR : longword; //LASH key register, Address offset: 0x04
|
||
OPTKEYR : longword; //LASH OPT key register, Address offset: 0x08
|
||
SR : longword; //LASH status register, Address offset: 0x0C
|
||
CR : longword; //LASH control register, Address offset: 0x10
|
||
AR : longword; //LASH address register, Address offset: 0x14
|
||
RESERVED : longword; //Reserved, 0x18
|
||
OBR : longword; //LASH option bytes register, Address offset: 0x1C
|
||
WRPR : longword; //LASH option bytes register, Address offset: 0x20
|
||
end;
|
||
|
||
//Option Bytes Registers
|
||
|
||
TOB_Registers = record
|
||
|
||
RDP : word; //LASH option byte Read protection, Address offset: 0x00
|
||
USER : word; //LASH option byte user options, Address offset: 0x02
|
||
RESERVED0 : word; //Reserved, 0x04
|
||
RESERVED1 : word; //Reserved, 0x06
|
||
WRP0 : word; //LASH option byte write protection 0, Address offset: 0x08
|
||
WRP1 : word; //LASH option byte write protection 1, Address offset: 0x0C
|
||
end;
|
||
|
||
//General Purpose IO
|
||
|
||
TGPIO_Registers = record
|
||
|
||
MODER : longword; //GPIO port mode register, Address offset: 0x00
|
||
OTYPER : word; //GPIO port output type register, Address offset: 0x04
|
||
RESERVED0 : word; //Reserved, 0x06
|
||
OSPEEDR : longword; //GPIO port output speed register, Address offset: 0x08
|
||
PUPDR : longword; //GPIO port pull-up/pull-down register, Address offset: 0x0C
|
||
IDR : word; //GPIO port input data register, Address offset: 0x10
|
||
RESERVED1 : word; //Reserved, 0x12
|
||
ODR : word; //GPIO port output data register, Address offset: 0x14
|
||
RESERVED2 : word; //Reserved, 0x16
|
||
BSRR : longword; //GPIO port bit set/reset registerBSRR, Address offset: 0x18
|
||
LCKR : longword; //GPIO port configuration lock register, Address offset: 0x1C
|
||
AFR : array[0..1] of longword; //GPIO alternate function low register, Address offset: 0x20-0x24
|
||
BRR : word; //GPIO bit reset register, Address offset: 0x28
|
||
RESERVED3 : word; //Reserved, 0x2A
|
||
end;
|
||
|
||
//SysTem Configuration
|
||
|
||
TSYSCFG_Registers = record
|
||
|
||
CFGR1 : longword; //SYSCFG configuration register 1, Address offset: 0x00
|
||
RESERVED : longword; //Reserved, 0x04
|
||
EXTICR : array[0..3] of longword; //SYSCFG external interrupt configuration register, Address offset: 0x14-0x08
|
||
CFGR2 : longword; //SYSCFG configuration register 2, Address offset: 0x18
|
||
end;
|
||
|
||
//Inter-integrated Circuit Interface
|
||
|
||
TI2C_Registers = record
|
||
|
||
CR1 : longword; //I2C Control register 1, Address offset: 0x00
|
||
CR2 : longword; //I2C Control register 2, Address offset: 0x04
|
||
OAR1 : longword; //I2C Own address 1 register, Address offset: 0x08
|
||
OAR2 : longword; //I2C Own address 2 register, Address offset: 0x0C
|
||
TIMINGR : longword; //I2C Timing register, Address offset: 0x10
|
||
TIMEOUTR : longword; //I2C Timeout register, Address offset: 0x14
|
||
ISR : longword; //I2C Interrupt and status register, Address offset: 0x18
|
||
ICR : longword; //I2C Interrupt clear register, Address offset: 0x1C
|
||
PECR : longword; //I2C PEC register, Address offset: 0x20
|
||
RXDR : longword; //I2C Receive data register, Address offset: 0x24
|
||
TXDR : longword; //I2C Transmit data register, Address offset: 0x28
|
||
end;
|
||
|
||
//Independent WATCHDOG
|
||
|
||
TIWDG_Registers = record
|
||
|
||
KR : longword; //IWDG Key register, Address offset: 0x00
|
||
PR : longword; //IWDG Prescaler register, Address offset: 0x04
|
||
RLR : longword; //IWDG Reload register, Address offset: 0x08
|
||
SR : longword; //IWDG Status register, Address offset: 0x0C
|
||
WINR : longword; //IWDG Window register, Address offset: 0x10
|
||
end;
|
||
|
||
//Power Control
|
||
|
||
TPWR_Registers = record
|
||
|
||
CR : longword; //PWR power control register, Address offset: 0x00
|
||
CSR : longword; //PWR power control/status register, Address offset: 0x04
|
||
end;
|
||
|
||
//Reset and Clock Control
|
||
|
||
TRCC_Registers = record
|
||
|
||
CR : longword; //RCC clock control register, Address offset: 0x00
|
||
CFGR : longword; //RCC clock configuration register, Address offset: 0x04
|
||
CIR : longword; //RCC clock interrupt register, Address offset: 0x08
|
||
APB2RSTR : longword; //RCC APB2 peripheral reset register, Address offset: 0x0C
|
||
APB1RSTR : longword; //RCC APB1 peripheral reset register, Address offset: 0x10
|
||
AHBENR : longword; //RCC AHB peripheral clock register, Address offset: 0x14
|
||
APB2ENR : longword; //RCC APB2 peripheral clock enable register, Address offset: 0x18
|
||
APB1ENR : longword; //RCC APB1 peripheral clock enable register, Address offset: 0x1C
|
||
BDCR : longword; //RCC Backup domain control register, Address offset: 0x20
|
||
CSR : longword; //RCC clock control & status register, Address offset: 0x24
|
||
AHBRSTR : longword; //RCC AHB peripheral reset register, Address offset: 0x28
|
||
CFGR2 : longword; //RCC clock configuration register 2, Address offset: 0x2C
|
||
CFGR3 : longword; //RCC clock configuration register 3, Address offset: 0x30
|
||
CR2 : longword; //RCC clock control register 2, Address offset: 0x34
|
||
end;
|
||
|
||
//Real-Time Clock
|
||
|
||
TRTC_Registers = record
|
||
|
||
TR : longword; //RTC time register, Address offset: 0x00
|
||
DR : longword; //RTC date register, Address offset: 0x04
|
||
CR : longword; //RTC control register, Address offset: 0x08
|
||
ISR : longword; //RTC initialization and status register, Address offset: 0x0C
|
||
PRER : longword; //RTC prescaler register, Address offset: 0x10
|
||
RESERVED0 : longword; //Reserved, Address offset: 0x14
|
||
RESERVED1 : longword; //Reserved, Address offset: 0x18
|
||
ALRMAR : longword; //RTC alarm A register, Address offset: 0x1C
|
||
RESERVED2 : longword; //Reserved, Address offset: 0x20
|
||
WPR : longword; //RTC write protection register, Address offset: 0x24
|
||
SSR : longword; //RTC sub second register, Address offset: 0x28
|
||
SHIFTR : longword; //RTC shift control register, Address offset: 0x2C
|
||
TSTR : longword; //RTC time stamp time register, Address offset: 0x30
|
||
TSDR : longword; //RTC time stamp date register, Address offset: 0x34
|
||
TSSSR : longword; //RTC time-stamp sub second register, Address offset: 0x38
|
||
CAL : longword; //RTC calibration register, Address offset: 0x3C
|
||
TAFCR : longword; //RTC tamper and alternate function configuration register, Address offset: 0x40
|
||
ALRMASSR : longword; //RTC alarm A sub second register, Address offset: 0x44
|
||
RESERVED3 : longword; //Reserved, Address offset: 0x48
|
||
RESERVED4 : longword; //Reserved, Address offset: 0x4C
|
||
BKP0R : longword; //RTC backup register 0, Address offset: 0x50
|
||
BKP1R : longword; //RTC backup register 1, Address offset: 0x54
|
||
BKP2R : longword; //RTC backup register 2, Address offset: 0x58
|
||
BKP3R : longword; //RTC backup register 3, Address offset: 0x5C
|
||
BKP4R : longword; //RTC backup register 4, Address offset: 0x60
|
||
end;
|
||
|
||
//Serial Peripheral Interface
|
||
|
||
TSPI_Registers = record
|
||
|
||
CR1 : word; //SPI Control register 1 (not used in I2S mode), Address offset: 0x00
|
||
RESERVED0 : word; //Reserved, 0x02
|
||
CR2 : word; //SPI Control register 2, Address offset: 0x04
|
||
RESERVED1 : word; //Reserved, 0x06
|
||
SR : word; //SPI Status register, Address offset: 0x08
|
||
RESERVED2 : word; //Reserved, 0x0A
|
||
DR : word; //SPI data register, Address offset: 0x0C
|
||
RESERVED3 : word; //Reserved, 0x0E
|
||
CRCPR : word; //SPI CRC polynomial register (not used in I2S mode), Address offset: 0x10
|
||
RESERVED4 : word; //Reserved, 0x12
|
||
RXCRCR : word; //SPI Rx CRC register (not used in I2S mode), Address offset: 0x14
|
||
RESERVED5 : word; //Reserved, 0x16
|
||
TXCRCR : word; //SPI Tx CRC register (not used in I2S mode), Address offset: 0x18
|
||
RESERVED6 : word; //Reserved, 0x1A
|
||
I2SCFGR : word; //SPI_I2S configuration register, Address offset: 0x1C
|
||
RESERVED7 : word; //Reserved, 0x1E
|
||
I2SPR : word; //SPI_I2S prescaler register, Address offset: 0x20
|
||
RESERVED8 : word; //Reserved, 0x22
|
||
end;
|
||
|
||
//TIM
|
||
|
||
TTIM_Registers = record
|
||
|
||
CR1 : word; //TIM control register 1, Address offset: 0x00
|
||
RESERVED0 : word; //Reserved, 0x02
|
||
CR2 : word; //TIM control register 2, Address offset: 0x04
|
||
RESERVED1 : word; //Reserved, 0x06
|
||
SMCR : word; //TIM slave Mode Control register, Address offset: 0x08
|
||
RESERVED2 : word; //Reserved, 0x0A
|
||
DIER : word; //TIM DMA/interrupt enable register, Address offset: 0x0C
|
||
RESERVED3 : word; //Reserved, 0x0E
|
||
SR : word; //TIM status register, Address offset: 0x10
|
||
RESERVED4 : word; //Reserved, 0x12
|
||
EGR : word; //TIM event generation register, Address offset: 0x14
|
||
RESERVED5 : word; //Reserved, 0x16
|
||
CCMR1 : word; //TIM capture/compare mode register 1, Address offset: 0x18
|
||
RESERVED6 : word; //Reserved, 0x1A
|
||
CCMR2 : word; //TIM capture/compare mode register 2, Address offset: 0x1C
|
||
RESERVED7 : word; //Reserved, 0x1E
|
||
CCER : word; //TIM capture/compare enable register, Address offset: 0x20
|
||
RESERVED8 : word; //Reserved, 0x22
|
||
CNT : longword; //TIM counter register, Address offset: 0x24
|
||
PSC : word; //TIM prescaler register, Address offset: 0x28
|
||
RESERVED10 : word; //Reserved, 0x2A
|
||
ARR : longword; //TIM auto-reload register, Address offset: 0x2C
|
||
RCR : word; //TIM repetition counter register, Address offset: 0x30
|
||
RESERVED12 : word; //Reserved, 0x32
|
||
CCR1 : longword; //TIM capture/compare register 1, Address offset: 0x34
|
||
CCR2 : longword; //TIM capture/compare register 2, Address offset: 0x38
|
||
CCR3 : longword; //TIM capture/compare register 3, Address offset: 0x3C
|
||
CCR4 : longword; //TIM capture/compare register 4, Address offset: 0x40
|
||
BDTR : word; //TIM break and dead-time register, Address offset: 0x44
|
||
RESERVED17 : word; //Reserved, 0x26
|
||
DCR : word; //TIM DMA control register, Address offset: 0x48
|
||
RESERVED18 : word; //Reserved, 0x4A
|
||
DMAR : word; //TIM DMA address for full transfer register, Address offset: 0x4C
|
||
RESERVED19 : word; //Reserved, 0x4E
|
||
_OR : word; //TIM option register, Address offset: 0x50
|
||
RESERVED20 : word; //Reserved, 0x52
|
||
end;
|
||
|
||
//Touch Sensing Controller (TSC)
|
||
|
||
TTSC_Registers = record
|
||
|
||
CR : longword; //TSC control register, Address offset: 0x00
|
||
IER : longword; //TSC interrupt enable register, Address offset: 0x04
|
||
ICR : longword; //TSC interrupt clear register, Address offset: 0x08
|
||
ISR : longword; //TSC interrupt status register, Address offset: 0x0C
|
||
IOHCR : longword; //TSC I/O hysteresis control register, Address offset: 0x10
|
||
RESERVED1 : longword; //Reserved, Address offset: 0x14
|
||
IOASCR : longword; //TSC I/O analog switch control register, Address offset: 0x18
|
||
RESERVED2 : longword; //Reserved, Address offset: 0x1C
|
||
IOSCR : longword; //TSC I/O sampling control register, Address offset: 0x20
|
||
RESERVED3 : longword; //Reserved, Address offset: 0x24
|
||
IOCCR : longword; //TSC I/O channel control register, Address offset: 0x28
|
||
RESERVED4 : longword; //Reserved, Address offset: 0x2C
|
||
IOGCSR : longword; //TSC I/O group control status register, Address offset: 0x30
|
||
IOGXCR : array[0..5] of longword; //TSC I/O group x counter register, Address offset: 0x34-48
|
||
end;
|
||
|
||
//Universal Synchronous Asynchronous Receiver Transmitter
|
||
|
||
TUSART_Registers = record
|
||
|
||
CR1 : longword; //USART Control register 1, Address offset: 0x00
|
||
CR2 : longword; //USART Control register 2, Address offset: 0x04
|
||
CR3 : longword; //USART Control register 3, Address offset: 0x08
|
||
BRR : word; //USART Baud rate register, Address offset: 0x0C
|
||
RESERVED1 : word; //Reserved, 0x0E
|
||
GTPR : word; //USART Guard time and prescaler register, Address offset: 0x10
|
||
RESERVED2 : word; //Reserved, 0x12
|
||
RTOR : longword; //USART Receiver Time Out register, Address offset: 0x14
|
||
RQR : word; //USART Request register, Address offset: 0x18
|
||
RESERVED3 : word; //Reserved, 0x1A
|
||
ISR : longword; //USART Interrupt and status register, Address offset: 0x1C
|
||
ICR : longword; //USART Interrupt flag Clear register, Address offset: 0x20
|
||
RDR : word; //USART Receive Data register, Address offset: 0x24
|
||
RESERVED4 : word; //Reserved, 0x26
|
||
TDR : word; //USART Transmit Data register, Address offset: 0x28
|
||
RESERVED5 : word; //Reserved, 0x2A
|
||
end;
|
||
|
||
//Window WATCHDOG
|
||
|
||
TWWDG_Registers = record
|
||
|
||
CR : longword; //WWDG Control register, Address offset: 0x00
|
||
CFR : longword; //WWDG Configuration register, Address offset: 0x04
|
||
SR : longword; //WWDG Status register, Address offset: 0x08
|
||
end;
|
||
|
||
const
|
||
FLASH_BASE = longword($08000000); //FLASH base address in the alias region
|
||
SRAM_BASE = longword($20000000); //SRAM base address in the alias region
|
||
PERIPH_BASE = longword($40000000); //Peripheral base address in the alias region
|
||
|
||
//Peripheral memory map
|
||
APBPERIPH_BASE = PERIPH_BASE;
|
||
AHBPERIPH_BASE = (PERIPH_BASE + $00020000);
|
||
AHB2PERIPH_BASE = (PERIPH_BASE + $08000000);
|
||
|
||
TIM2_BASE = (APBPERIPH_BASE + $00000000);
|
||
TIM3_BASE = (APBPERIPH_BASE + $00000400);
|
||
TIM6_BASE = (APBPERIPH_BASE + $00001000);
|
||
TIM14_BASE = (APBPERIPH_BASE + $00002000);
|
||
RTC_BASE = (APBPERIPH_BASE + $00002800);
|
||
WWDG_BASE = (APBPERIPH_BASE + $00002C00);
|
||
IWDG_BASE = (APBPERIPH_BASE + $00003000);
|
||
SPI2_BASE = (APBPERIPH_BASE + $00003800);
|
||
USART2_BASE = (APBPERIPH_BASE + $00004400);
|
||
I2C1_BASE = (APBPERIPH_BASE + $00005400);
|
||
I2C2_BASE = (APBPERIPH_BASE + $00005800);
|
||
PWR_BASE = (APBPERIPH_BASE + $00007000);
|
||
DAC_BASE = (APBPERIPH_BASE + $00007400);
|
||
CEC_BASE = (APBPERIPH_BASE + $00007800);
|
||
|
||
SYSCFG_BASE = (APBPERIPH_BASE + $00010000);
|
||
COMP_BASE = (APBPERIPH_BASE + $0001001C);
|
||
EXTI_BASE = (APBPERIPH_BASE + $00010400);
|
||
ADC1_BASE = (APBPERIPH_BASE + $00012400);
|
||
ADC_BASE = (APBPERIPH_BASE + $00012708);
|
||
TIM1_BASE = (APBPERIPH_BASE + $00012C00);
|
||
SPI1_BASE = (APBPERIPH_BASE + $00013000);
|
||
USART1_BASE = (APBPERIPH_BASE + $00013800);
|
||
TIM15_BASE = (APBPERIPH_BASE + $00014000);
|
||
TIM16_BASE = (APBPERIPH_BASE + $00014400);
|
||
TIM17_BASE = (APBPERIPH_BASE + $00014800);
|
||
DBGMCU_BASE = (APBPERIPH_BASE + $00015800);
|
||
|
||
DMA1_BASE = (AHBPERIPH_BASE + $00000000);
|
||
DMA1_Channel1_BASE = (DMA1_BASE + $00000008);
|
||
DMA1_Channel2_BASE = (DMA1_BASE + $0000001C);
|
||
DMA1_Channel3_BASE = (DMA1_BASE + $00000030);
|
||
DMA1_Channel4_BASE = (DMA1_BASE + $00000044);
|
||
DMA1_Channel5_BASE = (DMA1_BASE + $00000058);
|
||
RCC_BASE = (AHBPERIPH_BASE + $00001000);
|
||
FLASH_R_BASE = (AHBPERIPH_BASE + $00002000); //FLASH registers base address
|
||
OB_BASE = longword($1FFFF800); //FLASH Option Bytes base address
|
||
CRC_BASE = (AHBPERIPH_BASE + $00003000);
|
||
TSC_BASE = (AHBPERIPH_BASE + $00004000);
|
||
|
||
GPIOA_BASE = (AHB2PERIPH_BASE + $00000000);
|
||
GPIOB_BASE = (AHB2PERIPH_BASE + $00000400);
|
||
GPIOC_BASE = (AHB2PERIPH_BASE + $00000800);
|
||
GPIOD_BASE = (AHB2PERIPH_BASE + $00000C00);
|
||
GPIOF_BASE = (AHB2PERIPH_BASE + $00001400);
|
||
|
||
var
|
||
TIM2 : TTIM_Registers absolute TIM2_BASE;
|
||
TIM3 : TTIM_Registers absolute TIM3_BASE;
|
||
TIM6 : TTIM_Registers absolute TIM6_BASE;
|
||
TIM14 : TTIM_Registers absolute TIM14_BASE;
|
||
RTC : TRTC_Registers absolute RTC_BASE;
|
||
WWDG : TWWDG_Registers absolute WWDG_BASE;
|
||
IWDG : TIWDG_Registers absolute IWDG_BASE;
|
||
SPI2 : TSPI_Registers absolute SPI2_BASE;
|
||
USART2 : TUSART_Registers absolute USART2_BASE;
|
||
I2C1 : TI2C_Registers absolute I2C1_BASE;
|
||
I2C2 : TI2C_Registers absolute I2C2_BASE;
|
||
PWR : TPWR_Registers absolute PWR_BASE;
|
||
DAC : TDAC_Registers absolute DAC_BASE;
|
||
CEC : TCEC_Registers absolute CEC_BASE;
|
||
|
||
SYSCFG : TSYSCFG_Registers absolute SYSCFG_BASE;
|
||
COMP : TCOMP_Registers absolute COMP_BASE;
|
||
EXTI : TEXTI_Registers absolute EXTI_BASE;
|
||
ADC1 : TADC_Registers absolute ADC1_BASE;
|
||
ADC : TADC_Common_Registers absolute ADC_BASE;
|
||
TIM1 : TTIM_Registers absolute TIM1_BASE;
|
||
SPI1 : TSPI_Registers absolute SPI1_BASE;
|
||
USART1 : TUSART_Registers absolute USART1_BASE;
|
||
TIM15 : TTIM_Registers absolute TIM15_BASE;
|
||
TIM16 : TTIM_Registers absolute TIM16_BASE;
|
||
TIM17 : TTIM_Registers absolute TIM17_BASE;
|
||
DBGMCU : TDBGMCU_Registers absolute DBGMCU_BASE;
|
||
|
||
DMA1 : TDMA_Registers absolute DMA1_BASE;
|
||
DMA1_Channel1 : TDMA_Channel_Registers absolute DMA1_Channel1_BASE;
|
||
DMA1_Channel2 : TDMA_Channel_Registers absolute DMA1_Channel2_BASE;
|
||
DMA1_Channel3 : TDMA_Channel_Registers absolute DMA1_Channel3_BASE;
|
||
DMA1_Channel4 : TDMA_Channel_Registers absolute DMA1_Channel4_BASE;
|
||
DMA1_Channel5 : TDMA_Channel_Registers absolute DMA1_Channel5_BASE;
|
||
FLASH : TFLASH_Registers absolute FLASH_R_BASE;
|
||
OB : TOB_Registers absolute OB_BASE;
|
||
RCC : TRCC_Registers absolute RCC_BASE;
|
||
CRC : TCRC_Registers absolute CRC_BASE;
|
||
TSC : TTSC_Registers absolute TSC_BASE;
|
||
|
||
GPIOA : TGPIO_Registers absolute GPIOA_BASE;
|
||
GPIOB : TGPIO_Registers absolute GPIOB_BASE;
|
||
GPIOC : TGPIO_Registers absolute GPIOC_BASE;
|
||
GPIOD : TGPIO_Registers absolute GPIOD_BASE;
|
||
GPIOF : TGPIO_Registers absolute GPIOF_BASE;
|
||
|
||
//****************************************************************************
|
||
//Peripheral Registers Bits Definition
|
||
//****************************************************************************
|
||
//****************************************************************************
|
||
|
||
//Analog to Digital Converter (ADC)
|
||
|
||
//****************************************************************************
|
||
//******************* Bits definition for ADC_ISR register *****************
|
||
const
|
||
ADC_ISR_AWD = longword($00000080); //Analog watchdog flag
|
||
ADC_ISR_OVR = longword($00000010); //Overrun flag
|
||
ADC_ISR_EOSEQ = longword($00000008); //End of Sequence flag
|
||
ADC_ISR_EOC = longword($00000004); //End of Conversion
|
||
ADC_ISR_EOSMP = longword($00000002); //End of sampling flag
|
||
ADC_ISR_ADRDY = longword($00000001); //ADC Ready
|
||
|
||
//Old EOSEQ bit definition, maintained for legacy purpose
|
||
ADC_ISR_EOS = ADC_ISR_EOSEQ;
|
||
|
||
//******************* Bits definition for ADC_IER register *****************
|
||
ADC_IER_AWDIE = longword($00000080); //Analog Watchdog interrupt enable
|
||
ADC_IER_OVRIE = longword($00000010); //Overrun interrupt enable
|
||
ADC_IER_EOSEQIE = longword($00000008); //End of Sequence of conversion interrupt enable
|
||
ADC_IER_EOCIE = longword($00000004); //End of Conversion interrupt enable
|
||
ADC_IER_EOSMPIE = longword($00000002); //End of sampling interrupt enable
|
||
ADC_IER_ADRDYIE = longword($00000001); //ADC Ready interrupt enable
|
||
|
||
//Old EOSEQIE bit definition, maintained for legacy purpose
|
||
ADC_IER_EOSIE = ADC_IER_EOSEQIE;
|
||
|
||
//******************* Bits definition for ADC_CR register ******************
|
||
ADC_CR_ADCAL = longword($80000000); //ADC calibration
|
||
ADC_CR_ADSTP = longword($00000010); //ADC stop of conversion command
|
||
ADC_CR_ADSTART = longword($00000004); //ADC start of conversion
|
||
ADC_CR_ADDIS = longword($00000002); //ADC disable command
|
||
ADC_CR_ADEN = longword($00000001); //ADC enable control
|
||
|
||
//****************** Bits definition for ADC_CFGR1 register ****************
|
||
ADC_CFGR1_AWDCH = longword($7C000000); //AWDCH[4:0] bits (Analog watchdog channel select bits)
|
||
ADC_CFGR1_AWDCH_0 = longword($04000000); //Bit 0
|
||
ADC_CFGR1_AWDCH_1 = longword($08000000); //Bit 1
|
||
ADC_CFGR1_AWDCH_2 = longword($10000000); //Bit 2
|
||
ADC_CFGR1_AWDCH_3 = longword($20000000); //Bit 3
|
||
ADC_CFGR1_AWDCH_4 = longword($40000000); //Bit 4
|
||
ADC_CFGR1_AWDEN = longword($00800000); //Analog watchdog enable on regular channels
|
||
ADC_CFGR1_AWDSGL = longword($00400000); //Enable the watchdog on a single channel or on all channels
|
||
ADC_CFGR1_DISCEN = longword($00010000); //Discontinuous mode on regular channels
|
||
ADC_CFGR1_AUTOFF = longword($00008000); //ADC auto power off
|
||
ADC_CFGR1_WAIT = longword($00004000); //ADC wait conversion mode
|
||
ADC_CFGR1_CONT = longword($00002000); //Continuous Conversion
|
||
ADC_CFGR1_OVRMOD = longword($00001000); //Overrun mode
|
||
ADC_CFGR1_EXTEN = longword($00000C00); //EXTEN[1:0] bits (External Trigger Conversion mode for regular channels)
|
||
ADC_CFGR1_EXTEN_0 = longword($00000400); //Bit 0
|
||
ADC_CFGR1_EXTEN_1 = longword($00000800); //Bit 1
|
||
ADC_CFGR1_EXTSEL = longword($000001C0); //EXTSEL[2:0] bits (External Event Select for regular group)
|
||
ADC_CFGR1_EXTSEL_0 = longword($00000040); //Bit 0
|
||
ADC_CFGR1_EXTSEL_1 = longword($00000080); //Bit 1
|
||
ADC_CFGR1_EXTSEL_2 = longword($00000100); //Bit 2
|
||
ADC_CFGR1_ALIGN = longword($00000020); //Data Alignment
|
||
ADC_CFGR1_RES = longword($00000018); //RES[1:0] bits (Resolution)
|
||
ADC_CFGR1_RES_0 = longword($00000008); //Bit 0
|
||
ADC_CFGR1_RES_1 = longword($00000010); //Bit 1
|
||
ADC_CFGR1_SCANDIR = longword($00000004); //Sequence scan direction
|
||
ADC_CFGR1_DMACFG = longword($00000002); //Direct memory access configuration
|
||
ADC_CFGR1_DMAEN = longword($00000001); //Direct memory access enable
|
||
|
||
//Old WAIT bit definition, maintained for legacy purpose
|
||
ADC_CFGR1_AUTDLY = ADC_CFGR1_WAIT;
|
||
|
||
//****************** Bits definition for ADC_CFGR2 register ****************
|
||
ADC_CFGR2_JITOFFDIV4 = longword($80000000); //Jitter Off when ADC clocked by PCLK div4
|
||
ADC_CFGR2_JITOFFDIV2 = longword($40000000); //Jitter Off when ADC clocked by PCLK div2
|
||
|
||
//***************** Bit definition for ADC_SMPR register *******************
|
||
ADC_SMPR1_SMPR = longword($00000007); //SMPR[2:0] bits (Sampling time selection)
|
||
ADC_SMPR1_SMPR_0 = longword($00000001); //Bit 0
|
||
ADC_SMPR1_SMPR_1 = longword($00000002); //Bit 1
|
||
ADC_SMPR1_SMPR_2 = longword($00000004); //Bit 2
|
||
|
||
//****************** Bit definition for ADC_HTR register *******************
|
||
ADC_HTR_HT = longword($00000FFF); //Analog watchdog high threshold
|
||
|
||
//****************** Bit definition for ADC_LTR register *******************
|
||
ADC_LTR_LT = longword($00000FFF); //Analog watchdog low threshold
|
||
|
||
//***************** Bit definition for ADC_CHSELR register *****************
|
||
ADC_CHSELR_CHSEL18 = longword($00040000); //Channel 18 selection
|
||
ADC_CHSELR_CHSEL17 = longword($00020000); //Channel 17 selection
|
||
ADC_CHSELR_CHSEL16 = longword($00010000); //Channel 16 selection
|
||
ADC_CHSELR_CHSEL15 = longword($00008000); //Channel 15 selection
|
||
ADC_CHSELR_CHSEL14 = longword($00004000); //Channel 14 selection
|
||
ADC_CHSELR_CHSEL13 = longword($00002000); //Channel 13 selection
|
||
ADC_CHSELR_CHSEL12 = longword($00001000); //Channel 12 selection
|
||
ADC_CHSELR_CHSEL11 = longword($00000800); //Channel 11 selection
|
||
ADC_CHSELR_CHSEL10 = longword($00000400); //Channel 10 selection
|
||
ADC_CHSELR_CHSEL9 = longword($00000200); //Channel 9 selection
|
||
ADC_CHSELR_CHSEL8 = longword($00000100); //Channel 8 selection
|
||
ADC_CHSELR_CHSEL7 = longword($00000080); //Channel 7 selection
|
||
ADC_CHSELR_CHSEL6 = longword($00000040); //Channel 6 selection
|
||
ADC_CHSELR_CHSEL5 = longword($00000020); //Channel 5 selection
|
||
ADC_CHSELR_CHSEL4 = longword($00000010); //Channel 4 selection
|
||
ADC_CHSELR_CHSEL3 = longword($00000008); //Channel 3 selection
|
||
ADC_CHSELR_CHSEL2 = longword($00000004); //Channel 2 selection
|
||
ADC_CHSELR_CHSEL1 = longword($00000002); //Channel 1 selection
|
||
ADC_CHSELR_CHSEL0 = longword($00000001); //Channel 0 selection
|
||
|
||
//******************* Bit definition for ADC_DR register *******************
|
||
ADC_DR_DATA = longword($0000FFFF); //Regular data
|
||
|
||
//****************** Bit definition for ADC_CCR register *******************
|
||
ADC_CCR_VBATEN = longword($01000000); //Voltage battery enable
|
||
ADC_CCR_TSEN = longword($00800000); //Tempurature sensore enable
|
||
ADC_CCR_VREFEN = longword($00400000); //Vrefint enable
|
||
|
||
//****************************************************************************
|
||
|
||
//HDMI-CEC (CEC)
|
||
|
||
//****************************************************************************
|
||
|
||
//****************** Bit definition for CEC_CR register ********************
|
||
CEC_CR_CECEN = longword($00000001); //CEC Enable
|
||
CEC_CR_TXSOM = longword($00000002); //CEC Tx Start Of Message
|
||
CEC_CR_TXEOM = longword($00000004); //CEC Tx End Of Message
|
||
|
||
//****************** Bit definition for CEC_CFGR register ******************
|
||
CEC_CFGR_SFT = longword($00000007); //CEC Signal Free Time
|
||
CEC_CFGR_RXTOL = longword($00000008); //CEC Tolerance
|
||
CEC_CFGR_BRESTP = longword($00000010); //CEC Rx Stop
|
||
CEC_CFGR_BREGEN = longword($00000020); //CEC Bit Rising Error generation
|
||
CEC_CFGR_LREGEN = longword($00000040); //CEC Long Period Error generation
|
||
CEC_CFGR_BRDNOGEN = longword($00000080); //CEC Broadcast no Error generation
|
||
CEC_CFGR_SFTOPT = longword($00000100); //CEC Signal Free Time optional
|
||
CEC_CFGR_OAR = longword($7FFF0000); //CEC Own Address
|
||
CEC_CFGR_LSTN = longword($80000000); //CEC Listen mode
|
||
|
||
//****************** Bit definition for CEC_TXDR register ******************
|
||
CEC_TXDR_TXD = longword($000000FF); //CEC Tx Data
|
||
|
||
//****************** Bit definition for CEC_RXDR register ******************
|
||
CEC_TXDR_RXD = longword($000000FF); //CEC Rx Data
|
||
|
||
//****************** Bit definition for CEC_ISR register *******************
|
||
CEC_ISR_RXBR = longword($00000001); //CEC Rx-Byte Received
|
||
CEC_ISR_RXEND = longword($00000002); //CEC End Of Reception
|
||
CEC_ISR_RXOVR = longword($00000004); //CEC Rx-Overrun
|
||
CEC_ISR_BRE = longword($00000008); //CEC Rx Bit Rising Error
|
||
CEC_ISR_SBPE = longword($00000010); //CEC Rx Short Bit period Error
|
||
CEC_ISR_LBPE = longword($00000020); //CEC Rx Long Bit period Error
|
||
CEC_ISR_RXACKE = longword($00000040); //CEC Rx Missing Acknowledge
|
||
CEC_ISR_ARBLST = longword($00000080); //CEC Arbitration Lost
|
||
CEC_ISR_TXBR = longword($00000100); //CEC Tx Byte Request
|
||
CEC_ISR_TXEND = longword($00000200); //CEC End of Transmission
|
||
CEC_ISR_TXUDR = longword($00000400); //CEC Tx-Buffer Underrun
|
||
CEC_ISR_TXERR = longword($00000800); //CEC Tx-Error
|
||
CEC_ISR_TXACKE = longword($00001000); //CEC Tx Missing Acknowledge
|
||
|
||
//****************** Bit definition for CEC_IER register *******************
|
||
CEC_IER_RXBRIE = longword($00000001); //CEC Rx-Byte Received IT Enable
|
||
CEC_IER_RXENDIE = longword($00000002); //CEC End Of Reception IT Enable
|
||
CEC_IER_RXOVRIE = longword($00000004); //CEC Rx-Overrun IT Enable
|
||
CEC_IER_BREIEIE = longword($00000008); //CEC Rx Bit Rising Error IT Enable
|
||
CEC_IER_SBPEIE = longword($00000010); //CEC Rx Short Bit period Error IT Enable
|
||
CEC_IER_LBPEIE = longword($00000020); //CEC Rx Long Bit period Error IT Enable
|
||
CEC_IER_RXACKEIE = longword($00000040); //CEC Rx Missing Acknowledge IT Enable
|
||
CEC_IER_ARBLSTIE = longword($00000080); //CEC Arbitration Lost IT Enable
|
||
CEC_IER_TXBRIE = longword($00000100); //CEC Tx Byte Request IT Enable
|
||
CEC_IER_TXENDIE = longword($00000200); //CEC End of Transmission IT Enable
|
||
CEC_IER_TXUDRIE = longword($00000400); //CEC Tx-Buffer Underrun IT Enable
|
||
CEC_IER_TXERRIE = longword($00000800); //CEC Tx-Error IT Enable
|
||
CEC_IER_TXACKEIE = longword($00001000); //CEC Tx Missing Acknowledge IT Enable
|
||
|
||
//****************************************************************************
|
||
|
||
//Analog Comparators (COMP)
|
||
|
||
//****************************************************************************
|
||
//********************** Bit definition for COMP_CSR register **************
|
||
//COMP1 bits definition
|
||
COMP_CSR_COMP1EN = longword($00000001); //COMP1 enable
|
||
COMP_CSR_COMP1SW1 = longword($00000002); //SW1 switch control
|
||
COMP_CSR_COMP1MODE = longword($0000000C); //COMP1 power mode
|
||
COMP_CSR_COMP1MODE_0 = longword($00000004); //COMP1 power mode bit 0
|
||
COMP_CSR_COMP1MODE_1 = longword($00000008); //COMP1 power mode bit 1
|
||
COMP_CSR_COMP1INSEL = longword($00000070); //COMP1 inverting input select
|
||
COMP_CSR_COMP1INSEL_0 = longword($00000010); //COMP1 inverting input select bit 0
|
||
COMP_CSR_COMP1INSEL_1 = longword($00000020); //COMP1 inverting input select bit 1
|
||
COMP_CSR_COMP1INSEL_2 = longword($00000040); //COMP1 inverting input select bit 2
|
||
COMP_CSR_COMP1OUTSEL = longword($00000700); //COMP1 output select
|
||
COMP_CSR_COMP1OUTSEL_0 = longword($00000100); //COMP1 output select bit 0
|
||
COMP_CSR_COMP1OUTSEL_1 = longword($00000200); //COMP1 output select bit 1
|
||
COMP_CSR_COMP1OUTSEL_2 = longword($00000400); //COMP1 output select bit 2
|
||
COMP_CSR_COMP1POL = longword($00000800); //COMP1 output polarity
|
||
COMP_CSR_COMP1HYST = longword($00003000); //COMP1 hysteresis
|
||
COMP_CSR_COMP1HYST_0 = longword($00001000); //COMP1 hysteresis bit 0
|
||
COMP_CSR_COMP1HYST_1 = longword($00002000); //COMP1 hysteresis bit 1
|
||
COMP_CSR_COMP1OUT = longword($00004000); //COMP1 output level
|
||
COMP_CSR_COMP1LOCK = longword($00008000); //COMP1 lock
|
||
//COMP2 bits definition
|
||
COMP_CSR_COMP2EN = longword($00010000); //COMP2 enable
|
||
COMP_CSR_COMP2MODE = longword($000C0000); //COMP2 power mode
|
||
COMP_CSR_COMP2MODE_0 = longword($00040000); //COMP2 power mode bit 0
|
||
COMP_CSR_COMP2MODE_1 = longword($00080000); //COMP2 power mode bit 1
|
||
COMP_CSR_COMP2INSEL = longword($00700000); //COMP2 inverting input select
|
||
COMP_CSR_COMP2INSEL_0 = longword($00100000); //COMP2 inverting input select bit 0
|
||
COMP_CSR_COMP2INSEL_1 = longword($00200000); //COMP2 inverting input select bit 1
|
||
COMP_CSR_COMP2INSEL_2 = longword($00400000); //COMP2 inverting input select bit 2
|
||
COMP_CSR_WNDWEN = longword($00800000); //Comparators window mode enable
|
||
COMP_CSR_COMP2OUTSEL = longword($07000000); //COMP2 output select
|
||
COMP_CSR_COMP2OUTSEL_0 = longword($01000000); //COMP2 output select bit 0
|
||
COMP_CSR_COMP2OUTSEL_1 = longword($02000000); //COMP2 output select bit 1
|
||
COMP_CSR_COMP2OUTSEL_2 = longword($04000000); //COMP2 output select bit 2
|
||
COMP_CSR_COMP2POL = longword($08000000); //COMP2 output polarity
|
||
COMP_CSR_COMP2HYST = longword($30000000); //COMP2 hysteresis
|
||
COMP_CSR_COMP2HYST_0 = longword($10000000); //COMP2 hysteresis bit 0
|
||
COMP_CSR_COMP2HYST_1 = longword($20000000); //COMP2 hysteresis bit 1
|
||
COMP_CSR_COMP2OUT = longword($40000000); //COMP2 output level
|
||
COMP_CSR_COMP2LOCK = longword($80000000); //COMP2 lock
|
||
|
||
//****************************************************************************
|
||
|
||
//CRC calculation unit (CRC)
|
||
|
||
//****************************************************************************
|
||
//****************** Bit definition for CRC_DR register ********************
|
||
CRC_DR_DR = longword($FFFFFFFF); //Data register bits
|
||
|
||
//****************** Bit definition for CRC_IDR register *******************
|
||
CRC_IDR_IDR = longword($FF); //General-purpose 8-bit data register bits
|
||
|
||
//******************* Bit definition for CRC_CR register *******************
|
||
CRC_CR_RESET = longword($00000001); //RESET the CRC computation unit bit
|
||
CRC_CR_REV_IN = longword($00000060); //REV_IN Reverse Input Data bits
|
||
CRC_CR_REV_IN_0 = longword($00000020); //REV_IN Bit 0
|
||
CRC_CR_REV_IN_1 = longword($00000040); //REV_IN Bit 1
|
||
CRC_CR_REV_OUT = longword($00000080); //REV_OUT Reverse Output Data bits
|
||
|
||
//****************** Bit definition for CRC_INIT register ******************
|
||
CRC_INIT_INIT = longword($FFFFFFFF); //Initial CRC value bits
|
||
|
||
//****************************************************************************
|
||
|
||
//Digital to Analog Converter (DAC)
|
||
|
||
//****************************************************************************
|
||
//******************* Bit definition for DAC_CR register *******************
|
||
DAC_CR_EN1 = longword($00000001); //AC channel1 enable
|
||
DAC_CR_BOFF1 = longword($00000002); //AC channel1 output buffer disable
|
||
DAC_CR_TEN1 = longword($00000004); //AC channel1 Trigger enable
|
||
|
||
DAC_CR_TSEL1 = longword($00000038); //SEL1[2:0] (DAC channel1 Trigger selection)
|
||
DAC_CR_TSEL1_0 = longword($00000008); //it 0
|
||
DAC_CR_TSEL1_1 = longword($00000010); //it 1
|
||
DAC_CR_TSEL1_2 = longword($00000020); //it 2
|
||
|
||
DAC_CR_DMAEN1 = longword($00001000); //AC channel1 DMA enable
|
||
DAC_CR_DMAUDRIE1 = longword($00002000); //AC channel1 DMA Underrun Interrupt enable
|
||
//**************** Bit definition for DAC_SWTRIGR register *****************
|
||
DAC_SWTRIGR_SWTRIG1 = longword($00000001); //AC channel1 software trigger
|
||
|
||
//**************** Bit definition for DAC_DHR12R1 register *****************
|
||
DAC_DHR12R1_DACC1DHR = longword($00000FFF); //AC channel1 12-bit Right aligned data
|
||
|
||
//**************** Bit definition for DAC_DHR12L1 register *****************
|
||
DAC_DHR12L1_DACC1DHR = longword($0000FFF0); //AC channel1 12-bit Left aligned data
|
||
|
||
//***************** Bit definition for DAC_DHR8R1 register *****************
|
||
DAC_DHR8R1_DACC1DHR = longword($000000FF); //AC channel1 8-bit Right aligned data
|
||
|
||
//****************** Bit definition for DAC_DOR1 register ******************
|
||
DAC_DOR1_DACC1DOR = longword($00000FFF); //AC channel1 data output
|
||
|
||
//******************* Bit definition for DAC_SR register *******************
|
||
DAC_SR_DMAUDR1 = longword($00002000); //AC channel1 DMA underrun flag
|
||
|
||
//****************************************************************************
|
||
|
||
//Debug MCU (DBGMCU)
|
||
|
||
//****************************************************************************
|
||
|
||
//*************** Bit definition for DBGMCU_IDCODE register ****************
|
||
DBGMCU_IDCODE_DEV_ID = longword($00000FFF); //Device Identifier
|
||
|
||
DBGMCU_IDCODE_REV_ID = longword($FFFF0000); //REV_ID[15:0] bits (Revision Identifier)
|
||
DBGMCU_IDCODE_REV_ID_0 = longword($00010000); //Bit 0
|
||
DBGMCU_IDCODE_REV_ID_1 = longword($00020000); //Bit 1
|
||
DBGMCU_IDCODE_REV_ID_2 = longword($00040000); //Bit 2
|
||
DBGMCU_IDCODE_REV_ID_3 = longword($00080000); //Bit 3
|
||
DBGMCU_IDCODE_REV_ID_4 = longword($00100000); //Bit 4
|
||
DBGMCU_IDCODE_REV_ID_5 = longword($00200000); //Bit 5
|
||
DBGMCU_IDCODE_REV_ID_6 = longword($00400000); //Bit 6
|
||
DBGMCU_IDCODE_REV_ID_7 = longword($00800000); //Bit 7
|
||
DBGMCU_IDCODE_REV_ID_8 = longword($01000000); //Bit 8
|
||
DBGMCU_IDCODE_REV_ID_9 = longword($02000000); //Bit 9
|
||
DBGMCU_IDCODE_REV_ID_10 = longword($04000000); //Bit 10
|
||
DBGMCU_IDCODE_REV_ID_11 = longword($08000000); //Bit 11
|
||
DBGMCU_IDCODE_REV_ID_12 = longword($10000000); //Bit 12
|
||
DBGMCU_IDCODE_REV_ID_13 = longword($20000000); //Bit 13
|
||
DBGMCU_IDCODE_REV_ID_14 = longword($40000000); //Bit 14
|
||
DBGMCU_IDCODE_REV_ID_15 = longword($80000000); //Bit 15
|
||
|
||
//***************** Bit definition for DBGMCU_CR register ******************
|
||
DBGMCU_CR_DBG_STOP = longword($00000002); //Debug Stop Mode
|
||
DBGMCU_CR_DBG_STANDBY = longword($00000004); //Debug Standby mode
|
||
|
||
//***************** Bit definition for DBGMCU_APB1_FZ register *************
|
||
DBGMCU_APB1_FZ_DBG_TIM2_STOP = longword($00000001); //TIM2 counter stopped when core is halted
|
||
DBGMCU_APB1_FZ_DBG_TIM3_STOP = longword($00000002); //TIM3 counter stopped when core is halted
|
||
DBGMCU_APB1_FZ_DBG_TIM6_STOP = longword($00000010); //TIM6 counter stopped when core is halted
|
||
DBGMCU_APB1_FZ_DBG_TIM14_STOP = longword($00000100); //TIM14 counter stopped when core is halted
|
||
DBGMCU_APB1_FZ_DBG_RTC_STOP = longword($00000400); //RTC Calendar frozen when core is halted
|
||
DBGMCU_APB1_FZ_DBG_WWDG_STOP = longword($00000800); //Debug Window Watchdog stopped when Core is halted
|
||
DBGMCU_APB1_FZ_DBG_IWDG_STOP = longword($00001000); //Debug Independent Watchdog stopped when Core is halted
|
||
DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT = longword($00200000); //I2C1 SMBUS timeout mode stopped when Core is halted
|
||
|
||
//***************** Bit definition for DBGMCU_APB2_FZ register *************
|
||
DBGMCU_APB2_FZ_DBG_TIM1_STOP = longword($00000800); //TIM1 counter stopped when core is halted
|
||
DBGMCU_APB2_FZ_DBG_TIM15_STOP = longword($00010000); //TIM15 counter stopped when core is halted
|
||
DBGMCU_APB2_FZ_DBG_TIM16_STOP = longword($00020000); //TIM16 counter stopped when core is halted
|
||
DBGMCU_APB2_FZ_DBG_TIM17_STOP = longword($00040000); //TIM17 counter stopped when core is halted
|
||
|
||
//****************************************************************************
|
||
|
||
//DMA Controller (DMA)
|
||
|
||
//****************************************************************************
|
||
|
||
//****************** Bit definition for DMA_ISR register *******************
|
||
DMA_ISR_GIF1 = longword($00000001); //Channel 1 Global interrupt flag
|
||
DMA_ISR_TCIF1 = longword($00000002); //Channel 1 Transfer Complete flag
|
||
DMA_ISR_HTIF1 = longword($00000004); //Channel 1 Half Transfer flag
|
||
DMA_ISR_TEIF1 = longword($00000008); //Channel 1 Transfer Error flag
|
||
DMA_ISR_GIF2 = longword($00000010); //Channel 2 Global interrupt flag
|
||
DMA_ISR_TCIF2 = longword($00000020); //Channel 2 Transfer Complete flag
|
||
DMA_ISR_HTIF2 = longword($00000040); //Channel 2 Half Transfer flag
|
||
DMA_ISR_TEIF2 = longword($00000080); //Channel 2 Transfer Error flag
|
||
DMA_ISR_GIF3 = longword($00000100); //Channel 3 Global interrupt flag
|
||
DMA_ISR_TCIF3 = longword($00000200); //Channel 3 Transfer Complete flag
|
||
DMA_ISR_HTIF3 = longword($00000400); //Channel 3 Half Transfer flag
|
||
DMA_ISR_TEIF3 = longword($00000800); //Channel 3 Transfer Error flag
|
||
DMA_ISR_GIF4 = longword($00001000); //Channel 4 Global interrupt flag
|
||
DMA_ISR_TCIF4 = longword($00002000); //Channel 4 Transfer Complete flag
|
||
DMA_ISR_HTIF4 = longword($00004000); //Channel 4 Half Transfer flag
|
||
DMA_ISR_TEIF4 = longword($00008000); //Channel 4 Transfer Error flag
|
||
DMA_ISR_GIF5 = longword($00010000); //Channel 5 Global interrupt flag
|
||
DMA_ISR_TCIF5 = longword($00020000); //Channel 5 Transfer Complete flag
|
||
DMA_ISR_HTIF5 = longword($00040000); //Channel 5 Half Transfer flag
|
||
DMA_ISR_TEIF5 = longword($00080000); //Channel 5 Transfer Error flag
|
||
|
||
//****************** Bit definition for DMA_IFCR register ******************
|
||
DMA_IFCR_CGIF1 = longword($00000001); //Channel 1 Global interrupt clear
|
||
DMA_IFCR_CTCIF1 = longword($00000002); //Channel 1 Transfer Complete clear
|
||
DMA_IFCR_CHTIF1 = longword($00000004); //Channel 1 Half Transfer clear
|
||
DMA_IFCR_CTEIF1 = longword($00000008); //Channel 1 Transfer Error clear
|
||
DMA_IFCR_CGIF2 = longword($00000010); //Channel 2 Global interrupt clear
|
||
DMA_IFCR_CTCIF2 = longword($00000020); //Channel 2 Transfer Complete clear
|
||
DMA_IFCR_CHTIF2 = longword($00000040); //Channel 2 Half Transfer clear
|
||
DMA_IFCR_CTEIF2 = longword($00000080); //Channel 2 Transfer Error clear
|
||
DMA_IFCR_CGIF3 = longword($00000100); //Channel 3 Global interrupt clear
|
||
DMA_IFCR_CTCIF3 = longword($00000200); //Channel 3 Transfer Complete clear
|
||
DMA_IFCR_CHTIF3 = longword($00000400); //Channel 3 Half Transfer clear
|
||
DMA_IFCR_CTEIF3 = longword($00000800); //Channel 3 Transfer Error clear
|
||
DMA_IFCR_CGIF4 = longword($00001000); //Channel 4 Global interrupt clear
|
||
DMA_IFCR_CTCIF4 = longword($00002000); //Channel 4 Transfer Complete clear
|
||
DMA_IFCR_CHTIF4 = longword($00004000); //Channel 4 Half Transfer clear
|
||
DMA_IFCR_CTEIF4 = longword($00008000); //Channel 4 Transfer Error clear
|
||
DMA_IFCR_CGIF5 = longword($00010000); //Channel 5 Global interrupt clear
|
||
DMA_IFCR_CTCIF5 = longword($00020000); //Channel 5 Transfer Complete clear
|
||
DMA_IFCR_CHTIF5 = longword($00040000); //Channel 5 Half Transfer clear
|
||
DMA_IFCR_CTEIF5 = longword($00080000); //Channel 5 Transfer Error clear
|
||
|
||
//****************** Bit definition for DMA_CCR register *******************
|
||
DMA_CCR_EN = longword($00000001); //Channel enable
|
||
DMA_CCR_TCIE = longword($00000002); //Transfer complete interrupt enable
|
||
DMA_CCR_HTIE = longword($00000004); //Half Transfer interrupt enable
|
||
DMA_CCR_TEIE = longword($00000008); //Transfer error interrupt enable
|
||
DMA_CCR_DIR = longword($00000010); //Data transfer direction
|
||
DMA_CCR_CIRC = longword($00000020); //Circular mode
|
||
DMA_CCR_PINC = longword($00000040); //Peripheral increment mode
|
||
DMA_CCR_MINC = longword($00000080); //Memory increment mode
|
||
|
||
DMA_CCR_PSIZE = longword($00000300); //PSIZE[1:0] bits (Peripheral size)
|
||
DMA_CCR_PSIZE_0 = longword($00000100); //Bit 0
|
||
DMA_CCR_PSIZE_1 = longword($00000200); //Bit 1
|
||
|
||
DMA_CCR_MSIZE = longword($00000C00); //MSIZE[1:0] bits (Memory size)
|
||
DMA_CCR_MSIZE_0 = longword($00000400); //Bit 0
|
||
DMA_CCR_MSIZE_1 = longword($00000800); //Bit 1
|
||
|
||
DMA_CCR_PL = longword($00003000); //PL[1:0] bits(Channel Priority level)
|
||
DMA_CCR_PL_0 = longword($00001000); //Bit 0
|
||
DMA_CCR_PL_1 = longword($00002000); //Bit 1
|
||
|
||
DMA_CCR_MEM2MEM = longword($00004000); //Memory to memory mode
|
||
|
||
//***************** Bit definition for DMA_CNDTR register ******************
|
||
DMA_CNDTR_NDT = longword($0000FFFF); //Number of data to Transfer
|
||
|
||
//***************** Bit definition for DMA_CPAR register *******************
|
||
DMA_CPAR_PA = longword($FFFFFFFF); //Peripheral Address
|
||
|
||
//***************** Bit definition for DMA_CMAR register *******************
|
||
DMA_CMAR_MA = longword($FFFFFFFF); //Memory Address
|
||
|
||
//****************************************************************************
|
||
|
||
//External Interrupt/Event Controller (EXTI)
|
||
|
||
//****************************************************************************
|
||
//****************** Bit definition for EXTI_IMR register ******************
|
||
EXTI_IMR_MR0 = longword($00000001); //Interrupt Mask on line 0
|
||
EXTI_IMR_MR1 = longword($00000002); //Interrupt Mask on line 1
|
||
EXTI_IMR_MR2 = longword($00000004); //Interrupt Mask on line 2
|
||
EXTI_IMR_MR3 = longword($00000008); //Interrupt Mask on line 3
|
||
EXTI_IMR_MR4 = longword($00000010); //Interrupt Mask on line 4
|
||
EXTI_IMR_MR5 = longword($00000020); //Interrupt Mask on line 5
|
||
EXTI_IMR_MR6 = longword($00000040); //Interrupt Mask on line 6
|
||
EXTI_IMR_MR7 = longword($00000080); //Interrupt Mask on line 7
|
||
EXTI_IMR_MR8 = longword($00000100); //Interrupt Mask on line 8
|
||
EXTI_IMR_MR9 = longword($00000200); //Interrupt Mask on line 9
|
||
EXTI_IMR_MR10 = longword($00000400); //Interrupt Mask on line 10
|
||
EXTI_IMR_MR11 = longword($00000800); //Interrupt Mask on line 11
|
||
EXTI_IMR_MR12 = longword($00001000); //Interrupt Mask on line 12
|
||
EXTI_IMR_MR13 = longword($00002000); //Interrupt Mask on line 13
|
||
EXTI_IMR_MR14 = longword($00004000); //Interrupt Mask on line 14
|
||
EXTI_IMR_MR15 = longword($00008000); //Interrupt Mask on line 15
|
||
EXTI_IMR_MR16 = longword($00010000); //Interrupt Mask on line 16
|
||
EXTI_IMR_MR17 = longword($00020000); //Interrupt Mask on line 17
|
||
EXTI_IMR_MR19 = longword($00080000); //Interrupt Mask on line 19
|
||
EXTI_IMR_MR21 = longword($00200000); //Interrupt Mask on line 21
|
||
EXTI_IMR_MR22 = longword($00400000); //Interrupt Mask on line 22
|
||
EXTI_IMR_MR23 = longword($00800000); //Interrupt Mask on line 23
|
||
EXTI_IMR_MR25 = longword($02000000); //Interrupt Mask on line 25
|
||
EXTI_IMR_MR27 = longword($08000000); //Interrupt Mask on line 27
|
||
|
||
//***************** Bit definition for EXTI_EMR register *******************
|
||
EXTI_EMR_MR0 = longword($00000001); //Event Mask on line 0
|
||
EXTI_EMR_MR1 = longword($00000002); //Event Mask on line 1
|
||
EXTI_EMR_MR2 = longword($00000004); //Event Mask on line 2
|
||
EXTI_EMR_MR3 = longword($00000008); //Event Mask on line 3
|
||
EXTI_EMR_MR4 = longword($00000010); //Event Mask on line 4
|
||
EXTI_EMR_MR5 = longword($00000020); //Event Mask on line 5
|
||
EXTI_EMR_MR6 = longword($00000040); //Event Mask on line 6
|
||
EXTI_EMR_MR7 = longword($00000080); //Event Mask on line 7
|
||
EXTI_EMR_MR8 = longword($00000100); //Event Mask on line 8
|
||
EXTI_EMR_MR9 = longword($00000200); //Event Mask on line 9
|
||
EXTI_EMR_MR10 = longword($00000400); //Event Mask on line 10
|
||
EXTI_EMR_MR11 = longword($00000800); //Event Mask on line 11
|
||
EXTI_EMR_MR12 = longword($00001000); //Event Mask on line 12
|
||
EXTI_EMR_MR13 = longword($00002000); //Event Mask on line 13
|
||
EXTI_EMR_MR14 = longword($00004000); //Event Mask on line 14
|
||
EXTI_EMR_MR15 = longword($00008000); //Event Mask on line 15
|
||
EXTI_EMR_MR16 = longword($00010000); //Event Mask on line 16
|
||
EXTI_EMR_MR17 = longword($00020000); //Event Mask on line 17
|
||
EXTI_EMR_MR19 = longword($00080000); //Event Mask on line 19
|
||
EXTI_EMR_MR21 = longword($00200000); //Event Mask on line 21
|
||
EXTI_EMR_MR22 = longword($00400000); //Event Mask on line 22
|
||
EXTI_EMR_MR23 = longword($00800000); //Event Mask on line 23
|
||
EXTI_EMR_MR25 = longword($02000000); //Event Mask on line 25
|
||
EXTI_EMR_MR27 = longword($08000000); //Event Mask on line 27
|
||
|
||
//****************** Bit definition for EXTI_RTSR register *****************
|
||
EXTI_RTSR_TR0 = longword($00000001); //Rising trigger event configuration bit of line 0
|
||
EXTI_RTSR_TR1 = longword($00000002); //Rising trigger event configuration bit of line 1
|
||
EXTI_RTSR_TR2 = longword($00000004); //Rising trigger event configuration bit of line 2
|
||
EXTI_RTSR_TR3 = longword($00000008); //Rising trigger event configuration bit of line 3
|
||
EXTI_RTSR_TR4 = longword($00000010); //Rising trigger event configuration bit of line 4
|
||
EXTI_RTSR_TR5 = longword($00000020); //Rising trigger event configuration bit of line 5
|
||
EXTI_RTSR_TR6 = longword($00000040); //Rising trigger event configuration bit of line 6
|
||
EXTI_RTSR_TR7 = longword($00000080); //Rising trigger event configuration bit of line 7
|
||
EXTI_RTSR_TR8 = longword($00000100); //Rising trigger event configuration bit of line 8
|
||
EXTI_RTSR_TR9 = longword($00000200); //Rising trigger event configuration bit of line 9
|
||
EXTI_RTSR_TR10 = longword($00000400); //Rising trigger event configuration bit of line 10
|
||
EXTI_RTSR_TR11 = longword($00000800); //Rising trigger event configuration bit of line 11
|
||
EXTI_RTSR_TR12 = longword($00001000); //Rising trigger event configuration bit of line 12
|
||
EXTI_RTSR_TR13 = longword($00002000); //Rising trigger event configuration bit of line 13
|
||
EXTI_RTSR_TR14 = longword($00004000); //Rising trigger event configuration bit of line 14
|
||
EXTI_RTSR_TR15 = longword($00008000); //Rising trigger event configuration bit of line 15
|
||
EXTI_RTSR_TR16 = longword($00010000); //Rising trigger event configuration bit of line 16
|
||
EXTI_RTSR_TR17 = longword($00020000); //Rising trigger event configuration bit of line 17
|
||
EXTI_RTSR_TR19 = longword($00080000); //Rising trigger event configuration bit of line 19
|
||
|
||
//****************** Bit definition for EXTI_FTSR register ******************
|
||
EXTI_FTSR_TR0 = longword($00000001); //Falling trigger event configuration bit of line 0
|
||
EXTI_FTSR_TR1 = longword($00000002); //Falling trigger event configuration bit of line 1
|
||
EXTI_FTSR_TR2 = longword($00000004); //Falling trigger event configuration bit of line 2
|
||
EXTI_FTSR_TR3 = longword($00000008); //Falling trigger event configuration bit of line 3
|
||
EXTI_FTSR_TR4 = longword($00000010); //Falling trigger event configuration bit of line 4
|
||
EXTI_FTSR_TR5 = longword($00000020); //Falling trigger event configuration bit of line 5
|
||
EXTI_FTSR_TR6 = longword($00000040); //Falling trigger event configuration bit of line 6
|
||
EXTI_FTSR_TR7 = longword($00000080); //Falling trigger event configuration bit of line 7
|
||
EXTI_FTSR_TR8 = longword($00000100); //Falling trigger event configuration bit of line 8
|
||
EXTI_FTSR_TR9 = longword($00000200); //Falling trigger event configuration bit of line 9
|
||
EXTI_FTSR_TR10 = longword($00000400); //Falling trigger event configuration bit of line 10
|
||
EXTI_FTSR_TR11 = longword($00000800); //Falling trigger event configuration bit of line 11
|
||
EXTI_FTSR_TR12 = longword($00001000); //Falling trigger event configuration bit of line 12
|
||
EXTI_FTSR_TR13 = longword($00002000); //Falling trigger event configuration bit of line 13
|
||
EXTI_FTSR_TR14 = longword($00004000); //Falling trigger event configuration bit of line 14
|
||
EXTI_FTSR_TR15 = longword($00008000); //Falling trigger event configuration bit of line 15
|
||
EXTI_FTSR_TR16 = longword($00010000); //Falling trigger event configuration bit of line 16
|
||
EXTI_FTSR_TR17 = longword($00020000); //Falling trigger event configuration bit of line 17
|
||
EXTI_FTSR_TR19 = longword($00080000); //Falling trigger event configuration bit of line 19
|
||
|
||
//****************** Bit definition for EXTI_SWIER register ******************
|
||
EXTI_SWIER_SWIER0 = longword($00000001); //Software Interrupt on line 0
|
||
EXTI_SWIER_SWIER1 = longword($00000002); //Software Interrupt on line 1
|
||
EXTI_SWIER_SWIER2 = longword($00000004); //Software Interrupt on line 2
|
||
EXTI_SWIER_SWIER3 = longword($00000008); //Software Interrupt on line 3
|
||
EXTI_SWIER_SWIER4 = longword($00000010); //Software Interrupt on line 4
|
||
EXTI_SWIER_SWIER5 = longword($00000020); //Software Interrupt on line 5
|
||
EXTI_SWIER_SWIER6 = longword($00000040); //Software Interrupt on line 6
|
||
EXTI_SWIER_SWIER7 = longword($00000080); //Software Interrupt on line 7
|
||
EXTI_SWIER_SWIER8 = longword($00000100); //Software Interrupt on line 8
|
||
EXTI_SWIER_SWIER9 = longword($00000200); //Software Interrupt on line 9
|
||
EXTI_SWIER_SWIER10 = longword($00000400); //Software Interrupt on line 10
|
||
EXTI_SWIER_SWIER11 = longword($00000800); //Software Interrupt on line 11
|
||
EXTI_SWIER_SWIER12 = longword($00001000); //Software Interrupt on line 12
|
||
EXTI_SWIER_SWIER13 = longword($00002000); //Software Interrupt on line 13
|
||
EXTI_SWIER_SWIER14 = longword($00004000); //Software Interrupt on line 14
|
||
EXTI_SWIER_SWIER15 = longword($00008000); //Software Interrupt on line 15
|
||
EXTI_SWIER_SWIER16 = longword($00010000); //Software Interrupt on line 16
|
||
EXTI_SWIER_SWIER17 = longword($00020000); //Software Interrupt on line 17
|
||
EXTI_SWIER_SWIER19 = longword($00080000); //Software Interrupt on line 19
|
||
|
||
//***************** Bit definition for EXTI_PR register ********************
|
||
EXTI_PR_PR0 = longword($00000001); //Pending bit 0
|
||
EXTI_PR_PR1 = longword($00000002); //Pending bit 1
|
||
EXTI_PR_PR2 = longword($00000004); //Pending bit 2
|
||
EXTI_PR_PR3 = longword($00000008); //Pending bit 3
|
||
EXTI_PR_PR4 = longword($00000010); //Pending bit 4
|
||
EXTI_PR_PR5 = longword($00000020); //Pending bit 5
|
||
EXTI_PR_PR6 = longword($00000040); //Pending bit 6
|
||
EXTI_PR_PR7 = longword($00000080); //Pending bit 7
|
||
EXTI_PR_PR8 = longword($00000100); //Pending bit 8
|
||
EXTI_PR_PR9 = longword($00000200); //Pending bit 9
|
||
EXTI_PR_PR10 = longword($00000400); //Pending bit 10
|
||
EXTI_PR_PR11 = longword($00000800); //Pending bit 11
|
||
EXTI_PR_PR12 = longword($00001000); //Pending bit 12
|
||
EXTI_PR_PR13 = longword($00002000); //Pending bit 13
|
||
EXTI_PR_PR14 = longword($00004000); //Pending bit 14
|
||
EXTI_PR_PR15 = longword($00008000); //Pending bit 15
|
||
EXTI_PR_PR16 = longword($00010000); //Pending bit 16
|
||
EXTI_PR_PR17 = longword($00020000); //Pending bit 17
|
||
EXTI_PR_PR19 = longword($00080000); //Pending bit 19
|
||
|
||
//****************************************************************************
|
||
|
||
//FLASH and Option Bytes Registers
|
||
|
||
//****************************************************************************
|
||
|
||
//****************** Bit definition for FLASH_ACR register *****************
|
||
FLASH_ACR_LATENCY = longword($00000001); //LATENCY bit (Latency)
|
||
|
||
FLASH_ACR_PRFTBE = longword($00000010); //Prefetch Buffer Enable
|
||
FLASH_ACR_PRFTBS = longword($00000020); //Prefetch Buffer Status
|
||
|
||
//***************** Bit definition for FLASH_KEYR register *****************
|
||
FLASH_KEYR_FKEYR = longword($FFFFFFFF); //FPEC Key
|
||
|
||
//**************** Bit definition for FLASH_OPTKEYR register ***************
|
||
FLASH_OPTKEYR_OPTKEYR = longword($FFFFFFFF); //Option Byte Key
|
||
|
||
//***************** FLASH Keys *********************************************
|
||
FLASH_FKEY1 = longword($45670123); //Flash program erase key1
|
||
FLASH_FKEY2 = longword($CDEF89AB); //Flash program erase key2: used with FLASH_PEKEY1
|
||
//to unlock the write access to the FPEC.
|
||
|
||
FLASH_OPTKEY1 = longword($45670123); //Flash option key1
|
||
FLASH_OPTKEY2 = longword($CDEF89AB); //Flash option key2: used with FLASH_OPTKEY1 to
|
||
//unlock the write access to the option byte block
|
||
|
||
//***************** Bit definition for FLASH_SR register ******************
|
||
FLASH_SR_BSY = longword($00000001); //Busy
|
||
FLASH_SR_PGERR = longword($00000004); //Programming Error
|
||
FLASH_SR_WRPERR = longword($00000010); //Write Protection Error
|
||
FLASH_SR_EOP = longword($00000020); //End of operation
|
||
|
||
//****************** Bit definition for FLASH_CR register ******************
|
||
FLASH_CR_PG = longword($00000001); //Programming
|
||
FLASH_CR_PER = longword($00000002); //Page Erase
|
||
FLASH_CR_MER = longword($00000004); //Mass Erase
|
||
FLASH_CR_OPTPG = longword($00000010); //Option Byte Programming
|
||
FLASH_CR_OPTER = longword($00000020); //Option Byte Erase
|
||
FLASH_CR_STRT = longword($00000040); //Start
|
||
FLASH_CR_LOCK = longword($00000080); //Lock
|
||
FLASH_CR_OPTWRE = longword($00000200); //Option Bytes Write Enable
|
||
FLASH_CR_ERRIE = longword($00000400); //Error Interrupt Enable
|
||
FLASH_CR_EOPIE = longword($00001000); //End of operation interrupt enable
|
||
FLASH_CR_OBL_LAUNCH = longword($00002000); //Option Bytes Loader Launch
|
||
|
||
//****************** Bit definition for FLASH_AR register ******************
|
||
FLASH_AR_FAR = longword($FFFFFFFF); //Flash Address
|
||
|
||
//***************** Bit definition for FLASH_OBR register ******************
|
||
FLASH_OBR_OPTERR = longword($00000001); //Option Byte Error
|
||
FLASH_OBR_RDPRT1 = longword($00000002); //Read protection Level 1
|
||
FLASH_OBR_RDPRT2 = longword($00000004); //Read protection Level 2
|
||
|
||
FLASH_OBR_USER = longword($00003700); //User Option Bytes
|
||
FLASH_OBR_IWDG_SW = longword($00000100); //IWDG SW
|
||
FLASH_OBR_nRST_STOP = longword($00000200); //nRST_STOP
|
||
FLASH_OBR_nRST_STDBY = longword($00000400); //nRST_STDBY
|
||
FLASH_OBR_nBOOT1 = longword($00001000); //nBOOT1
|
||
FLASH_OBR_VDDA_MONITOR = longword($00002000); //VDDA power supply supervisor
|
||
|
||
//Old BOOT1 bit definition, maintained for legacy purpose
|
||
FLASH_OBR_BOOT1 = FLASH_OBR_nBOOT1;
|
||
|
||
//Old BOOT1 bit definition, maintained for legacy purpose
|
||
FLASH_OBR_VDDA_ANALOG = FLASH_OBR_VDDA_MONITOR;
|
||
|
||
//***************** Bit definition for FLASH_WRPR register *****************
|
||
FLASH_WRPR_WRP = longword($0000FFFF); //Write Protect
|
||
|
||
//----------------------------------------------------------------------------
|
||
|
||
//***************** Bit definition for OB_RDP register *********************
|
||
OB_RDP_RDP = longword($000000FF); //Read protection option byte
|
||
OB_RDP_nRDP = longword($0000FF00); //Read protection complemented option byte
|
||
|
||
//***************** Bit definition for OB_USER register ********************
|
||
OB_USER_USER = longword($00FF0000); //User option byte
|
||
OB_USER_nUSER = longword($FF000000); //User complemented option byte
|
||
|
||
//***************** Bit definition for OB_WRP0 register ********************
|
||
OB_WRP0_WRP0 = longword($000000FF); //Flash memory write protection option bytes
|
||
OB_WRP0_nWRP0 = longword($0000FF00); //Flash memory write protection complemented option bytes
|
||
|
||
//***************** Bit definition for OB_WRP1 register ********************
|
||
OB_WRP1_WRP1 = longword($00FF0000); //Flash memory write protection option bytes
|
||
OB_WRP1_nWRP1 = longword($FF000000); //Flash memory write protection complemented option bytes
|
||
|
||
//****************************************************************************
|
||
|
||
//General Purpose IOs (GPIO)
|
||
|
||
//****************************************************************************
|
||
//****************** Bit definition for GPIO_MODER register ****************
|
||
GPIO_MODER_MODER0 = longword($00000003);
|
||
GPIO_MODER_MODER0_0 = longword($00000001);
|
||
GPIO_MODER_MODER0_1 = longword($00000002);
|
||
GPIO_MODER_MODER1 = longword($0000000C);
|
||
GPIO_MODER_MODER1_0 = longword($00000004);
|
||
GPIO_MODER_MODER1_1 = longword($00000008);
|
||
GPIO_MODER_MODER2 = longword($00000030);
|
||
GPIO_MODER_MODER2_0 = longword($00000010);
|
||
GPIO_MODER_MODER2_1 = longword($00000020);
|
||
GPIO_MODER_MODER3 = longword($000000C0);
|
||
GPIO_MODER_MODER3_0 = longword($00000040);
|
||
GPIO_MODER_MODER3_1 = longword($00000080);
|
||
GPIO_MODER_MODER4 = longword($00000300);
|
||
GPIO_MODER_MODER4_0 = longword($00000100);
|
||
GPIO_MODER_MODER4_1 = longword($00000200);
|
||
GPIO_MODER_MODER5 = longword($00000C00);
|
||
GPIO_MODER_MODER5_0 = longword($00000400);
|
||
GPIO_MODER_MODER5_1 = longword($00000800);
|
||
GPIO_MODER_MODER6 = longword($00003000);
|
||
GPIO_MODER_MODER6_0 = longword($00001000);
|
||
GPIO_MODER_MODER6_1 = longword($00002000);
|
||
GPIO_MODER_MODER7 = longword($0000C000);
|
||
GPIO_MODER_MODER7_0 = longword($00004000);
|
||
GPIO_MODER_MODER7_1 = longword($00008000);
|
||
GPIO_MODER_MODER8 = longword($00030000);
|
||
GPIO_MODER_MODER8_0 = longword($00010000);
|
||
GPIO_MODER_MODER8_1 = longword($00020000);
|
||
GPIO_MODER_MODER9 = longword($000C0000);
|
||
GPIO_MODER_MODER9_0 = longword($00040000);
|
||
GPIO_MODER_MODER9_1 = longword($00080000);
|
||
GPIO_MODER_MODER10 = longword($00300000);
|
||
GPIO_MODER_MODER10_0 = longword($00100000);
|
||
GPIO_MODER_MODER10_1 = longword($00200000);
|
||
GPIO_MODER_MODER11 = longword($00C00000);
|
||
GPIO_MODER_MODER11_0 = longword($00400000);
|
||
GPIO_MODER_MODER11_1 = longword($00800000);
|
||
GPIO_MODER_MODER12 = longword($03000000);
|
||
GPIO_MODER_MODER12_0 = longword($01000000);
|
||
GPIO_MODER_MODER12_1 = longword($02000000);
|
||
GPIO_MODER_MODER13 = longword($0C000000);
|
||
GPIO_MODER_MODER13_0 = longword($04000000);
|
||
GPIO_MODER_MODER13_1 = longword($08000000);
|
||
GPIO_MODER_MODER14 = longword($30000000);
|
||
GPIO_MODER_MODER14_0 = longword($10000000);
|
||
GPIO_MODER_MODER14_1 = longword($20000000);
|
||
GPIO_MODER_MODER15 = longword($C0000000);
|
||
GPIO_MODER_MODER15_0 = longword($40000000);
|
||
GPIO_MODER_MODER15_1 = longword($80000000);
|
||
|
||
//***************** Bit definition for GPIO_OTYPER register ****************
|
||
GPIO_OTYPER_OT_0 = longword($00000001);
|
||
GPIO_OTYPER_OT_1 = longword($00000002);
|
||
GPIO_OTYPER_OT_2 = longword($00000004);
|
||
GPIO_OTYPER_OT_3 = longword($00000008);
|
||
GPIO_OTYPER_OT_4 = longword($00000010);
|
||
GPIO_OTYPER_OT_5 = longword($00000020);
|
||
GPIO_OTYPER_OT_6 = longword($00000040);
|
||
GPIO_OTYPER_OT_7 = longword($00000080);
|
||
GPIO_OTYPER_OT_8 = longword($00000100);
|
||
GPIO_OTYPER_OT_9 = longword($00000200);
|
||
GPIO_OTYPER_OT_10 = longword($00000400);
|
||
GPIO_OTYPER_OT_11 = longword($00000800);
|
||
GPIO_OTYPER_OT_12 = longword($00001000);
|
||
GPIO_OTYPER_OT_13 = longword($00002000);
|
||
GPIO_OTYPER_OT_14 = longword($00004000);
|
||
GPIO_OTYPER_OT_15 = longword($00008000);
|
||
|
||
//*************** Bit definition for GPIO_OSPEEDR register *****************
|
||
GPIO_OSPEEDER_OSPEEDR0 = longword($00000003);
|
||
GPIO_OSPEEDER_OSPEEDR0_0 = longword($00000001);
|
||
GPIO_OSPEEDER_OSPEEDR0_1 = longword($00000002);
|
||
GPIO_OSPEEDER_OSPEEDR1 = longword($0000000C);
|
||
GPIO_OSPEEDER_OSPEEDR1_0 = longword($00000004);
|
||
GPIO_OSPEEDER_OSPEEDR1_1 = longword($00000008);
|
||
GPIO_OSPEEDER_OSPEEDR2 = longword($00000030);
|
||
GPIO_OSPEEDER_OSPEEDR2_0 = longword($00000010);
|
||
GPIO_OSPEEDER_OSPEEDR2_1 = longword($00000020);
|
||
GPIO_OSPEEDER_OSPEEDR3 = longword($000000C0);
|
||
GPIO_OSPEEDER_OSPEEDR3_0 = longword($00000040);
|
||
GPIO_OSPEEDER_OSPEEDR3_1 = longword($00000080);
|
||
GPIO_OSPEEDER_OSPEEDR4 = longword($00000300);
|
||
GPIO_OSPEEDER_OSPEEDR4_0 = longword($00000100);
|
||
GPIO_OSPEEDER_OSPEEDR4_1 = longword($00000200);
|
||
GPIO_OSPEEDER_OSPEEDR5 = longword($00000C00);
|
||
GPIO_OSPEEDER_OSPEEDR5_0 = longword($00000400);
|
||
GPIO_OSPEEDER_OSPEEDR5_1 = longword($00000800);
|
||
GPIO_OSPEEDER_OSPEEDR6 = longword($00003000);
|
||
GPIO_OSPEEDER_OSPEEDR6_0 = longword($00001000);
|
||
GPIO_OSPEEDER_OSPEEDR6_1 = longword($00002000);
|
||
GPIO_OSPEEDER_OSPEEDR7 = longword($0000C000);
|
||
GPIO_OSPEEDER_OSPEEDR7_0 = longword($00004000);
|
||
GPIO_OSPEEDER_OSPEEDR7_1 = longword($00008000);
|
||
GPIO_OSPEEDER_OSPEEDR8 = longword($00030000);
|
||
GPIO_OSPEEDER_OSPEEDR8_0 = longword($00010000);
|
||
GPIO_OSPEEDER_OSPEEDR8_1 = longword($00020000);
|
||
GPIO_OSPEEDER_OSPEEDR9 = longword($000C0000);
|
||
GPIO_OSPEEDER_OSPEEDR9_0 = longword($00040000);
|
||
GPIO_OSPEEDER_OSPEEDR9_1 = longword($00080000);
|
||
GPIO_OSPEEDER_OSPEEDR10 = longword($00300000);
|
||
GPIO_OSPEEDER_OSPEEDR10_0 = longword($00100000);
|
||
GPIO_OSPEEDER_OSPEEDR10_1 = longword($00200000);
|
||
GPIO_OSPEEDER_OSPEEDR11 = longword($00C00000);
|
||
GPIO_OSPEEDER_OSPEEDR11_0 = longword($00400000);
|
||
GPIO_OSPEEDER_OSPEEDR11_1 = longword($00800000);
|
||
GPIO_OSPEEDER_OSPEEDR12 = longword($03000000);
|
||
GPIO_OSPEEDER_OSPEEDR12_0 = longword($01000000);
|
||
GPIO_OSPEEDER_OSPEEDR12_1 = longword($02000000);
|
||
GPIO_OSPEEDER_OSPEEDR13 = longword($0C000000);
|
||
GPIO_OSPEEDER_OSPEEDR13_0 = longword($04000000);
|
||
GPIO_OSPEEDER_OSPEEDR13_1 = longword($08000000);
|
||
GPIO_OSPEEDER_OSPEEDR14 = longword($30000000);
|
||
GPIO_OSPEEDER_OSPEEDR14_0 = longword($10000000);
|
||
GPIO_OSPEEDER_OSPEEDR14_1 = longword($20000000);
|
||
GPIO_OSPEEDER_OSPEEDR15 = longword($C0000000);
|
||
GPIO_OSPEEDER_OSPEEDR15_0 = longword($40000000);
|
||
GPIO_OSPEEDER_OSPEEDR15_1 = longword($80000000);
|
||
|
||
//****************** Bit definition for GPIO_PUPDR register *****************
|
||
GPIO_PUPDR_PUPDR0 = longword($00000003);
|
||
GPIO_PUPDR_PUPDR0_0 = longword($00000001);
|
||
GPIO_PUPDR_PUPDR0_1 = longword($00000002);
|
||
GPIO_PUPDR_PUPDR1 = longword($0000000C);
|
||
GPIO_PUPDR_PUPDR1_0 = longword($00000004);
|
||
GPIO_PUPDR_PUPDR1_1 = longword($00000008);
|
||
GPIO_PUPDR_PUPDR2 = longword($00000030);
|
||
GPIO_PUPDR_PUPDR2_0 = longword($00000010);
|
||
GPIO_PUPDR_PUPDR2_1 = longword($00000020);
|
||
GPIO_PUPDR_PUPDR3 = longword($000000C0);
|
||
GPIO_PUPDR_PUPDR3_0 = longword($00000040);
|
||
GPIO_PUPDR_PUPDR3_1 = longword($00000080);
|
||
GPIO_PUPDR_PUPDR4 = longword($00000300);
|
||
GPIO_PUPDR_PUPDR4_0 = longword($00000100);
|
||
GPIO_PUPDR_PUPDR4_1 = longword($00000200);
|
||
GPIO_PUPDR_PUPDR5 = longword($00000C00);
|
||
GPIO_PUPDR_PUPDR5_0 = longword($00000400);
|
||
GPIO_PUPDR_PUPDR5_1 = longword($00000800);
|
||
GPIO_PUPDR_PUPDR6 = longword($00003000);
|
||
GPIO_PUPDR_PUPDR6_0 = longword($00001000);
|
||
GPIO_PUPDR_PUPDR6_1 = longword($00002000);
|
||
GPIO_PUPDR_PUPDR7 = longword($0000C000);
|
||
GPIO_PUPDR_PUPDR7_0 = longword($00004000);
|
||
GPIO_PUPDR_PUPDR7_1 = longword($00008000);
|
||
GPIO_PUPDR_PUPDR8 = longword($00030000);
|
||
GPIO_PUPDR_PUPDR8_0 = longword($00010000);
|
||
GPIO_PUPDR_PUPDR8_1 = longword($00020000);
|
||
GPIO_PUPDR_PUPDR9 = longword($000C0000);
|
||
GPIO_PUPDR_PUPDR9_0 = longword($00040000);
|
||
GPIO_PUPDR_PUPDR9_1 = longword($00080000);
|
||
GPIO_PUPDR_PUPDR10 = longword($00300000);
|
||
GPIO_PUPDR_PUPDR10_0 = longword($00100000);
|
||
GPIO_PUPDR_PUPDR10_1 = longword($00200000);
|
||
GPIO_PUPDR_PUPDR11 = longword($00C00000);
|
||
GPIO_PUPDR_PUPDR11_0 = longword($00400000);
|
||
GPIO_PUPDR_PUPDR11_1 = longword($00800000);
|
||
GPIO_PUPDR_PUPDR12 = longword($03000000);
|
||
GPIO_PUPDR_PUPDR12_0 = longword($01000000);
|
||
GPIO_PUPDR_PUPDR12_1 = longword($02000000);
|
||
GPIO_PUPDR_PUPDR13 = longword($0C000000);
|
||
GPIO_PUPDR_PUPDR13_0 = longword($04000000);
|
||
GPIO_PUPDR_PUPDR13_1 = longword($08000000);
|
||
GPIO_PUPDR_PUPDR14 = longword($30000000);
|
||
GPIO_PUPDR_PUPDR14_0 = longword($10000000);
|
||
GPIO_PUPDR_PUPDR14_1 = longword($20000000);
|
||
GPIO_PUPDR_PUPDR15 = longword($C0000000);
|
||
GPIO_PUPDR_PUPDR15_0 = longword($40000000);
|
||
GPIO_PUPDR_PUPDR15_1 = longword($80000000);
|
||
|
||
//****************** Bit definition for GPIO_IDR register ******************
|
||
GPIO_IDR_0 = longword($00000001);
|
||
GPIO_IDR_1 = longword($00000002);
|
||
GPIO_IDR_2 = longword($00000004);
|
||
GPIO_IDR_3 = longword($00000008);
|
||
GPIO_IDR_4 = longword($00000010);
|
||
GPIO_IDR_5 = longword($00000020);
|
||
GPIO_IDR_6 = longword($00000040);
|
||
GPIO_IDR_7 = longword($00000080);
|
||
GPIO_IDR_8 = longword($00000100);
|
||
GPIO_IDR_9 = longword($00000200);
|
||
GPIO_IDR_10 = longword($00000400);
|
||
GPIO_IDR_11 = longword($00000800);
|
||
GPIO_IDR_12 = longword($00001000);
|
||
GPIO_IDR_13 = longword($00002000);
|
||
GPIO_IDR_14 = longword($00004000);
|
||
GPIO_IDR_15 = longword($00008000);
|
||
|
||
//***************** Bit definition for GPIO_ODR register *******************
|
||
GPIO_ODR_0 = longword($00000001);
|
||
GPIO_ODR_1 = longword($00000002);
|
||
GPIO_ODR_2 = longword($00000004);
|
||
GPIO_ODR_3 = longword($00000008);
|
||
GPIO_ODR_4 = longword($00000010);
|
||
GPIO_ODR_5 = longword($00000020);
|
||
GPIO_ODR_6 = longword($00000040);
|
||
GPIO_ODR_7 = longword($00000080);
|
||
GPIO_ODR_8 = longword($00000100);
|
||
GPIO_ODR_9 = longword($00000200);
|
||
GPIO_ODR_10 = longword($00000400);
|
||
GPIO_ODR_11 = longword($00000800);
|
||
GPIO_ODR_12 = longword($00001000);
|
||
GPIO_ODR_13 = longword($00002000);
|
||
GPIO_ODR_14 = longword($00004000);
|
||
GPIO_ODR_15 = longword($00008000);
|
||
|
||
//***************** Bit definition for GPIO_BSRR register *******************
|
||
GPIO_BSRR_BS_0 = longword($00000001);
|
||
GPIO_BSRR_BS_1 = longword($00000002);
|
||
GPIO_BSRR_BS_2 = longword($00000004);
|
||
GPIO_BSRR_BS_3 = longword($00000008);
|
||
GPIO_BSRR_BS_4 = longword($00000010);
|
||
GPIO_BSRR_BS_5 = longword($00000020);
|
||
GPIO_BSRR_BS_6 = longword($00000040);
|
||
GPIO_BSRR_BS_7 = longword($00000080);
|
||
GPIO_BSRR_BS_8 = longword($00000100);
|
||
GPIO_BSRR_BS_9 = longword($00000200);
|
||
GPIO_BSRR_BS_10 = longword($00000400);
|
||
GPIO_BSRR_BS_11 = longword($00000800);
|
||
GPIO_BSRR_BS_12 = longword($00001000);
|
||
GPIO_BSRR_BS_13 = longword($00002000);
|
||
GPIO_BSRR_BS_14 = longword($00004000);
|
||
GPIO_BSRR_BS_15 = longword($00008000);
|
||
GPIO_BSRR_BR_0 = longword($00010000);
|
||
GPIO_BSRR_BR_1 = longword($00020000);
|
||
GPIO_BSRR_BR_2 = longword($00040000);
|
||
GPIO_BSRR_BR_3 = longword($00080000);
|
||
GPIO_BSRR_BR_4 = longword($00100000);
|
||
GPIO_BSRR_BR_5 = longword($00200000);
|
||
GPIO_BSRR_BR_6 = longword($00400000);
|
||
GPIO_BSRR_BR_7 = longword($00800000);
|
||
GPIO_BSRR_BR_8 = longword($01000000);
|
||
GPIO_BSRR_BR_9 = longword($02000000);
|
||
GPIO_BSRR_BR_10 = longword($04000000);
|
||
GPIO_BSRR_BR_11 = longword($08000000);
|
||
GPIO_BSRR_BR_12 = longword($10000000);
|
||
GPIO_BSRR_BR_13 = longword($20000000);
|
||
GPIO_BSRR_BR_14 = longword($40000000);
|
||
GPIO_BSRR_BR_15 = longword($80000000);
|
||
|
||
//***************** Bit definition for GPIO_LCKR register *******************
|
||
GPIO_LCKR_LCK0 = longword($00000001);
|
||
GPIO_LCKR_LCK1 = longword($00000002);
|
||
GPIO_LCKR_LCK2 = longword($00000004);
|
||
GPIO_LCKR_LCK3 = longword($00000008);
|
||
GPIO_LCKR_LCK4 = longword($00000010);
|
||
GPIO_LCKR_LCK5 = longword($00000020);
|
||
GPIO_LCKR_LCK6 = longword($00000040);
|
||
GPIO_LCKR_LCK7 = longword($00000080);
|
||
GPIO_LCKR_LCK8 = longword($00000100);
|
||
GPIO_LCKR_LCK9 = longword($00000200);
|
||
GPIO_LCKR_LCK10 = longword($00000400);
|
||
GPIO_LCKR_LCK11 = longword($00000800);
|
||
GPIO_LCKR_LCK12 = longword($00001000);
|
||
GPIO_LCKR_LCK13 = longword($00002000);
|
||
GPIO_LCKR_LCK14 = longword($00004000);
|
||
GPIO_LCKR_LCK15 = longword($00008000);
|
||
GPIO_LCKR_LCKK = longword($00010000);
|
||
|
||
//***************** Bit definition for GPIO_AFRL register *******************
|
||
GPIO_AFRL_AFRL0 = longword($0000000F);
|
||
GPIO_AFRL_AFRL1 = longword($000000F0);
|
||
GPIO_AFRL_AFRL2 = longword($00000F00);
|
||
GPIO_AFRL_AFRL3 = longword($0000F000);
|
||
GPIO_AFRL_AFRL4 = longword($000F0000);
|
||
GPIO_AFRL_AFRL5 = longword($00F00000);
|
||
GPIO_AFRL_AFRL6 = longword($0F000000);
|
||
GPIO_AFRL_AFRL7 = longword($F0000000);
|
||
|
||
//***************** Bit definition for GPIO_AFRH register *******************
|
||
GPIO_AFRH_AFRH0 = longword($0000000F);
|
||
GPIO_AFRH_AFRH1 = longword($000000F0);
|
||
GPIO_AFRH_AFRH2 = longword($00000F00);
|
||
GPIO_AFRH_AFRH3 = longword($0000F000);
|
||
GPIO_AFRH_AFRH4 = longword($000F0000);
|
||
GPIO_AFRH_AFRH5 = longword($00F00000);
|
||
GPIO_AFRH_AFRH6 = longword($0F000000);
|
||
GPIO_AFRH_AFRH7 = longword($F0000000);
|
||
|
||
//***************** Bit definition for GPIO_BRR register ********************
|
||
GPIO_BRR_BR_0 = longword($00000001);
|
||
GPIO_BRR_BR_1 = longword($00000002);
|
||
GPIO_BRR_BR_2 = longword($00000004);
|
||
GPIO_BRR_BR_3 = longword($00000008);
|
||
GPIO_BRR_BR_4 = longword($00000010);
|
||
GPIO_BRR_BR_5 = longword($00000020);
|
||
GPIO_BRR_BR_6 = longword($00000040);
|
||
GPIO_BRR_BR_7 = longword($00000080);
|
||
GPIO_BRR_BR_8 = longword($00000100);
|
||
GPIO_BRR_BR_9 = longword($00000200);
|
||
GPIO_BRR_BR_10 = longword($00000400);
|
||
GPIO_BRR_BR_11 = longword($00000800);
|
||
GPIO_BRR_BR_12 = longword($00001000);
|
||
GPIO_BRR_BR_13 = longword($00002000);
|
||
GPIO_BRR_BR_14 = longword($00004000);
|
||
GPIO_BRR_BR_15 = longword($00008000);
|
||
|
||
//****************************************************************************
|
||
|
||
//Inter-integrated Circuit Interface (I2C)
|
||
|
||
//****************************************************************************
|
||
|
||
//****************** Bit definition for I2C_CR1 register ******************
|
||
I2C_CR1_PE = longword($00000001); //Peripheral enable
|
||
I2C_CR1_TXIE = longword($00000002); //TX interrupt enable
|
||
I2C_CR1_RXIE = longword($00000004); //RX interrupt enable
|
||
I2C_CR1_ADDRIE = longword($00000008); //Address match interrupt enable
|
||
I2C_CR1_NACKIE = longword($00000010); //NACK received interrupt enable
|
||
I2C_CR1_STOPIE = longword($00000020); //STOP detection interrupt enable
|
||
I2C_CR1_TCIE = longword($00000040); //Transfer complete interrupt enable
|
||
I2C_CR1_ERRIE = longword($00000080); //Errors interrupt enable
|
||
I2C_CR1_DFN = longword($00000F00); //Digital noise filter
|
||
I2C_CR1_ANFOFF = longword($00001000); //Analog noise filter OFF
|
||
I2C_CR1_SWRST = longword($00002000); //Software reset
|
||
I2C_CR1_TXDMAEN = longword($00004000); //DMA transmission requests enable
|
||
I2C_CR1_RXDMAEN = longword($00008000); //DMA reception requests enable
|
||
I2C_CR1_SBC = longword($00010000); //Slave byte control
|
||
I2C_CR1_NOSTRETCH = longword($00020000); //Clock stretching disable
|
||
I2C_CR1_WUPEN = longword($00040000); //Wakeup from STOP enable
|
||
I2C_CR1_GCEN = longword($00080000); //General call enable
|
||
I2C_CR1_SMBHEN = longword($00100000); //SMBus host address enable
|
||
I2C_CR1_SMBDEN = longword($00200000); //SMBus device default address enable
|
||
I2C_CR1_ALERTEN = longword($00400000); //SMBus alert enable
|
||
I2C_CR1_PECEN = longword($00800000); //PEC enable
|
||
|
||
//***************** Bit definition for I2C_CR2 register *******************
|
||
I2C_CR2_SADD = longword($000003FF); //Slave address (master mode)
|
||
I2C_CR2_RD_WRN = longword($00000400); //Transfer direction (master mode)
|
||
I2C_CR2_ADD10 = longword($00000800); //10-bit addressing mode (master mode)
|
||
I2C_CR2_HEAD10R = longword($00001000); //10-bit address header only read direction (master mode)
|
||
I2C_CR2_START = longword($00002000); //START generation
|
||
I2C_CR2_STOP = longword($00004000); //STOP generation (master mode)
|
||
I2C_CR2_NACK = longword($00008000); //NACK generation (slave mode)
|
||
I2C_CR2_NBYTES = longword($00FF0000); //Number of bytes
|
||
I2C_CR2_RELOAD = longword($01000000); //NBYTES reload mode
|
||
I2C_CR2_AUTOEND = longword($02000000); //Automatic end mode (master mode)
|
||
I2C_CR2_PECBYTE = longword($04000000); //Packet error checking byte
|
||
|
||
//****************** Bit definition for I2C_OAR1 register *****************
|
||
I2C_OAR1_OA1 = longword($000003FF); //Interface own address 1
|
||
I2C_OAR1_OA1MODE = longword($00000400); //Own address 1 10-bit mode
|
||
I2C_OAR1_OA1EN = longword($00008000); //Own address 1 enable
|
||
|
||
//****************** Bit definition for I2C_OAR2 register *****************
|
||
I2C_OAR2_OA2 = longword($000000FE); //Interface own address 2
|
||
I2C_OAR2_OA2MSK = longword($00000700); //Own address 2 masks
|
||
I2C_OAR2_OA2EN = longword($00008000); //Own address 2 enable
|
||
|
||
//****************** Bit definition for I2C_TIMINGR register ******************
|
||
I2C_TIMINGR_SCLL = longword($000000FF); //SCL low period (master mode)
|
||
I2C_TIMINGR_SCLH = longword($0000FF00); //SCL high period (master mode)
|
||
I2C_TIMINGR_SDADEL = longword($000F0000); //Data hold time
|
||
I2C_TIMINGR_SCLDEL = longword($00F00000); //Data setup time
|
||
I2C_TIMINGR_PRESC = longword($F0000000); //Timings prescaler
|
||
|
||
//****************** Bit definition for I2C_TIMEOUTR register ******************
|
||
I2C_TIMEOUTR_TIMEOUTA = longword($00000FFF); //Bus timeout A
|
||
I2C_TIMEOUTR_TIDLE = longword($00001000); //Idle clock timeout detection
|
||
I2C_TIMEOUTR_TIMOUTEN = longword($00008000); //Clock timeout enable
|
||
I2C_TIMEOUTR_TIMEOUTB = longword($0FFF0000); //Bus timeout B
|
||
I2C_TIMEOUTR_TEXTEN = longword($80000000); //Extended clock timeout enable
|
||
|
||
//***************** Bit definition for I2C_ISR register ********************
|
||
I2C_ISR_TXE = longword($00000001); //Transmit data register empty
|
||
I2C_ISR_TXIS = longword($00000002); //Transmit interrupt status
|
||
I2C_ISR_RXNE = longword($00000004); //Receive data register not empty
|
||
I2C_ISR_ADDR = longword($00000008); //Address matched (slave mode)
|
||
I2C_ISR_NACKF = longword($00000010); //NACK received flag
|
||
I2C_ISR_STOPF = longword($00000020); //STOP detection flag
|
||
I2C_ISR_TC = longword($00000040); //Transfer complete (master mode)
|
||
I2C_ISR_TCR = longword($00000080); //Transfer complete reload
|
||
I2C_ISR_BERR = longword($00000100); //Bus error
|
||
I2C_ISR_ARLO = longword($00000200); //Arbitration lost
|
||
I2C_ISR_OVR = longword($00000400); //Overrun/Underrun
|
||
I2C_ISR_PECERR = longword($00000800); //PEC error in reception
|
||
I2C_ISR_TIMEOUT = longword($00001000); //Timeout or Tlow detection flag
|
||
I2C_ISR_ALERT = longword($00002000); //SMBus alert
|
||
I2C_ISR_BUSY = longword($00008000); //Bus busy
|
||
I2C_ISR_DIR = longword($00010000); //Transfer direction (slave mode)
|
||
I2C_ISR_ADDCODE = longword($00FE0000); //Address match code (slave mode)
|
||
|
||
//***************** Bit definition for I2C_ICR register ********************
|
||
I2C_ICR_ADDRCF = longword($00000008); //Address matched clear flag
|
||
I2C_ICR_NACKCF = longword($00000010); //NACK clear flag
|
||
I2C_ICR_STOPCF = longword($00000020); //STOP detection clear flag
|
||
I2C_ICR_BERRCF = longword($00000100); //Bus error clear flag
|
||
I2C_ICR_ARLOCF = longword($00000200); //Arbitration lost clear flag
|
||
I2C_ICR_OVRCF = longword($00000400); //Overrun/Underrun clear flag
|
||
I2C_ICR_PECCF = longword($00000800); //PAC error clear flag
|
||
I2C_ICR_TIMOUTCF = longword($00001000); //Timeout clear flag
|
||
I2C_ICR_ALERTCF = longword($00002000); //Alert clear flag
|
||
|
||
//***************** Bit definition for I2C_PECR register ********************
|
||
I2C_PECR_PEC = longword($000000FF); //PEC register
|
||
|
||
//***************** Bit definition for I2C_RXDR register ********************
|
||
I2C_RXDR_RXDATA = longword($000000FF); //8-bit receive data
|
||
|
||
//***************** Bit definition for I2C_TXDR register ********************
|
||
I2C_TXDR_TXDATA = longword($000000FF); //8-bit transmit data
|
||
|
||
//****************************************************************************
|
||
|
||
//Independent WATCHDOG (IWDG)
|
||
|
||
//****************************************************************************
|
||
//****************** Bit definition for IWDG_KR register *******************
|
||
IWDG_KR_KEY = longword($FFFF); //Key value (write only, read 0000h)
|
||
|
||
//****************** Bit definition for IWDG_PR register *******************
|
||
IWDG_PR_PR = longword($07); //PR[2:0] (Prescaler divider)
|
||
IWDG_PR_PR_0 = longword($01); //Bit 0
|
||
IWDG_PR_PR_1 = longword($02); //Bit 1
|
||
IWDG_PR_PR_2 = longword($04); //Bit 2
|
||
|
||
//****************** Bit definition for IWDG_RLR register ******************
|
||
IWDG_RLR_RL = longword($0FFF); //Watchdog counter reload value
|
||
|
||
//****************** Bit definition for IWDG_SR register *******************
|
||
IWDG_SR_PVU = longword($01); //Watchdog prescaler value update
|
||
IWDG_SR_RVU = longword($02); //Watchdog counter reload value update
|
||
IWDG_SR_WVU = longword($04); //Watchdog counter window value update
|
||
|
||
//****************** Bit definition for IWDG_KR register *******************
|
||
IWDG_WINR_WIN = longword($0FFF); //Watchdog counter window value
|
||
|
||
//****************************************************************************
|
||
|
||
//Power Control (PWR)
|
||
|
||
//****************************************************************************
|
||
|
||
//******************* Bit definition for PWR_CR register *******************
|
||
PWR_CR_LPSDSR = longword($0001); //Low-power deepsleep/sleep/low power run
|
||
PWR_CR_PDDS = longword($0002); //Power Down Deepsleep
|
||
PWR_CR_CWUF = longword($0004); //Clear Wakeup Flag
|
||
PWR_CR_CSBF = longword($0008); //Clear Standby Flag
|
||
PWR_CR_PVDE = longword($0010); //Power Voltage Detector Enable
|
||
|
||
PWR_CR_PLS = longword($00E0); //PLS[2:0] bits (PVD Level Selection)
|
||
PWR_CR_PLS_0 = longword($0020); //Bit 0
|
||
PWR_CR_PLS_1 = longword($0040); //Bit 1
|
||
PWR_CR_PLS_2 = longword($0080); //Bit 2
|
||
|
||
//PVD level configuration
|
||
PWR_CR_PLS_LEV0 = longword($0000); //PVD level 0
|
||
PWR_CR_PLS_LEV1 = longword($0020); //PVD level 1
|
||
PWR_CR_PLS_LEV2 = longword($0040); //PVD level 2
|
||
PWR_CR_PLS_LEV3 = longword($0060); //PVD level 3
|
||
PWR_CR_PLS_LEV4 = longword($0080); //PVD level 4
|
||
PWR_CR_PLS_LEV5 = longword($00A0); //PVD level 5
|
||
PWR_CR_PLS_LEV6 = longword($00C0); //PVD level 6
|
||
PWR_CR_PLS_LEV7 = longword($00E0); //PVD level 7
|
||
|
||
PWR_CR_DBP = longword($0100); //Disable Backup Domain write protection
|
||
|
||
//****************** Bit definition for PWR_CSR register *******************
|
||
PWR_CSR_WUF = longword($0001); //Wakeup Flag
|
||
PWR_CSR_SBF = longword($0002); //Standby Flag
|
||
PWR_CSR_PVDO = longword($0004); //PVD Output
|
||
PWR_CSR_VREFINTRDYF = longword($0008); //Internal voltage reference (VREFINT) ready flag
|
||
|
||
PWR_CSR_EWUP1 = longword($0100); //Enable WKUP pin 1
|
||
PWR_CSR_EWUP2 = longword($0200); //Enable WKUP pin 2
|
||
|
||
//****************************************************************************
|
||
|
||
//Reset and Clock Control
|
||
|
||
//****************************************************************************
|
||
|
||
//******************* Bit definition for RCC_CR register *******************
|
||
RCC_CR_HSION = longword($00000001); //Internal High Speed clock enable
|
||
RCC_CR_HSIRDY = longword($00000002); //Internal High Speed clock ready flag
|
||
RCC_CR_HSITRIM = longword($000000F8); //Internal High Speed clock trimming
|
||
RCC_CR_HSICAL = longword($0000FF00); //Internal High Speed clock Calibration
|
||
RCC_CR_HSEON = longword($00010000); //External High Speed clock enable
|
||
RCC_CR_HSERDY = longword($00020000); //External High Speed clock ready flag
|
||
RCC_CR_HSEBYP = longword($00040000); //External High Speed clock Bypass
|
||
RCC_CR_CSSON = longword($00080000); //Clock Security System enable
|
||
RCC_CR_PLLON = longword($01000000); //PLL enable
|
||
RCC_CR_PLLRDY = longword($02000000); //PLL clock ready flag
|
||
|
||
//****************** Bit definition for RCC_CFGR register ******************
|
||
//SW configuration
|
||
RCC_CFGR_SW = longword($00000003); //SW[1:0] bits (System clock Switch)
|
||
RCC_CFGR_SW_0 = longword($00000001); //Bit 0
|
||
RCC_CFGR_SW_1 = longword($00000002); //Bit 1
|
||
|
||
RCC_CFGR_SW_HSI = longword($00000000); //HSI selected as system clock
|
||
RCC_CFGR_SW_HSE = longword($00000001); //HSE selected as system clock
|
||
RCC_CFGR_SW_PLL = longword($00000002); //PLL selected as system clock
|
||
|
||
//SWS configuration
|
||
RCC_CFGR_SWS = longword($0000000C); //SWS[1:0] bits (System Clock Switch Status)
|
||
RCC_CFGR_SWS_0 = longword($00000004); //Bit 0
|
||
RCC_CFGR_SWS_1 = longword($00000008); //Bit 1
|
||
|
||
RCC_CFGR_SWS_HSI = longword($00000000); //HSI oscillator used as system clock
|
||
RCC_CFGR_SWS_HSE = longword($00000004); //HSE oscillator used as system clock
|
||
RCC_CFGR_SWS_PLL = longword($00000008); //PLL used as system clock
|
||
|
||
//HPRE configuration
|
||
RCC_CFGR_HPRE = longword($000000F0); //HPRE[3:0] bits (AHB prescaler)
|
||
RCC_CFGR_HPRE_0 = longword($00000010); //Bit 0
|
||
RCC_CFGR_HPRE_1 = longword($00000020); //Bit 1
|
||
RCC_CFGR_HPRE_2 = longword($00000040); //Bit 2
|
||
RCC_CFGR_HPRE_3 = longword($00000080); //Bit 3
|
||
|
||
RCC_CFGR_HPRE_DIV1 = longword($00000000); //SYSCLK not divided
|
||
RCC_CFGR_HPRE_DIV2 = longword($00000080); //SYSCLK divided by 2
|
||
RCC_CFGR_HPRE_DIV4 = longword($00000090); //SYSCLK divided by 4
|
||
RCC_CFGR_HPRE_DIV8 = longword($000000A0); //SYSCLK divided by 8
|
||
RCC_CFGR_HPRE_DIV16 = longword($000000B0); //SYSCLK divided by 16
|
||
RCC_CFGR_HPRE_DIV64 = longword($000000C0); //SYSCLK divided by 64
|
||
RCC_CFGR_HPRE_DIV128 = longword($000000D0); //SYSCLK divided by 128
|
||
RCC_CFGR_HPRE_DIV256 = longword($000000E0); //SYSCLK divided by 256
|
||
RCC_CFGR_HPRE_DIV512 = longword($000000F0); //SYSCLK divided by 512
|
||
|
||
//PPRE configuration
|
||
RCC_CFGR_PPRE = longword($00000700); //PRE[2:0] bits (APB prescaler)
|
||
RCC_CFGR_PPRE_0 = longword($00000100); //Bit 0
|
||
RCC_CFGR_PPRE_1 = longword($00000200); //Bit 1
|
||
RCC_CFGR_PPRE_2 = longword($00000400); //Bit 2
|
||
|
||
RCC_CFGR_PPRE_DIV1 = longword($00000000); //HCLK not divided
|
||
RCC_CFGR_PPRE_DIV2 = longword($00000400); //HCLK divided by 2
|
||
RCC_CFGR_PPRE_DIV4 = longword($00000500); //HCLK divided by 4
|
||
RCC_CFGR_PPRE_DIV8 = longword($00000600); //HCLK divided by 8
|
||
RCC_CFGR_PPRE_DIV16 = longword($00000700); //HCLK divided by 16
|
||
|
||
//ADCPPRE configuration
|
||
RCC_CFGR_ADCPRE = longword($00004000); //ADCPRE bit (ADC prescaler)
|
||
|
||
RCC_CFGR_ADCPRE_DIV2 = longword($00000000); //PCLK divided by 2
|
||
RCC_CFGR_ADCPRE_DIV4 = longword($00004000); //PCLK divided by 4
|
||
|
||
RCC_CFGR_PLLSRC = longword($00010000); //PLL entry clock source
|
||
|
||
RCC_CFGR_PLLXTPRE = longword($00020000); //HSE divider for PLL entry
|
||
|
||
//PLLMUL configuration
|
||
RCC_CFGR_PLLMULL = longword($003C0000); //PLLMUL[3:0] bits (PLL multiplication factor)
|
||
RCC_CFGR_PLLMULL_0 = longword($00040000); //Bit 0
|
||
RCC_CFGR_PLLMULL_1 = longword($00080000); //Bit 1
|
||
RCC_CFGR_PLLMULL_2 = longword($00100000); //Bit 2
|
||
RCC_CFGR_PLLMULL_3 = longword($00200000); //Bit 3
|
||
|
||
RCC_CFGR_PLLSRC_HSI_Div2 = longword($00000000); //HSI clock divided by 2 selected as PLL entry clock source
|
||
RCC_CFGR_PLLSRC_PREDIV1 = longword($00010000); //PREDIV1 clock selected as PLL entry clock source
|
||
|
||
RCC_CFGR_PLLXTPRE_PREDIV1 = longword($00000000); //PREDIV1 clock not divided for PLL entry
|
||
RCC_CFGR_PLLXTPRE_PREDIV1_Div2 = longword($00020000); //PREDIV1 clock divided by 2 for PLL entry
|
||
|
||
RCC_CFGR_PLLMULL2 = longword($00000000); //PLL input clock*2
|
||
RCC_CFGR_PLLMULL3 = longword($00040000); //PLL input clock*3
|
||
RCC_CFGR_PLLMULL4 = longword($00080000); //PLL input clock*4
|
||
RCC_CFGR_PLLMULL5 = longword($000C0000); //PLL input clock*5
|
||
RCC_CFGR_PLLMULL6 = longword($00100000); //PLL input clock*6
|
||
RCC_CFGR_PLLMULL7 = longword($00140000); //PLL input clock*7
|
||
RCC_CFGR_PLLMULL8 = longword($00180000); //PLL input clock*8
|
||
RCC_CFGR_PLLMULL9 = longword($001C0000); //PLL input clock*9
|
||
RCC_CFGR_PLLMULL10 = longword($00200000); //PLL input clock10
|
||
RCC_CFGR_PLLMULL11 = longword($00240000); //PLL input clock*11
|
||
RCC_CFGR_PLLMULL12 = longword($00280000); //PLL input clock*12
|
||
RCC_CFGR_PLLMULL13 = longword($002C0000); //PLL input clock*13
|
||
RCC_CFGR_PLLMULL14 = longword($00300000); //PLL input clock*14
|
||
RCC_CFGR_PLLMULL15 = longword($00340000); //PLL input clock*15
|
||
RCC_CFGR_PLLMULL16 = longword($00380000); //PLL input clock*16
|
||
|
||
//MCO configuration
|
||
RCC_CFGR_MCO = longword($07000000); //MCO[2:0] bits (Microcontroller Clock Output)
|
||
RCC_CFGR_MCO_0 = longword($01000000); //Bit 0
|
||
RCC_CFGR_MCO_1 = longword($02000000); //Bit 1
|
||
RCC_CFGR_MCO_2 = longword($04000000); //Bit 2
|
||
|
||
RCC_CFGR_MCO_NOCLOCK = longword($00000000); //No clock
|
||
RCC_CFGR_MCO_HSI14 = longword($01000000); //HSI14 clock selected as MCO source
|
||
RCC_CFGR_MCO_LSI = longword($02000000); //LSI clock selected as MCO source
|
||
RCC_CFGR_MCO_LSE = longword($03000000); //LSE clock selected as MCO source
|
||
RCC_CFGR_MCO_SYSCLK = longword($04000000); //System clock selected as MCO source
|
||
RCC_CFGR_MCO_HSI = longword($05000000); //HSI clock selected as MCO source
|
||
RCC_CFGR_MCO_HSE = longword($06000000); //HSE clock selected as MCO source
|
||
RCC_CFGR_MCO_PLL = longword($07000000); //PLL clock divided by 2 selected as MCO source
|
||
|
||
//***************** Bit definition for RCC_CIR register *******************
|
||
RCC_CIR_LSIRDYF = longword($00000001); //LSI Ready Interrupt flag
|
||
RCC_CIR_LSERDYF = longword($00000002); //LSE Ready Interrupt flag
|
||
RCC_CIR_HSIRDYF = longword($00000004); //HSI Ready Interrupt flag
|
||
RCC_CIR_HSERDYF = longword($00000008); //HSE Ready Interrupt flag
|
||
RCC_CIR_PLLRDYF = longword($00000010); //PLL Ready Interrupt flag
|
||
RCC_CIR_HSI14RDYF = longword($00000020); //HSI14 Ready Interrupt flag
|
||
RCC_CIR_CSSF = longword($00000080); //Clock Security System Interrupt flag
|
||
RCC_CIR_LSIRDYIE = longword($00000100); //LSI Ready Interrupt Enable
|
||
RCC_CIR_LSERDYIE = longword($00000200); //LSE Ready Interrupt Enable
|
||
RCC_CIR_HSIRDYIE = longword($00000400); //HSI Ready Interrupt Enable
|
||
RCC_CIR_HSERDYIE = longword($00000800); //HSE Ready Interrupt Enable
|
||
RCC_CIR_PLLRDYIE = longword($00001000); //PLL Ready Interrupt Enable
|
||
RCC_CIR_HSI14RDYIE = longword($00002000); //HSI14 Ready Interrupt Enable
|
||
RCC_CIR_LSIRDYC = longword($00010000); //LSI Ready Interrupt Clear
|
||
RCC_CIR_LSERDYC = longword($00020000); //LSE Ready Interrupt Clear
|
||
RCC_CIR_HSIRDYC = longword($00040000); //HSI Ready Interrupt Clear
|
||
RCC_CIR_HSERDYC = longword($00080000); //HSE Ready Interrupt Clear
|
||
RCC_CIR_PLLRDYC = longword($00100000); //PLL Ready Interrupt Clear
|
||
RCC_CIR_HSI14RDYC = longword($00200000); //HSI14 Ready Interrupt Clear
|
||
RCC_CIR_CSSC = longword($00800000); //Clock Security System Interrupt Clear
|
||
|
||
//**************** Bit definition for RCC_APB2RSTR register ****************
|
||
RCC_APB2RSTR_SYSCFGRST = longword($00000001); //SYSCFG clock reset
|
||
RCC_APB2RSTR_ADC1RST = longword($00000200); //ADC1 clock reset
|
||
RCC_APB2RSTR_TIM1RST = longword($00000800); //TIM1 clock reset
|
||
RCC_APB2RSTR_SPI1RST = longword($00001000); //SPI1 clock reset
|
||
RCC_APB2RSTR_USART1RST = longword($00004000); //USART1 clock reset
|
||
RCC_APB2RSTR_TIM15RST = longword($00010000); //TIM15 clock reset
|
||
RCC_APB2RSTR_TIM16RST = longword($00020000); //TIM16 clock reset
|
||
RCC_APB2RSTR_TIM17RST = longword($00040000); //TIM17 clock reset
|
||
RCC_APB2RSTR_DBGMCURST = longword($00400000); //DBGMCU clock reset
|
||
|
||
//**************** Bit definition for RCC_APB1RSTR register ****************
|
||
RCC_APB1RSTR_TIM2RST = longword($00000001); //Timer 2 clock reset
|
||
RCC_APB1RSTR_TIM3RST = longword($00000002); //Timer 3 clock reset
|
||
RCC_APB1RSTR_TIM6RST = longword($00000010); //Timer 6 clock reset
|
||
RCC_APB1RSTR_TIM14RST = longword($00000100); //Timer 14 clock reset
|
||
RCC_APB1RSTR_WWDGRST = longword($00000800); //Window Watchdog clock reset
|
||
RCC_APB1RSTR_SPI2RST = longword($00004000); //SPI2 clock reset
|
||
RCC_APB1RSTR_USART2RST = longword($00020000); //USART 2 clock reset
|
||
RCC_APB1RSTR_I2C1RST = longword($00200000); //I2C 1 clock reset
|
||
RCC_APB1RSTR_I2C2RST = longword($00400000); //I2C 2 clock reset
|
||
RCC_APB1RSTR_PWRRST = longword($10000000); //PWR clock reset
|
||
RCC_APB1RSTR_DACRST = longword($20000000); //DAC clock reset
|
||
RCC_APB1RSTR_CECRST = longword($40000000); //CEC clock reset
|
||
|
||
//***************** Bit definition for RCC_AHBENR register *****************
|
||
RCC_AHBENR_DMA1EN = longword($00000001); //DMA1 clock enable
|
||
RCC_AHBENR_SRAMEN = longword($00000004); //SRAM interface clock enable
|
||
RCC_AHBENR_FLITFEN = longword($00000010); //FLITF clock enable
|
||
RCC_AHBENR_CRCEN = longword($00000040); //CRC clock enable
|
||
RCC_AHBENR_GPIOAEN = longword($00020000); //GPIOA clock enable
|
||
RCC_AHBENR_GPIOBEN = longword($00040000); //GPIOB clock enable
|
||
RCC_AHBENR_GPIOCEN = longword($00080000); //GPIOC clock enable
|
||
RCC_AHBENR_GPIODEN = longword($00100000); //GPIOD clock enable
|
||
RCC_AHBENR_GPIOFEN = longword($00400000); //GPIOF clock enable
|
||
RCC_AHBENR_TSEN = longword($01000000); //TS clock enable
|
||
|
||
//**************** Bit definition for RCC_APB2ENR register *****************
|
||
RCC_APB2ENR_SYSCFGEN = longword($00000001); //SYSCFG clock enable
|
||
RCC_APB2ENR_ADC1EN = longword($00000200); //ADC1 clock enable
|
||
RCC_APB2ENR_TIM1EN = longword($00000800); //TIM1 clock enable
|
||
RCC_APB2ENR_SPI1EN = longword($00001000); //SPI1 clock enable
|
||
RCC_APB2ENR_USART1EN = longword($00004000); //USART1 clock enable
|
||
RCC_APB2ENR_TIM15EN = longword($00010000); //TIM15 clock enable
|
||
RCC_APB2ENR_TIM16EN = longword($00020000); //TIM16 clock enable
|
||
RCC_APB2ENR_TIM17EN = longword($00040000); //TIM17 clock enable
|
||
RCC_APB2ENR_DBGMCUEN = longword($00400000); //DBGMCU clock enable
|
||
|
||
//**************** Bit definition for RCC_APB1ENR register *****************
|
||
RCC_APB1ENR_TIM2EN = longword($00000001); //Timer 2 clock enable
|
||
RCC_APB1ENR_TIM3EN = longword($00000002); //Timer 3 clock enable
|
||
RCC_APB1ENR_TIM6EN = longword($00000010); //Timer 6 clock enable
|
||
RCC_APB1ENR_TIM14EN = longword($00000100); //Timer 14 clock enable
|
||
RCC_APB1ENR_WWDGEN = longword($00000800); //Window Watchdog clock enable
|
||
RCC_APB1ENR_SPI2EN = longword($00004000); //SPI2 clock enable
|
||
RCC_APB1ENR_USART2EN = longword($00020000); //USART2 clock enable
|
||
RCC_APB1ENR_I2C1EN = longword($00200000); //I2C1 clock enable
|
||
RCC_APB1ENR_I2C2EN = longword($00400000); //I2C2 clock enable
|
||
RCC_APB1ENR_PWREN = longword($10000000); //PWR clock enable
|
||
RCC_APB1ENR_DACEN = longword($20000000); //DAC clock enable
|
||
RCC_APB1ENR_CECEN = longword($40000000); //CEC clock enable
|
||
|
||
//****************** Bit definition for RCC_BDCR register ******************
|
||
RCC_BDCR_LSEON = longword($00000001); //External Low Speed oscillator enable
|
||
RCC_BDCR_LSERDY = longword($00000002); //External Low Speed oscillator Ready
|
||
RCC_BDCR_LSEBYP = longword($00000004); //External Low Speed oscillator Bypass
|
||
|
||
RCC_BDCR_LSEDRV = longword($00000018); //LSEDRV[1:0] bits (LSE Osc. drive capability)
|
||
RCC_BDCR_LSEDRV_0 = longword($00000008); //Bit 0
|
||
RCC_BDCR_LSEDRV_1 = longword($00000010); //Bit 1
|
||
|
||
RCC_BDCR_RTCSEL = longword($00000300); //RTCSEL[1:0] bits (RTC clock source selection)
|
||
RCC_BDCR_RTCSEL_0 = longword($00000100); //Bit 0
|
||
RCC_BDCR_RTCSEL_1 = longword($00000200); //Bit 1
|
||
|
||
//RTC congiguration
|
||
RCC_BDCR_RTCSEL_NOCLOCK = longword($00000000); //No clock
|
||
RCC_BDCR_RTCSEL_LSE = longword($00000100); //LSE oscillator clock used as RTC clock
|
||
RCC_BDCR_RTCSEL_LSI = longword($00000200); //LSI oscillator clock used as RTC clock
|
||
RCC_BDCR_RTCSEL_HSE = longword($00000300); //HSE oscillator clock divided by 128 used as RTC clock
|
||
|
||
RCC_BDCR_RTCEN = longword($00008000); //RTC clock enable
|
||
RCC_BDCR_BDRST = longword($00010000); //Backup domain software reset
|
||
|
||
//****************** Bit definition for RCC_CSR register *******************
|
||
RCC_CSR_LSION = longword($00000001); //Internal Low Speed oscillator enable
|
||
RCC_CSR_LSIRDY = longword($00000002); //Internal Low Speed oscillator Ready
|
||
RCC_CSR_V18PWRRSTF = longword($00800000); //V1.8 power domain reset flag
|
||
RCC_CSR_RMVF = longword($01000000); //Remove reset flag
|
||
RCC_CSR_OBL = longword($02000000); //OBL reset flag
|
||
RCC_CSR_PINRSTF = longword($04000000); //PIN reset flag
|
||
RCC_CSR_PORRSTF = longword($08000000); //POR/PDR reset flag
|
||
RCC_CSR_SFTRSTF = longword($10000000); //Software Reset flag
|
||
RCC_CSR_IWDGRSTF = longword($20000000); //Independent Watchdog reset flag
|
||
RCC_CSR_WWDGRSTF = longword($40000000); //Window watchdog reset flag
|
||
RCC_CSR_LPWRRSTF = longword($80000000); //Low-Power reset flag
|
||
|
||
//****************** Bit definition for RCC_AHBRSTR register ***************
|
||
RCC_AHBRSTR_GPIOARST = longword($00020000); //GPIOA clock reset
|
||
RCC_AHBRSTR_GPIOBRST = longword($00040000); //GPIOB clock reset
|
||
RCC_AHBRSTR_GPIOCRST = longword($00080000); //GPIOC clock reset
|
||
RCC_AHBRSTR_GPIODRST = longword($00010000); //GPIOD clock reset
|
||
RCC_AHBRSTR_GPIOFRST = longword($00040000); //GPIOF clock reset
|
||
RCC_AHBRSTR_TSRST = longword($00100000); //TS clock reset
|
||
|
||
//****************** Bit definition for RCC_CFGR2 register *****************
|
||
//PREDIV1 configuration
|
||
RCC_CFGR2_PREDIV1 = longword($0000000F); //PREDIV1[3:0] bits
|
||
RCC_CFGR2_PREDIV1_0 = longword($00000001); //Bit 0
|
||
RCC_CFGR2_PREDIV1_1 = longword($00000002); //Bit 1
|
||
RCC_CFGR2_PREDIV1_2 = longword($00000004); //Bit 2
|
||
RCC_CFGR2_PREDIV1_3 = longword($00000008); //Bit 3
|
||
|
||
RCC_CFGR2_PREDIV1_DIV1 = longword($00000000); //PREDIV1 input clock not divided
|
||
RCC_CFGR2_PREDIV1_DIV2 = longword($00000001); //PREDIV1 input clock divided by 2
|
||
RCC_CFGR2_PREDIV1_DIV3 = longword($00000002); //PREDIV1 input clock divided by 3
|
||
RCC_CFGR2_PREDIV1_DIV4 = longword($00000003); //PREDIV1 input clock divided by 4
|
||
RCC_CFGR2_PREDIV1_DIV5 = longword($00000004); //PREDIV1 input clock divided by 5
|
||
RCC_CFGR2_PREDIV1_DIV6 = longword($00000005); //PREDIV1 input clock divided by 6
|
||
RCC_CFGR2_PREDIV1_DIV7 = longword($00000006); //PREDIV1 input clock divided by 7
|
||
RCC_CFGR2_PREDIV1_DIV8 = longword($00000007); //PREDIV1 input clock divided by 8
|
||
RCC_CFGR2_PREDIV1_DIV9 = longword($00000008); //PREDIV1 input clock divided by 9
|
||
RCC_CFGR2_PREDIV1_DIV10 = longword($00000009); //PREDIV1 input clock divided by 10
|
||
RCC_CFGR2_PREDIV1_DIV11 = longword($0000000A); //PREDIV1 input clock divided by 11
|
||
RCC_CFGR2_PREDIV1_DIV12 = longword($0000000B); //PREDIV1 input clock divided by 12
|
||
RCC_CFGR2_PREDIV1_DIV13 = longword($0000000C); //PREDIV1 input clock divided by 13
|
||
RCC_CFGR2_PREDIV1_DIV14 = longword($0000000D); //PREDIV1 input clock divided by 14
|
||
RCC_CFGR2_PREDIV1_DIV15 = longword($0000000E); //PREDIV1 input clock divided by 15
|
||
RCC_CFGR2_PREDIV1_DIV16 = longword($0000000F); //PREDIV1 input clock divided by 16
|
||
|
||
//****************** Bit definition for RCC_CFGR3 register *****************
|
||
//USART1 Clock source selection
|
||
RCC_CFGR3_USART1SW = longword($00000003); //USART1SW[1:0] bits
|
||
RCC_CFGR3_USART1SW_0 = longword($00000001); //Bit 0
|
||
RCC_CFGR3_USART1SW_1 = longword($00000002); //Bit 1
|
||
//I2C1 Clock source selection
|
||
RCC_CFGR3_I2C1SW = longword($00000010); //I2C1SW bits
|
||
RCC_CFGR3_CECSW = longword($00000040); //CECSW bits
|
||
RCC_CFGR3_ADCSW = longword($00000100); //ADCSW bits
|
||
|
||
//****************** Bit definition for RCC_CR2 register *******************
|
||
RCC_CR2_HSI14ON = longword($00000001); //Internal High Speed 14MHz clock enable
|
||
RCC_CR2_HSI14RDY = longword($00000002); //Internal High Speed 14MHz clock ready flag
|
||
RCC_CR2_HSI14DIS = longword($00000004); //Internal High Speed 14MHz clock disable
|
||
RCC_CR2_HSI14TRIM = longword($000000F8); //Internal High Speed 14MHz clock trimming
|
||
RCC_CR2_HSI14CAL = longword($0000FF00); //Internal High Speed 14MHz clock Calibration
|
||
|
||
//****************************************************************************
|
||
|
||
//Real-Time Clock (RTC)
|
||
|
||
//****************************************************************************
|
||
//******************* Bits definition for RTC_TR register ******************
|
||
RTC_TR_PM = longword($00400000);
|
||
RTC_TR_HT = longword($00300000);
|
||
RTC_TR_HT_0 = longword($00100000);
|
||
RTC_TR_HT_1 = longword($00200000);
|
||
RTC_TR_HU = longword($000F0000);
|
||
RTC_TR_HU_0 = longword($00010000);
|
||
RTC_TR_HU_1 = longword($00020000);
|
||
RTC_TR_HU_2 = longword($00040000);
|
||
RTC_TR_HU_3 = longword($00080000);
|
||
RTC_TR_MNT = longword($00007000);
|
||
RTC_TR_MNT_0 = longword($00001000);
|
||
RTC_TR_MNT_1 = longword($00002000);
|
||
RTC_TR_MNT_2 = longword($00004000);
|
||
RTC_TR_MNU = longword($00000F00);
|
||
RTC_TR_MNU_0 = longword($00000100);
|
||
RTC_TR_MNU_1 = longword($00000200);
|
||
RTC_TR_MNU_2 = longword($00000400);
|
||
RTC_TR_MNU_3 = longword($00000800);
|
||
RTC_TR_ST = longword($00000070);
|
||
RTC_TR_ST_0 = longword($00000010);
|
||
RTC_TR_ST_1 = longword($00000020);
|
||
RTC_TR_ST_2 = longword($00000040);
|
||
RTC_TR_SU = longword($0000000F);
|
||
RTC_TR_SU_0 = longword($00000001);
|
||
RTC_TR_SU_1 = longword($00000002);
|
||
RTC_TR_SU_2 = longword($00000004);
|
||
RTC_TR_SU_3 = longword($00000008);
|
||
|
||
//******************* Bits definition for RTC_DR register ******************
|
||
RTC_DR_YT = longword($00F00000);
|
||
RTC_DR_YT_0 = longword($00100000);
|
||
RTC_DR_YT_1 = longword($00200000);
|
||
RTC_DR_YT_2 = longword($00400000);
|
||
RTC_DR_YT_3 = longword($00800000);
|
||
RTC_DR_YU = longword($000F0000);
|
||
RTC_DR_YU_0 = longword($00010000);
|
||
RTC_DR_YU_1 = longword($00020000);
|
||
RTC_DR_YU_2 = longword($00040000);
|
||
RTC_DR_YU_3 = longword($00080000);
|
||
RTC_DR_WDU = longword($0000E000);
|
||
RTC_DR_WDU_0 = longword($00002000);
|
||
RTC_DR_WDU_1 = longword($00004000);
|
||
RTC_DR_WDU_2 = longword($00008000);
|
||
RTC_DR_MT = longword($00001000);
|
||
RTC_DR_MU = longword($00000F00);
|
||
RTC_DR_MU_0 = longword($00000100);
|
||
RTC_DR_MU_1 = longword($00000200);
|
||
RTC_DR_MU_2 = longword($00000400);
|
||
RTC_DR_MU_3 = longword($00000800);
|
||
RTC_DR_DT = longword($00000030);
|
||
RTC_DR_DT_0 = longword($00000010);
|
||
RTC_DR_DT_1 = longword($00000020);
|
||
RTC_DR_DU = longword($0000000F);
|
||
RTC_DR_DU_0 = longword($00000001);
|
||
RTC_DR_DU_1 = longword($00000002);
|
||
RTC_DR_DU_2 = longword($00000004);
|
||
RTC_DR_DU_3 = longword($00000008);
|
||
|
||
//******************* Bits definition for RTC_CR register ******************
|
||
RTC_CR_COE = longword($00800000);
|
||
RTC_CR_OSEL = longword($00600000);
|
||
RTC_CR_OSEL_0 = longword($00200000);
|
||
RTC_CR_OSEL_1 = longword($00400000);
|
||
RTC_CR_POL = longword($00100000);
|
||
RTC_CR_CALSEL = longword($00080000);
|
||
RTC_CR_BCK = longword($00040000);
|
||
RTC_CR_SUB1H = longword($00020000);
|
||
RTC_CR_ADD1H = longword($00010000);
|
||
RTC_CR_TSIE = longword($00008000);
|
||
RTC_CR_ALRAIE = longword($00001000);
|
||
RTC_CR_TSE = longword($00000800);
|
||
RTC_CR_ALRAE = longword($00000100);
|
||
RTC_CR_DCE = longword($00000080);
|
||
RTC_CR_FMT = longword($00000040);
|
||
RTC_CR_BYPSHAD = longword($00000020);
|
||
RTC_CR_REFCKON = longword($00000010);
|
||
RTC_CR_TSEDGE = longword($00000008);
|
||
|
||
//******************* Bits definition for RTC_ISR register *****************
|
||
RTC_ISR_RECALPF = longword($00010000);
|
||
RTC_ISR_TAMP2F = longword($00004000);
|
||
RTC_ISR_TAMP1F = longword($00002000);
|
||
RTC_ISR_TSOVF = longword($00001000);
|
||
RTC_ISR_TSF = longword($00000800);
|
||
RTC_ISR_ALRAF = longword($00000100);
|
||
RTC_ISR_INIT = longword($00000080);
|
||
RTC_ISR_INITF = longword($00000040);
|
||
RTC_ISR_RSF = longword($00000020);
|
||
RTC_ISR_INITS = longword($00000010);
|
||
RTC_ISR_SHPF = longword($00000008);
|
||
RTC_ISR_ALRAWF = longword($00000001);
|
||
|
||
//******************* Bits definition for RTC_PRER register ****************
|
||
RTC_PRER_PREDIV_A = longword($007F0000);
|
||
RTC_PRER_PREDIV_S = longword($00007FFF);
|
||
|
||
//******************* Bits definition for RTC_ALRMAR register **************
|
||
RTC_ALRMAR_MSK4 = longword($80000000);
|
||
RTC_ALRMAR_WDSEL = longword($40000000);
|
||
RTC_ALRMAR_DT = longword($30000000);
|
||
RTC_ALRMAR_DT_0 = longword($10000000);
|
||
RTC_ALRMAR_DT_1 = longword($20000000);
|
||
RTC_ALRMAR_DU = longword($0F000000);
|
||
RTC_ALRMAR_DU_0 = longword($01000000);
|
||
RTC_ALRMAR_DU_1 = longword($02000000);
|
||
RTC_ALRMAR_DU_2 = longword($04000000);
|
||
RTC_ALRMAR_DU_3 = longword($08000000);
|
||
RTC_ALRMAR_MSK3 = longword($00800000);
|
||
RTC_ALRMAR_PM = longword($00400000);
|
||
RTC_ALRMAR_HT = longword($00300000);
|
||
RTC_ALRMAR_HT_0 = longword($00100000);
|
||
RTC_ALRMAR_HT_1 = longword($00200000);
|
||
RTC_ALRMAR_HU = longword($000F0000);
|
||
RTC_ALRMAR_HU_0 = longword($00010000);
|
||
RTC_ALRMAR_HU_1 = longword($00020000);
|
||
RTC_ALRMAR_HU_2 = longword($00040000);
|
||
RTC_ALRMAR_HU_3 = longword($00080000);
|
||
RTC_ALRMAR_MSK2 = longword($00008000);
|
||
RTC_ALRMAR_MNT = longword($00007000);
|
||
RTC_ALRMAR_MNT_0 = longword($00001000);
|
||
RTC_ALRMAR_MNT_1 = longword($00002000);
|
||
RTC_ALRMAR_MNT_2 = longword($00004000);
|
||
RTC_ALRMAR_MNU = longword($00000F00);
|
||
RTC_ALRMAR_MNU_0 = longword($00000100);
|
||
RTC_ALRMAR_MNU_1 = longword($00000200);
|
||
RTC_ALRMAR_MNU_2 = longword($00000400);
|
||
RTC_ALRMAR_MNU_3 = longword($00000800);
|
||
RTC_ALRMAR_MSK1 = longword($00000080);
|
||
RTC_ALRMAR_ST = longword($00000070);
|
||
RTC_ALRMAR_ST_0 = longword($00000010);
|
||
RTC_ALRMAR_ST_1 = longword($00000020);
|
||
RTC_ALRMAR_ST_2 = longword($00000040);
|
||
RTC_ALRMAR_SU = longword($0000000F);
|
||
RTC_ALRMAR_SU_0 = longword($00000001);
|
||
RTC_ALRMAR_SU_1 = longword($00000002);
|
||
RTC_ALRMAR_SU_2 = longword($00000004);
|
||
RTC_ALRMAR_SU_3 = longword($00000008);
|
||
|
||
//******************* Bits definition for RTC_WPR register *****************
|
||
RTC_WPR_KEY = longword($000000FF);
|
||
|
||
//******************* Bits definition for RTC_SSR register *****************
|
||
RTC_SSR_SS = longword($0003FFFF);
|
||
|
||
//******************* Bits definition for RTC_SHIFTR register **************
|
||
RTC_SHIFTR_SUBFS = longword($00007FFF);
|
||
RTC_SHIFTR_ADD1S = longword($80000000);
|
||
|
||
//******************* Bits definition for RTC_TSTR register ****************
|
||
RTC_TSTR_PM = longword($00400000);
|
||
RTC_TSTR_HT = longword($00300000);
|
||
RTC_TSTR_HT_0 = longword($00100000);
|
||
RTC_TSTR_HT_1 = longword($00200000);
|
||
RTC_TSTR_HU = longword($000F0000);
|
||
RTC_TSTR_HU_0 = longword($00010000);
|
||
RTC_TSTR_HU_1 = longword($00020000);
|
||
RTC_TSTR_HU_2 = longword($00040000);
|
||
RTC_TSTR_HU_3 = longword($00080000);
|
||
RTC_TSTR_MNT = longword($00007000);
|
||
RTC_TSTR_MNT_0 = longword($00001000);
|
||
RTC_TSTR_MNT_1 = longword($00002000);
|
||
RTC_TSTR_MNT_2 = longword($00004000);
|
||
RTC_TSTR_MNU = longword($00000F00);
|
||
RTC_TSTR_MNU_0 = longword($00000100);
|
||
RTC_TSTR_MNU_1 = longword($00000200);
|
||
RTC_TSTR_MNU_2 = longword($00000400);
|
||
RTC_TSTR_MNU_3 = longword($00000800);
|
||
RTC_TSTR_ST = longword($00000070);
|
||
RTC_TSTR_ST_0 = longword($00000010);
|
||
RTC_TSTR_ST_1 = longword($00000020);
|
||
RTC_TSTR_ST_2 = longword($00000040);
|
||
RTC_TSTR_SU = longword($0000000F);
|
||
RTC_TSTR_SU_0 = longword($00000001);
|
||
RTC_TSTR_SU_1 = longword($00000002);
|
||
RTC_TSTR_SU_2 = longword($00000004);
|
||
RTC_TSTR_SU_3 = longword($00000008);
|
||
|
||
//******************* Bits definition for RTC_TSDR register ****************
|
||
RTC_TSDR_WDU = longword($0000E000);
|
||
RTC_TSDR_WDU_0 = longword($00002000);
|
||
RTC_TSDR_WDU_1 = longword($00004000);
|
||
RTC_TSDR_WDU_2 = longword($00008000);
|
||
RTC_TSDR_MT = longword($00001000);
|
||
RTC_TSDR_MU = longword($00000F00);
|
||
RTC_TSDR_MU_0 = longword($00000100);
|
||
RTC_TSDR_MU_1 = longword($00000200);
|
||
RTC_TSDR_MU_2 = longword($00000400);
|
||
RTC_TSDR_MU_3 = longword($00000800);
|
||
RTC_TSDR_DT = longword($00000030);
|
||
RTC_TSDR_DT_0 = longword($00000010);
|
||
RTC_TSDR_DT_1 = longword($00000020);
|
||
RTC_TSDR_DU = longword($0000000F);
|
||
RTC_TSDR_DU_0 = longword($00000001);
|
||
RTC_TSDR_DU_1 = longword($00000002);
|
||
RTC_TSDR_DU_2 = longword($00000004);
|
||
RTC_TSDR_DU_3 = longword($00000008);
|
||
|
||
//******************* Bits definition for RTC_TSSSR register ***************
|
||
RTC_TSSSR_SS = longword($0003FFFF);
|
||
|
||
//******************* Bits definition for RTC_CAL register ****************
|
||
RTC_CAL_CALP = longword($00008000);
|
||
RTC_CAL_CALW8 = longword($00004000);
|
||
RTC_CAL_CALW16 = longword($00002000);
|
||
RTC_CAL_CALM = longword($000001FF);
|
||
RTC_CAL_CALM_0 = longword($00000001);
|
||
RTC_CAL_CALM_1 = longword($00000002);
|
||
RTC_CAL_CALM_2 = longword($00000004);
|
||
RTC_CAL_CALM_3 = longword($00000008);
|
||
RTC_CAL_CALM_4 = longword($00000010);
|
||
RTC_CAL_CALM_5 = longword($00000020);
|
||
RTC_CAL_CALM_6 = longword($00000040);
|
||
RTC_CAL_CALM_7 = longword($00000080);
|
||
RTC_CAL_CALM_8 = longword($00000100);
|
||
|
||
//******************* Bits definition for RTC_TAFCR register ***************
|
||
RTC_TAFCR_ALARMOUTTYPE = longword($00040000);
|
||
RTC_TAFCR_TAMPPUDIS = longword($00008000);
|
||
RTC_TAFCR_TAMPPRCH = longword($00006000);
|
||
RTC_TAFCR_TAMPPRCH_0 = longword($00002000);
|
||
RTC_TAFCR_TAMPPRCH_1 = longword($00004000);
|
||
RTC_TAFCR_TAMPFLT = longword($00001800);
|
||
RTC_TAFCR_TAMPFLT_0 = longword($00000800);
|
||
RTC_TAFCR_TAMPFLT_1 = longword($00001000);
|
||
RTC_TAFCR_TAMPFREQ = longword($00000700);
|
||
RTC_TAFCR_TAMPFREQ_0 = longword($00000100);
|
||
RTC_TAFCR_TAMPFREQ_1 = longword($00000200);
|
||
RTC_TAFCR_TAMPFREQ_2 = longword($00000400);
|
||
RTC_TAFCR_TAMPTS = longword($00000080);
|
||
RTC_TAFCR_TAMP2EDGE = longword($00000010);
|
||
RTC_TAFCR_TAMP2E = longword($00000008);
|
||
RTC_TAFCR_TAMPIE = longword($00000004);
|
||
RTC_TAFCR_TAMP1TRG = longword($00000002);
|
||
RTC_TAFCR_TAMP1E = longword($00000001);
|
||
|
||
//******************* Bits definition for RTC_ALRMASSR register ************
|
||
RTC_ALRMASSR_MASKSS = longword($0F000000);
|
||
RTC_ALRMASSR_MASKSS_0 = longword($01000000);
|
||
RTC_ALRMASSR_MASKSS_1 = longword($02000000);
|
||
RTC_ALRMASSR_MASKSS_2 = longword($04000000);
|
||
RTC_ALRMASSR_MASKSS_3 = longword($08000000);
|
||
RTC_ALRMASSR_SS = longword($00007FFF);
|
||
|
||
//******************* Bits definition for RTC_BKP0R register ***************
|
||
RTC_BKP0R = longword($FFFFFFFF);
|
||
|
||
//******************* Bits definition for RTC_BKP1R register ***************
|
||
RTC_BKP1R = longword($FFFFFFFF);
|
||
|
||
//******************* Bits definition for RTC_BKP2R register ***************
|
||
RTC_BKP2R = longword($FFFFFFFF);
|
||
|
||
//******************* Bits definition for RTC_BKP3R register ***************
|
||
RTC_BKP3R = longword($FFFFFFFF);
|
||
|
||
//******************* Bits definition for RTC_BKP4R register ***************
|
||
RTC_BKP4R = longword($FFFFFFFF);
|
||
|
||
//****************************************************************************
|
||
|
||
//Serial Peripheral Interface (SPI)
|
||
|
||
//****************************************************************************
|
||
//****************** Bit definition for SPI_CR1 register *******************
|
||
SPI_CR1_CPHA = longword($0001); //Clock Phase
|
||
SPI_CR1_CPOL = longword($0002); //Clock Polarity
|
||
SPI_CR1_MSTR = longword($0004); //Master Selection
|
||
SPI_CR1_BR = longword($0038); //BR[2:0] bits (Baud Rate Control)
|
||
SPI_CR1_BR_0 = longword($0008); //Bit 0
|
||
SPI_CR1_BR_1 = longword($0010); //Bit 1
|
||
SPI_CR1_BR_2 = longword($0020); //Bit 2
|
||
SPI_CR1_SPE = longword($0040); //SPI Enable
|
||
SPI_CR1_LSBFIRST = longword($0080); //Frame Format
|
||
SPI_CR1_SSI = longword($0100); //Internal slave select
|
||
SPI_CR1_SSM = longword($0200); //Software slave management
|
||
SPI_CR1_RXONLY = longword($0400); //Receive only
|
||
SPI_CR1_CRCL = longword($0800); //CRC Length
|
||
SPI_CR1_CRCNEXT = longword($1000); //Transmit CRC next
|
||
SPI_CR1_CRCEN = longword($2000); //Hardware CRC calculation enable
|
||
SPI_CR1_BIDIOE = longword($4000); //Output enable in bidirectional mode
|
||
SPI_CR1_BIDIMODE = longword($8000); //Bidirectional data mode enable
|
||
|
||
//****************** Bit definition for SPI_CR2 register *******************
|
||
SPI_CR2_RXDMAEN = longword($0001); //Rx Buffer DMA Enable
|
||
SPI_CR2_TXDMAEN = longword($0002); //Tx Buffer DMA Enable
|
||
SPI_CR2_SSOE = longword($0004); //SS Output Enable
|
||
SPI_CR2_NSSP = longword($0008); //NSS pulse management Enable
|
||
SPI_CR2_FRF = longword($0010); //Frame Format Enable
|
||
SPI_CR2_ERRIE = longword($0020); //Error Interrupt Enable
|
||
SPI_CR2_RXNEIE = longword($0040); //RX buffer Not Empty Interrupt Enable
|
||
SPI_CR2_TXEIE = longword($0080); //Tx buffer Empty Interrupt Enable
|
||
SPI_CR2_DS = longword($0F00); //DS[3:0] Data Size
|
||
SPI_CR2_DS_0 = longword($0100); //Bit 0
|
||
SPI_CR2_DS_1 = longword($0200); //Bit 1
|
||
SPI_CR2_DS_2 = longword($0400); //Bit 2
|
||
SPI_CR2_DS_3 = longword($0800); //Bit 3
|
||
SPI_CR2_FRXTH = longword($1000); //FIFO reception Threshold
|
||
SPI_CR2_LDMARX = longword($2000); //Last DMA transfer for reception
|
||
SPI_CR2_LDMATX = longword($4000); //Last DMA transfer for transmission
|
||
|
||
//******************* Bit definition for SPI_SR register *******************
|
||
SPI_SR_RXNE = longword($0001); //Receive buffer Not Empty
|
||
SPI_SR_TXE = longword($0002); //Transmit buffer Empty
|
||
SPI_SR_CHSIDE = longword($0004); //Channel side
|
||
SPI_SR_UDR = longword($0008); //Underrun flag
|
||
SPI_SR_CRCERR = longword($0010); //CRC Error flag
|
||
SPI_SR_MODF = longword($0020); //Mode fault
|
||
SPI_SR_OVR = longword($0040); //Overrun flag
|
||
SPI_SR_BSY = longword($0080); //Busy flag
|
||
SPI_SR_FRE = longword($0100); //TI frame format error
|
||
SPI_SR_FRLVL = longword($0600); //FIFO Reception Level
|
||
SPI_SR_FRLVL_0 = longword($0200); //Bit 0
|
||
SPI_SR_FRLVL_1 = longword($0400); //Bit 1
|
||
SPI_SR_FTLVL = longword($1800); //FIFO Transmission Level
|
||
SPI_SR_FTLVL_0 = longword($0800); //Bit 0
|
||
SPI_SR_FTLVL_1 = longword($1000); //Bit 1
|
||
|
||
//******************* Bit definition for SPI_DR register *******************
|
||
SPI_DR_DR = longword($FFFF); //Data Register
|
||
|
||
//****************** Bit definition for SPI_CRCPR register *****************
|
||
SPI_CRCPR_CRCPOLY = longword($FFFF); //CRC polynomial register
|
||
|
||
//***************** Bit definition for SPI_RXCRCR register *****************
|
||
SPI_RXCRCR_RXCRC = longword($FFFF); //Rx CRC Register
|
||
|
||
//***************** Bit definition for SPI_TXCRCR register *****************
|
||
SPI_TXCRCR_TXCRC = longword($FFFF); //Tx CRC Register
|
||
|
||
//***************** Bit definition for SPI_I2SCFGR register ****************
|
||
SPI_I2SCFGR_CHLEN = longword($0001); //hannel length (number of bits per audio channel)
|
||
SPI_I2SCFGR_DATLEN = longword($0006); //ATLEN[1:0] bits (Data length to be transferred)
|
||
SPI_I2SCFGR_DATLEN_0 = longword($0002); //it 0
|
||
SPI_I2SCFGR_DATLEN_1 = longword($0004); //it 1
|
||
SPI_I2SCFGR_CKPOL = longword($0008); //teady state clock polarity
|
||
SPI_I2SCFGR_I2SSTD = longword($0030); //2SSTD[1:0] bits (I2S standard selection)
|
||
SPI_I2SCFGR_I2SSTD_0 = longword($0010); //it 0
|
||
SPI_I2SCFGR_I2SSTD_1 = longword($0020); //it 1
|
||
SPI_I2SCFGR_PCMSYNC = longword($0080); //CM frame synchronization
|
||
SPI_I2SCFGR_I2SCFG = longword($0300); //2SCFG[1:0] bits (I2S configuration mode)
|
||
SPI_I2SCFGR_I2SCFG_0 = longword($0100); //it 0
|
||
SPI_I2SCFGR_I2SCFG_1 = longword($0200); //it 1
|
||
SPI_I2SCFGR_I2SE = longword($0400); //2S Enable
|
||
SPI_I2SCFGR_I2SMOD = longword($0800); //2S mode selection
|
||
|
||
//***************** Bit definition for SPI_I2SPR register ******************
|
||
SPI_I2SPR_I2SDIV = longword($00FF); //2S Linear prescaler
|
||
SPI_I2SPR_ODD = longword($0100); //dd factor for the prescaler
|
||
SPI_I2SPR_MCKOE = longword($0200); //aster Clock Output Enable
|
||
|
||
//****************************************************************************
|
||
|
||
//System Configuration (SYSCFG)
|
||
|
||
//****************************************************************************
|
||
//**************** Bit definition for SYSCFG_CFGR1 register ***************
|
||
SYSCFG_CFGR1_MEM_MODE = longword($00000003); //SYSCFG_Memory Remap Config
|
||
SYSCFG_CFGR1_MEM_MODE_0 = longword($00000001); //SYSCFG_Memory Remap Config Bit 0
|
||
SYSCFG_CFGR1_MEM_MODE_1 = longword($00000002); //SYSCFG_Memory Remap Config Bit 1
|
||
SYSCFG_CFGR1_ADC_DMA_RMP = longword($00000100); //ADC DMA remap
|
||
SYSCFG_CFGR1_USART1TX_DMA_RMP = longword($00000200); //USART1 TX DMA remap
|
||
SYSCFG_CFGR1_USART1RX_DMA_RMP = longword($00000400); //USART1 RX DMA remap
|
||
SYSCFG_CFGR1_TIM16_DMA_RMP = longword($00000800); //Timer 16 DMA remap
|
||
SYSCFG_CFGR1_TIM17_DMA_RMP = longword($00001000); //Timer 17 DMA remap
|
||
SYSCFG_CFGR1_I2C_FMP_PB6 = longword($00010000); //I2C PB6 Fast mode plus
|
||
SYSCFG_CFGR1_I2C_FMP_PB7 = longword($00020000); //I2C PB7 Fast mode plus
|
||
SYSCFG_CFGR1_I2C_FMP_PB8 = longword($00040000); //I2C PB8 Fast mode plus
|
||
SYSCFG_CFGR1_I2C_FMP_PB9 = longword($00080000); //I2C PB9 Fast mode plus
|
||
|
||
//**************** Bit definition for SYSCFG_EXTICR1 register **************
|
||
SYSCFG_EXTICR1_EXTI0 = longword($000F); //EXTI 0 configuration
|
||
SYSCFG_EXTICR1_EXTI1 = longword($00F0); //EXTI 1 configuration
|
||
SYSCFG_EXTICR1_EXTI2 = longword($0F00); //EXTI 2 configuration
|
||
SYSCFG_EXTICR1_EXTI3 = longword($F000); //EXTI 3 configuration
|
||
|
||
// EXTI0 configuration
|
||
|
||
SYSCFG_EXTICR1_EXTI0_PA = longword($0000); //PA[0] pin
|
||
SYSCFG_EXTICR1_EXTI0_PB = longword($0001); //PB[0] pin
|
||
SYSCFG_EXTICR1_EXTI0_PC = longword($0002); //PC[0] pin
|
||
SYSCFG_EXTICR1_EXTI0_PF = longword($0003); //PF[0] pin
|
||
|
||
// EXTI1 configuration
|
||
|
||
SYSCFG_EXTICR1_EXTI1_PA = longword($0000); //PA[1] pin
|
||
SYSCFG_EXTICR1_EXTI1_PB = longword($0010); //PB[1] pin
|
||
SYSCFG_EXTICR1_EXTI1_PC = longword($0020); //PC[1] pin
|
||
SYSCFG_EXTICR1_EXTI1_PF = longword($0030); //PF[1] pin
|
||
|
||
// EXTI2 configuration
|
||
|
||
SYSCFG_EXTICR1_EXTI2_PA = longword($0000); //PA[2] pin
|
||
SYSCFG_EXTICR1_EXTI2_PB = longword($0100); //PB[2] pin
|
||
SYSCFG_EXTICR1_EXTI2_PC = longword($0200); //PC[2] pin
|
||
SYSCFG_EXTICR1_EXTI2_PD = longword($0300); //PD[2] pin
|
||
|
||
// EXTI3 configuration
|
||
|
||
SYSCFG_EXTICR1_EXTI3_PA = longword($0000); //PA[3] pin
|
||
SYSCFG_EXTICR1_EXTI3_PB = longword($1000); //PB[3] pin
|
||
SYSCFG_EXTICR1_EXTI3_PC = longword($2000); //PC[3] pin
|
||
|
||
//**************** Bit definition for SYSCFG_EXTICR2 register ****************
|
||
SYSCFG_EXTICR2_EXTI4 = longword($000F); //EXTI 4 configuration
|
||
SYSCFG_EXTICR2_EXTI5 = longword($00F0); //EXTI 5 configuration
|
||
SYSCFG_EXTICR2_EXTI6 = longword($0F00); //EXTI 6 configuration
|
||
SYSCFG_EXTICR2_EXTI7 = longword($F000); //EXTI 7 configuration
|
||
|
||
// EXTI4 configuration
|
||
|
||
SYSCFG_EXTICR2_EXTI4_PA = longword($0000); //PA[4] pin
|
||
SYSCFG_EXTICR2_EXTI4_PB = longword($0001); //PB[4] pin
|
||
SYSCFG_EXTICR2_EXTI4_PC = longword($0002); //PC[4] pin
|
||
SYSCFG_EXTICR2_EXTI4_PF = longword($0003); //PF[4] pin
|
||
|
||
// EXTI5 configuration
|
||
|
||
SYSCFG_EXTICR2_EXTI5_PA = longword($0000); //PA[5] pin
|
||
SYSCFG_EXTICR2_EXTI5_PB = longword($0010); //PB[5] pin
|
||
SYSCFG_EXTICR2_EXTI5_PC = longword($0020); //PC[5] pin
|
||
SYSCFG_EXTICR2_EXTI5_PF = longword($0030); //PF[5] pin
|
||
|
||
// EXTI6 configuration
|
||
|
||
SYSCFG_EXTICR2_EXTI6_PA = longword($0000); //PA[6] pin
|
||
SYSCFG_EXTICR2_EXTI6_PB = longword($0100); //PB[6] pin
|
||
SYSCFG_EXTICR2_EXTI6_PC = longword($0200); //PC[6] pin
|
||
SYSCFG_EXTICR2_EXTI6_PF = longword($0300); //PF[6] pin
|
||
|
||
// EXTI7 configuration
|
||
|
||
SYSCFG_EXTICR2_EXTI7_PA = longword($0000); //PA[7] pin
|
||
SYSCFG_EXTICR2_EXTI7_PB = longword($1000); //PB[7] pin
|
||
SYSCFG_EXTICR2_EXTI7_PC = longword($2000); //PC[7] pin
|
||
SYSCFG_EXTICR2_EXTI7_PF = longword($3000); //PF[7] pin
|
||
|
||
//**************** Bit definition for SYSCFG_EXTICR3 register ****************
|
||
SYSCFG_EXTICR3_EXTI8 = longword($000F); //EXTI 8 configuration
|
||
SYSCFG_EXTICR3_EXTI9 = longword($00F0); //EXTI 9 configuration
|
||
SYSCFG_EXTICR3_EXTI10 = longword($0F00); //EXTI 10 configuration
|
||
SYSCFG_EXTICR3_EXTI11 = longword($F000); //EXTI 11 configuration
|
||
|
||
// EXTI8 configuration
|
||
|
||
SYSCFG_EXTICR3_EXTI8_PA = longword($0000); //PA[8] pin
|
||
SYSCFG_EXTICR3_EXTI8_PB = longword($0001); //PB[8] pin
|
||
SYSCFG_EXTICR3_EXTI8_PC = longword($0002); //PC[8] pin
|
||
|
||
// EXTI9 configuration
|
||
|
||
SYSCFG_EXTICR3_EXTI9_PA = longword($0000); //PA[9] pin
|
||
SYSCFG_EXTICR3_EXTI9_PB = longword($0010); //PB[9] pin
|
||
SYSCFG_EXTICR3_EXTI9_PC = longword($0020); //PC[9] pin
|
||
|
||
// EXTI10 configuration
|
||
|
||
SYSCFG_EXTICR3_EXTI10_PA = longword($0000); //PA[10] pin
|
||
SYSCFG_EXTICR3_EXTI10_PB = longword($0100); //PB[10] pin
|
||
SYSCFG_EXTICR3_EXTI10_PC = longword($0200); //PC[10] pin
|
||
|
||
// EXTI11 configuration
|
||
|
||
SYSCFG_EXTICR3_EXTI11_PA = longword($0000); //PA[11] pin
|
||
SYSCFG_EXTICR3_EXTI11_PB = longword($1000); //PB[11] pin
|
||
SYSCFG_EXTICR3_EXTI11_PC = longword($2000); //PC[11] pin
|
||
|
||
//**************** Bit definition for SYSCFG_EXTICR4 register ****************
|
||
SYSCFG_EXTICR4_EXTI12 = longword($000F); //EXTI 12 configuration
|
||
SYSCFG_EXTICR4_EXTI13 = longword($00F0); //EXTI 13 configuration
|
||
SYSCFG_EXTICR4_EXTI14 = longword($0F00); //EXTI 14 configuration
|
||
SYSCFG_EXTICR4_EXTI15 = longword($F000); //EXTI 15 configuration
|
||
|
||
// EXTI12 configuration
|
||
|
||
SYSCFG_EXTICR4_EXTI12_PA = longword($0000); //PA[12] pin
|
||
SYSCFG_EXTICR4_EXTI12_PB = longword($0001); //PB[12] pin
|
||
SYSCFG_EXTICR4_EXTI12_PC = longword($0002); //PC[12] pin
|
||
|
||
// EXTI13 configuration
|
||
|
||
SYSCFG_EXTICR4_EXTI13_PA = longword($0000); //PA[13] pin
|
||
SYSCFG_EXTICR4_EXTI13_PB = longword($0010); //PB[13] pin
|
||
SYSCFG_EXTICR4_EXTI13_PC = longword($0020); //PC[13] pin
|
||
|
||
// EXTI14 configuration
|
||
|
||
SYSCFG_EXTICR4_EXTI14_PA = longword($0000); //PA[14] pin
|
||
SYSCFG_EXTICR4_EXTI14_PB = longword($0100); //PB[14] pin
|
||
SYSCFG_EXTICR4_EXTI14_PC = longword($0200); //PC[14] pin
|
||
|
||
// EXTI15 configuration
|
||
|
||
SYSCFG_EXTICR4_EXTI15_PA = longword($0000); //PA[15] pin
|
||
SYSCFG_EXTICR4_EXTI15_PB = longword($1000); //PB[15] pin
|
||
SYSCFG_EXTICR4_EXTI15_PC = longword($2000); //PC[15] pin
|
||
|
||
//**************** Bit definition for SYSCFG_CFGR2 register ***************
|
||
SYSCFG_CFGR2_LOCKUP_LOCK = longword($00000001); //Enables and locks the PVD connection with Timer1 Break Input and also the PVD_EN and PVDSEL[2:0] bits of the Power Control Interface
|
||
SYSCFG_CFGR2_SRAM_PARITY_LOCK = longword($00000002); //Enables and locks the SRAM_PARITY error signal with Break Input of TIMER1
|
||
SYSCFG_CFGR2_PVD_LOCK = longword($00000004); //Enables and locks the LOCKUP (Hardfault) output of CortexM0 with Break Input of TIMER1
|
||
SYSCFG_CFGR2_SRAM_PE = longword($00000100); //SRAM Parity error flag
|
||
|
||
//****************************************************************************
|
||
|
||
//Timers (TIM)
|
||
|
||
//****************************************************************************
|
||
//****************** Bit definition for TIM_CR1 register *******************
|
||
TIM_CR1_CEN = longword($0001); //ounter enable
|
||
TIM_CR1_UDIS = longword($0002); //pdate disable
|
||
TIM_CR1_URS = longword($0004); //pdate request source
|
||
TIM_CR1_OPM = longword($0008); //ne pulse mode
|
||
TIM_CR1_DIR = longword($0010); //irection
|
||
|
||
TIM_CR1_CMS = longword($0060); //MS[1:0] bits (Center-aligned mode selection)
|
||
TIM_CR1_CMS_0 = longword($0020); //it 0
|
||
TIM_CR1_CMS_1 = longword($0040); //it 1
|
||
|
||
TIM_CR1_ARPE = longword($0080); //uto-reload preload enable
|
||
|
||
TIM_CR1_CKD = longword($0300); //KD[1:0] bits (clock division)
|
||
TIM_CR1_CKD_0 = longword($0100); //it 0
|
||
TIM_CR1_CKD_1 = longword($0200); //it 1
|
||
|
||
//****************** Bit definition for TIM_CR2 register *******************
|
||
TIM_CR2_CCPC = longword($0001); //apture/Compare Preloaded Control
|
||
TIM_CR2_CCUS = longword($0004); //apture/Compare Control Update Selection
|
||
TIM_CR2_CCDS = longword($0008); //apture/Compare DMA Selection
|
||
|
||
TIM_CR2_MMS = longword($0070); //MS[2:0] bits (Master Mode Selection)
|
||
TIM_CR2_MMS_0 = longword($0010); //it 0
|
||
TIM_CR2_MMS_1 = longword($0020); //it 1
|
||
TIM_CR2_MMS_2 = longword($0040); //it 2
|
||
|
||
TIM_CR2_TI1S = longword($0080); //I1 Selection
|
||
TIM_CR2_OIS1 = longword($0100); //utput Idle state 1 (OC1 output)
|
||
TIM_CR2_OIS1N = longword($0200); //utput Idle state 1 (OC1N output)
|
||
TIM_CR2_OIS2 = longword($0400); //utput Idle state 2 (OC2 output)
|
||
TIM_CR2_OIS2N = longword($0800); //utput Idle state 2 (OC2N output)
|
||
TIM_CR2_OIS3 = longword($1000); //utput Idle state 3 (OC3 output)
|
||
TIM_CR2_OIS3N = longword($2000); //utput Idle state 3 (OC3N output)
|
||
TIM_CR2_OIS4 = longword($4000); //utput Idle state 4 (OC4 output)
|
||
|
||
//****************** Bit definition for TIM_SMCR register ******************
|
||
TIM_SMCR_SMS = longword($0007); //MS[2:0] bits (Slave mode selection)
|
||
TIM_SMCR_SMS_0 = longword($0001); //it 0
|
||
TIM_SMCR_SMS_1 = longword($0002); //it 1
|
||
TIM_SMCR_SMS_2 = longword($0004); //it 2
|
||
|
||
TIM_SMCR_OCCS = longword($0008); //OCREF clear selection
|
||
|
||
TIM_SMCR_TS = longword($0070); //S[2:0] bits (Trigger selection)
|
||
TIM_SMCR_TS_0 = longword($0010); //it 0
|
||
TIM_SMCR_TS_1 = longword($0020); //it 1
|
||
TIM_SMCR_TS_2 = longword($0040); //it 2
|
||
|
||
TIM_SMCR_MSM = longword($0080); //aster/slave mode
|
||
|
||
TIM_SMCR_ETF = longword($0F00); //TF[3:0] bits (External trigger filter)
|
||
TIM_SMCR_ETF_0 = longword($0100); //it 0
|
||
TIM_SMCR_ETF_1 = longword($0200); //it 1
|
||
TIM_SMCR_ETF_2 = longword($0400); //it 2
|
||
TIM_SMCR_ETF_3 = longword($0800); //it 3
|
||
|
||
TIM_SMCR_ETPS = longword($3000); //TPS[1:0] bits (External trigger prescaler)
|
||
TIM_SMCR_ETPS_0 = longword($1000); //it 0
|
||
TIM_SMCR_ETPS_1 = longword($2000); //it 1
|
||
|
||
TIM_SMCR_ECE = longword($4000); //xternal clock enable
|
||
TIM_SMCR_ETP = longword($8000); //xternal trigger polarity
|
||
|
||
//****************** Bit definition for TIM_DIER register ******************
|
||
TIM_DIER_UIE = longword($0001); //pdate interrupt enable
|
||
TIM_DIER_CC1IE = longword($0002); //apture/Compare 1 interrupt enable
|
||
TIM_DIER_CC2IE = longword($0004); //apture/Compare 2 interrupt enable
|
||
TIM_DIER_CC3IE = longword($0008); //apture/Compare 3 interrupt enable
|
||
TIM_DIER_CC4IE = longword($0010); //apture/Compare 4 interrupt enable
|
||
TIM_DIER_COMIE = longword($0020); //OM interrupt enable
|
||
TIM_DIER_TIE = longword($0040); //rigger interrupt enable
|
||
TIM_DIER_BIE = longword($0080); //reak interrupt enable
|
||
TIM_DIER_UDE = longword($0100); //pdate DMA request enable
|
||
TIM_DIER_CC1DE = longword($0200); //apture/Compare 1 DMA request enable
|
||
TIM_DIER_CC2DE = longword($0400); //apture/Compare 2 DMA request enable
|
||
TIM_DIER_CC3DE = longword($0800); //apture/Compare 3 DMA request enable
|
||
TIM_DIER_CC4DE = longword($1000); //apture/Compare 4 DMA request enable
|
||
TIM_DIER_COMDE = longword($2000); //OM DMA request enable
|
||
TIM_DIER_TDE = longword($4000); //rigger DMA request enable
|
||
|
||
//******************* Bit definition for TIM_SR register *******************
|
||
TIM_SR_UIF = longword($0001); //pdate interrupt Flag
|
||
TIM_SR_CC1IF = longword($0002); //apture/Compare 1 interrupt Flag
|
||
TIM_SR_CC2IF = longword($0004); //apture/Compare 2 interrupt Flag
|
||
TIM_SR_CC3IF = longword($0008); //apture/Compare 3 interrupt Flag
|
||
TIM_SR_CC4IF = longword($0010); //apture/Compare 4 interrupt Flag
|
||
TIM_SR_COMIF = longword($0020); //OM interrupt Flag
|
||
TIM_SR_TIF = longword($0040); //rigger interrupt Flag
|
||
TIM_SR_BIF = longword($0080); //reak interrupt Flag
|
||
TIM_SR_CC1OF = longword($0200); //apture/Compare 1 Overcapture Flag
|
||
TIM_SR_CC2OF = longword($0400); //apture/Compare 2 Overcapture Flag
|
||
TIM_SR_CC3OF = longword($0800); //apture/Compare 3 Overcapture Flag
|
||
TIM_SR_CC4OF = longword($1000); //apture/Compare 4 Overcapture Flag
|
||
|
||
//****************** Bit definition for TIM_EGR register *******************
|
||
TIM_EGR_UG = longword($01); //pdate Generation
|
||
TIM_EGR_CC1G = longword($02); //apture/Compare 1 Generation
|
||
TIM_EGR_CC2G = longword($04); //apture/Compare 2 Generation
|
||
TIM_EGR_CC3G = longword($08); //apture/Compare 3 Generation
|
||
TIM_EGR_CC4G = longword($10); //apture/Compare 4 Generation
|
||
TIM_EGR_COMG = longword($20); //apture/Compare Control Update Generation
|
||
TIM_EGR_TG = longword($40); //rigger Generation
|
||
TIM_EGR_BG = longword($80); //reak Generation
|
||
|
||
//***************** Bit definition for TIM_CCMR1 register ******************
|
||
TIM_CCMR1_CC1S = longword($0003); //C1S[1:0] bits (Capture/Compare 1 Selection)
|
||
TIM_CCMR1_CC1S_0 = longword($0001); //it 0
|
||
TIM_CCMR1_CC1S_1 = longword($0002); //it 1
|
||
|
||
TIM_CCMR1_OC1FE = longword($0004); //utput Compare 1 Fast enable
|
||
TIM_CCMR1_OC1PE = longword($0008); //utput Compare 1 Preload enable
|
||
|
||
TIM_CCMR1_OC1M = longword($0070); //C1M[2:0] bits (Output Compare 1 Mode)
|
||
TIM_CCMR1_OC1M_0 = longword($0010); //it 0
|
||
TIM_CCMR1_OC1M_1 = longword($0020); //it 1
|
||
TIM_CCMR1_OC1M_2 = longword($0040); //it 2
|
||
|
||
TIM_CCMR1_OC1CE = longword($0080); //utput Compare 1Clear Enable
|
||
|
||
TIM_CCMR1_CC2S = longword($0300); //C2S[1:0] bits (Capture/Compare 2 Selection)
|
||
TIM_CCMR1_CC2S_0 = longword($0100); //it 0
|
||
TIM_CCMR1_CC2S_1 = longword($0200); //it 1
|
||
|
||
TIM_CCMR1_OC2FE = longword($0400); //utput Compare 2 Fast enable
|
||
TIM_CCMR1_OC2PE = longword($0800); //utput Compare 2 Preload enable
|
||
|
||
TIM_CCMR1_OC2M = longword($7000); //C2M[2:0] bits (Output Compare 2 Mode)
|
||
TIM_CCMR1_OC2M_0 = longword($1000); //it 0
|
||
TIM_CCMR1_OC2M_1 = longword($2000); //it 1
|
||
TIM_CCMR1_OC2M_2 = longword($4000); //it 2
|
||
|
||
TIM_CCMR1_OC2CE = longword($8000); //utput Compare 2 Clear Enable
|
||
|
||
//----------------------------------------------------------------------------
|
||
|
||
TIM_CCMR1_IC1PSC = longword($000C); //C1PSC[1:0] bits (Input Capture 1 Prescaler)
|
||
TIM_CCMR1_IC1PSC_0 = longword($0004); //it 0
|
||
TIM_CCMR1_IC1PSC_1 = longword($0008); //it 1
|
||
|
||
TIM_CCMR1_IC1F = longword($00F0); //C1F[3:0] bits (Input Capture 1 Filter)
|
||
TIM_CCMR1_IC1F_0 = longword($0010); //it 0
|
||
TIM_CCMR1_IC1F_1 = longword($0020); //it 1
|
||
TIM_CCMR1_IC1F_2 = longword($0040); //it 2
|
||
TIM_CCMR1_IC1F_3 = longword($0080); //it 3
|
||
|
||
TIM_CCMR1_IC2PSC = longword($0C00); //C2PSC[1:0] bits (Input Capture 2 Prescaler)
|
||
TIM_CCMR1_IC2PSC_0 = longword($0400); //it 0
|
||
TIM_CCMR1_IC2PSC_1 = longword($0800); //it 1
|
||
|
||
TIM_CCMR1_IC2F = longword($F000); //C2F[3:0] bits (Input Capture 2 Filter)
|
||
TIM_CCMR1_IC2F_0 = longword($1000); //it 0
|
||
TIM_CCMR1_IC2F_1 = longword($2000); //it 1
|
||
TIM_CCMR1_IC2F_2 = longword($4000); //it 2
|
||
TIM_CCMR1_IC2F_3 = longword($8000); //it 3
|
||
|
||
//***************** Bit definition for TIM_CCMR2 register ******************
|
||
TIM_CCMR2_CC3S = longword($0003); //C3S[1:0] bits (Capture/Compare 3 Selection)
|
||
TIM_CCMR2_CC3S_0 = longword($0001); //it 0
|
||
TIM_CCMR2_CC3S_1 = longword($0002); //it 1
|
||
|
||
TIM_CCMR2_OC3FE = longword($0004); //utput Compare 3 Fast enable
|
||
TIM_CCMR2_OC3PE = longword($0008); //utput Compare 3 Preload enable
|
||
|
||
TIM_CCMR2_OC3M = longword($0070); //C3M[2:0] bits (Output Compare 3 Mode)
|
||
TIM_CCMR2_OC3M_0 = longword($0010); //it 0
|
||
TIM_CCMR2_OC3M_1 = longword($0020); //it 1
|
||
TIM_CCMR2_OC3M_2 = longword($0040); //it 2
|
||
|
||
TIM_CCMR2_OC3CE = longword($0080); //utput Compare 3 Clear Enable
|
||
|
||
TIM_CCMR2_CC4S = longword($0300); //C4S[1:0] bits (Capture/Compare 4 Selection)
|
||
TIM_CCMR2_CC4S_0 = longword($0100); //it 0
|
||
TIM_CCMR2_CC4S_1 = longword($0200); //it 1
|
||
|
||
TIM_CCMR2_OC4FE = longword($0400); //utput Compare 4 Fast enable
|
||
TIM_CCMR2_OC4PE = longword($0800); //utput Compare 4 Preload enable
|
||
|
||
TIM_CCMR2_OC4M = longword($7000); //C4M[2:0] bits (Output Compare 4 Mode)
|
||
TIM_CCMR2_OC4M_0 = longword($1000); //it 0
|
||
TIM_CCMR2_OC4M_1 = longword($2000); //it 1
|
||
TIM_CCMR2_OC4M_2 = longword($4000); //it 2
|
||
|
||
TIM_CCMR2_OC4CE = longword($8000); //utput Compare 4 Clear Enable
|
||
|
||
//----------------------------------------------------------------------------
|
||
|
||
TIM_CCMR2_IC3PSC = longword($000C); //C3PSC[1:0] bits (Input Capture 3 Prescaler)
|
||
TIM_CCMR2_IC3PSC_0 = longword($0004); //it 0
|
||
TIM_CCMR2_IC3PSC_1 = longword($0008); //it 1
|
||
|
||
TIM_CCMR2_IC3F = longword($00F0); //C3F[3:0] bits (Input Capture 3 Filter)
|
||
TIM_CCMR2_IC3F_0 = longword($0010); //it 0
|
||
TIM_CCMR2_IC3F_1 = longword($0020); //it 1
|
||
TIM_CCMR2_IC3F_2 = longword($0040); //it 2
|
||
TIM_CCMR2_IC3F_3 = longword($0080); //it 3
|
||
|
||
TIM_CCMR2_IC4PSC = longword($0C00); //C4PSC[1:0] bits (Input Capture 4 Prescaler)
|
||
TIM_CCMR2_IC4PSC_0 = longword($0400); //it 0
|
||
TIM_CCMR2_IC4PSC_1 = longword($0800); //it 1
|
||
|
||
TIM_CCMR2_IC4F = longword($F000); //C4F[3:0] bits (Input Capture 4 Filter)
|
||
TIM_CCMR2_IC4F_0 = longword($1000); //it 0
|
||
TIM_CCMR2_IC4F_1 = longword($2000); //it 1
|
||
TIM_CCMR2_IC4F_2 = longword($4000); //it 2
|
||
TIM_CCMR2_IC4F_3 = longword($8000); //it 3
|
||
|
||
//****************** Bit definition for TIM_CCER register ******************
|
||
TIM_CCER_CC1E = longword($0001); //apture/Compare 1 output enable
|
||
TIM_CCER_CC1P = longword($0002); //apture/Compare 1 output Polarity
|
||
TIM_CCER_CC1NE = longword($0004); //apture/Compare 1 Complementary output enable
|
||
TIM_CCER_CC1NP = longword($0008); //apture/Compare 1 Complementary output Polarity
|
||
TIM_CCER_CC2E = longword($0010); //apture/Compare 2 output enable
|
||
TIM_CCER_CC2P = longword($0020); //apture/Compare 2 output Polarity
|
||
TIM_CCER_CC2NE = longword($0040); //apture/Compare 2 Complementary output enable
|
||
TIM_CCER_CC2NP = longword($0080); //apture/Compare 2 Complementary output Polarity
|
||
TIM_CCER_CC3E = longword($0100); //apture/Compare 3 output enable
|
||
TIM_CCER_CC3P = longword($0200); //apture/Compare 3 output Polarity
|
||
TIM_CCER_CC3NE = longword($0400); //apture/Compare 3 Complementary output enable
|
||
TIM_CCER_CC3NP = longword($0800); //apture/Compare 3 Complementary output Polarity
|
||
TIM_CCER_CC4E = longword($1000); //apture/Compare 4 output enable
|
||
TIM_CCER_CC4P = longword($2000); //apture/Compare 4 output Polarity
|
||
TIM_CCER_CC4NP = longword($8000); //apture/Compare 4 Complementary output Polarity
|
||
|
||
//****************** Bit definition for TIM_CNT register *******************
|
||
TIM_CNT_CNT = longword($FFFF); //ounter Value
|
||
|
||
//****************** Bit definition for TIM_PSC register *******************
|
||
TIM_PSC_PSC = longword($FFFF); //rescaler Value
|
||
|
||
//****************** Bit definition for TIM_ARR register *******************
|
||
TIM_ARR_ARR = longword($FFFF); //ctual auto-reload Value
|
||
|
||
//****************** Bit definition for TIM_RCR register *******************
|
||
TIM_RCR_REP = longword($FF); //epetition Counter Value
|
||
|
||
//****************** Bit definition for TIM_CCR1 register ******************
|
||
TIM_CCR1_CCR1 = longword($FFFF); //apture/Compare 1 Value
|
||
|
||
//****************** Bit definition for TIM_CCR2 register ******************
|
||
TIM_CCR2_CCR2 = longword($FFFF); //apture/Compare 2 Value
|
||
|
||
//****************** Bit definition for TIM_CCR3 register ******************
|
||
TIM_CCR3_CCR3 = longword($FFFF); //apture/Compare 3 Value
|
||
|
||
//****************** Bit definition for TIM_CCR4 register ******************
|
||
TIM_CCR4_CCR4 = longword($FFFF); //apture/Compare 4 Value
|
||
|
||
//****************** Bit definition for TIM_BDTR register ******************
|
||
TIM_BDTR_DTG = longword($00FF); //TG[0:7] bits (Dead-Time Generator set-up)
|
||
TIM_BDTR_DTG_0 = longword($0001); //it 0
|
||
TIM_BDTR_DTG_1 = longword($0002); //it 1
|
||
TIM_BDTR_DTG_2 = longword($0004); //it 2
|
||
TIM_BDTR_DTG_3 = longword($0008); //it 3
|
||
TIM_BDTR_DTG_4 = longword($0010); //it 4
|
||
TIM_BDTR_DTG_5 = longword($0020); //it 5
|
||
TIM_BDTR_DTG_6 = longword($0040); //it 6
|
||
TIM_BDTR_DTG_7 = longword($0080); //it 7
|
||
|
||
TIM_BDTR_LOCK = longword($0300); //OCK[1:0] bits (Lock Configuration)
|
||
TIM_BDTR_LOCK_0 = longword($0100); //it 0
|
||
TIM_BDTR_LOCK_1 = longword($0200); //it 1
|
||
|
||
TIM_BDTR_OSSI = longword($0400); //ff-State Selection for Idle mode
|
||
TIM_BDTR_OSSR = longword($0800); //ff-State Selection for Run mode
|
||
TIM_BDTR_BKE = longword($1000); //reak enable
|
||
TIM_BDTR_BKP = longword($2000); //reak Polarity
|
||
TIM_BDTR_AOE = longword($4000); //utomatic Output enable
|
||
TIM_BDTR_MOE = longword($8000); //ain Output enable
|
||
|
||
//****************** Bit definition for TIM_DCR register *******************
|
||
TIM_DCR_DBA = longword($001F); //BA[4:0] bits (DMA Base Address)
|
||
TIM_DCR_DBA_0 = longword($0001); //it 0
|
||
TIM_DCR_DBA_1 = longword($0002); //it 1
|
||
TIM_DCR_DBA_2 = longword($0004); //it 2
|
||
TIM_DCR_DBA_3 = longword($0008); //it 3
|
||
TIM_DCR_DBA_4 = longword($0010); //it 4
|
||
|
||
TIM_DCR_DBL = longword($1F00); //BL[4:0] bits (DMA Burst Length)
|
||
TIM_DCR_DBL_0 = longword($0100); //it 0
|
||
TIM_DCR_DBL_1 = longword($0200); //it 1
|
||
TIM_DCR_DBL_2 = longword($0400); //it 2
|
||
TIM_DCR_DBL_3 = longword($0800); //it 3
|
||
TIM_DCR_DBL_4 = longword($1000); //it 4
|
||
|
||
//****************** Bit definition for TIM_DMAR register ******************
|
||
TIM_DMAR_DMAB = longword($FFFF); //MA register for burst accesses
|
||
|
||
//****************** Bit definition for TIM_OR register ********************
|
||
TIM14_OR_TI1_RMP = longword($0003); //I1_RMP[1:0] bits (TIM14 Input 4 remap)
|
||
TIM14_OR_TI1_RMP_0 = longword($0001); //it 0
|
||
TIM14_OR_TI1_RMP_1 = longword($0002); //it 1
|
||
|
||
//****************************************************************************
|
||
|
||
//Universal Synchronous Asynchronous Receiver Transmitter (USART)
|
||
|
||
//****************************************************************************
|
||
//***************** Bit definition for USART_CR1 register ******************
|
||
USART_CR1_UE = longword($00000001); //USART Enable
|
||
USART_CR1_UESM = longword($00000002); //USART Enable in STOP Mode
|
||
USART_CR1_RE = longword($00000004); //Receiver Enable
|
||
USART_CR1_TE = longword($00000008); //Transmitter Enable
|
||
USART_CR1_IDLEIE = longword($00000010); //IDLE Interrupt Enable
|
||
USART_CR1_RXNEIE = longword($00000020); //RXNE Interrupt Enable
|
||
USART_CR1_TCIE = longword($00000040); //Transmission Complete Interrupt Enable
|
||
USART_CR1_TXEIE = longword($00000080); //TXE Interrupt Enable
|
||
USART_CR1_PEIE = longword($00000100); //PE Interrupt Enable
|
||
USART_CR1_PS = longword($00000200); //Parity Selection
|
||
USART_CR1_PCE = longword($00000400); //Parity Control Enable
|
||
USART_CR1_WAKE = longword($00000800); //Receiver Wakeup method
|
||
USART_CR1_M = longword($00001000); //Word length
|
||
USART_CR1_MME = longword($00002000); //Mute Mode Enable
|
||
USART_CR1_CMIE = longword($00004000); //Character match interrupt enable
|
||
USART_CR1_OVER8 = longword($00008000); //Oversampling by 8-bit or 16-bit mode
|
||
USART_CR1_DEDT = longword($001F0000); //DEDT[4:0] bits (Driver Enable Deassertion Time)
|
||
USART_CR1_DEDT_0 = longword($00010000); //Bit 0
|
||
USART_CR1_DEDT_1 = longword($00020000); //Bit 1
|
||
USART_CR1_DEDT_2 = longword($00040000); //Bit 2
|
||
USART_CR1_DEDT_3 = longword($00080000); //Bit 3
|
||
USART_CR1_DEDT_4 = longword($00100000); //Bit 4
|
||
USART_CR1_DEAT = longword($03E00000); //DEAT[4:0] bits (Driver Enable Assertion Time)
|
||
USART_CR1_DEAT_0 = longword($00200000); //Bit 0
|
||
USART_CR1_DEAT_1 = longword($00400000); //Bit 1
|
||
USART_CR1_DEAT_2 = longword($00800000); //Bit 2
|
||
USART_CR1_DEAT_3 = longword($01000000); //Bit 3
|
||
USART_CR1_DEAT_4 = longword($02000000); //Bit 4
|
||
USART_CR1_RTOIE = longword($04000000); //Receive Time Out interrupt enable
|
||
USART_CR1_EOBIE = longword($08000000); //End of Block interrupt enable
|
||
|
||
//***************** Bit definition for USART_CR2 register ******************
|
||
USART_CR2_ADDM7 = longword($00000010); //7-bit or 4-bit Address Detection
|
||
USART_CR2_LBDL = longword($00000020); //LIN Break Detection Length
|
||
USART_CR2_LBDIE = longword($00000040); //LIN Break Detection Interrupt Enable
|
||
USART_CR2_LBCL = longword($00000100); //Last Bit Clock pulse
|
||
USART_CR2_CPHA = longword($00000200); //Clock Phase
|
||
USART_CR2_CPOL = longword($00000400); //Clock Polarity
|
||
USART_CR2_CLKEN = longword($00000800); //Clock Enable
|
||
USART_CR2_STOP = longword($00003000); //STOP[1:0] bits (STOP bits)
|
||
USART_CR2_STOP_0 = longword($00001000); //Bit 0
|
||
USART_CR2_STOP_1 = longword($00002000); //Bit 1
|
||
USART_CR2_LINEN = longword($00004000); //LIN mode enable
|
||
USART_CR2_SWAP = longword($00008000); //SWAP TX/RX pins
|
||
USART_CR2_RXINV = longword($00010000); //RX pin active level inversion
|
||
USART_CR2_TXINV = longword($00020000); //TX pin active level inversion
|
||
USART_CR2_DATAINV = longword($00040000); //Binary data inversion
|
||
USART_CR2_MSBFIRST = longword($00080000); //Most Significant Bit First
|
||
USART_CR2_ABREN = longword($00100000); //Auto Baud-Rate Enable
|
||
USART_CR2_ABRMODE = longword($00600000); //ABRMOD[1:0] bits (Auto Baud-Rate Mode)
|
||
USART_CR2_ABRMODE_0 = longword($00200000); //Bit 0
|
||
USART_CR2_ABRMODE_1 = longword($00400000); //Bit 1
|
||
USART_CR2_RTOEN = longword($00800000); //Receiver Time-Out enable
|
||
USART_CR2_ADD = longword($FF000000); //Address of the USART node
|
||
|
||
//***************** Bit definition for USART_CR3 register ******************
|
||
USART_CR3_EIE = longword($00000001); //Error Interrupt Enable
|
||
USART_CR3_IREN = longword($00000002); //IrDA mode Enable
|
||
USART_CR3_IRLP = longword($00000004); //IrDA Low-Power
|
||
USART_CR3_HDSEL = longword($00000008); //Half-Duplex Selection
|
||
USART_CR3_NACK = longword($00000010); //SmartCard NACK enable
|
||
USART_CR3_SCEN = longword($00000020); //SmartCard mode enable
|
||
USART_CR3_DMAR = longword($00000040); //DMA Enable Receiver
|
||
USART_CR3_DMAT = longword($00000080); //DMA Enable Transmitter
|
||
USART_CR3_RTSE = longword($00000100); //RTS Enable
|
||
USART_CR3_CTSE = longword($00000200); //CTS Enable
|
||
USART_CR3_CTSIE = longword($00000400); //CTS Interrupt Enable
|
||
USART_CR3_ONEBIT = longword($00000800); //One sample bit method enable
|
||
USART_CR3_OVRDIS = longword($00001000); //Overrun Disable
|
||
USART_CR3_DDRE = longword($00002000); //DMA Disable on Reception Error
|
||
USART_CR3_DEM = longword($00004000); //Driver Enable Mode
|
||
USART_CR3_DEP = longword($00008000); //Driver Enable Polarity Selection
|
||
USART_CR3_SCARCNT = longword($000E0000); //SCARCNT[2:0] bits (SmartCard Auto-Retry Count)
|
||
USART_CR3_SCARCNT_0 = longword($00020000); //Bit 0
|
||
USART_CR3_SCARCNT_1 = longword($00040000); //Bit 1
|
||
USART_CR3_SCARCNT_2 = longword($00080000); //Bit 2
|
||
USART_CR3_WUS = longword($00300000); //WUS[1:0] bits (Wake UP Interrupt Flag Selection)
|
||
USART_CR3_WUS_0 = longword($00100000); //Bit 0
|
||
USART_CR3_WUS_1 = longword($00200000); //Bit 1
|
||
USART_CR3_WUFIE = longword($00400000); //Wake Up Interrupt Enable
|
||
|
||
//***************** Bit definition for USART_BRR register ******************
|
||
USART_BRR_DIV_FRACTION = longword($000F); //Fraction of USARTDIV
|
||
USART_BRR_DIV_MANTISSA = longword($FFF0); //Mantissa of USARTDIV
|
||
|
||
//***************** Bit definition for USART_GTPR register *****************
|
||
USART_GTPR_PSC = longword($00FF); //PSC[7:0] bits (Prescaler value)
|
||
USART_GTPR_GT = longword($FF00); //GT[7:0] bits (Guard time value)
|
||
|
||
//****************** Bit definition for USART_RTOR register ****************
|
||
USART_RTOR_RTO = longword($00FFFFFF); //Receiver Time Out Value
|
||
USART_RTOR_BLEN = longword($FF000000); //Block Length
|
||
|
||
//****************** Bit definition for USART_RQR register *****************
|
||
USART_RQR_ABRRQ = longword($0001); //Auto-Baud Rate Request
|
||
USART_RQR_SBKRQ = longword($0002); //Send Break Request
|
||
USART_RQR_MMRQ = longword($0004); //Mute Mode Request
|
||
USART_RQR_RXFRQ = longword($0008); //Receive Data flush Request
|
||
USART_RQR_TXFRQ = longword($0010); //Transmit data flush Request
|
||
|
||
//****************** Bit definition for USART_ISR register *****************
|
||
USART_ISR_PE = longword($00000001); //Parity Error
|
||
USART_ISR_FE = longword($00000002); //Framing Error
|
||
USART_ISR_NE = longword($00000004); //Noise detected Flag
|
||
USART_ISR_ORE = longword($00000008); //OverRun Error
|
||
USART_ISR_IDLE = longword($00000010); //IDLE line detected
|
||
USART_ISR_RXNE = longword($00000020); //Read Data Register Not Empty
|
||
USART_ISR_TC = longword($00000040); //Transmission Complete
|
||
USART_ISR_TXE = longword($00000080); //Transmit Data Register Empty
|
||
USART_ISR_LBD = longword($00000100); //LIN Break Detection Flag
|
||
USART_ISR_CTSIF = longword($00000200); //CTS interrupt flag
|
||
USART_ISR_CTS = longword($00000400); //CTS flag
|
||
USART_ISR_RTOF = longword($00000800); //Receiver Time Out
|
||
USART_ISR_EOBF = longword($00001000); //End Of Block Flag
|
||
USART_ISR_ABRE = longword($00004000); //Auto-Baud Rate Error
|
||
USART_ISR_ABRF = longword($00008000); //Auto-Baud Rate Flag
|
||
USART_ISR_BUSY = longword($00010000); //Busy Flag
|
||
USART_ISR_CMF = longword($00020000); //Character Match Flag
|
||
USART_ISR_SBKF = longword($00040000); //Send Break Flag
|
||
USART_ISR_RWU = longword($00080000); //Receive Wake Up from mute mode Flag
|
||
USART_ISR_WUF = longword($00100000); //Wake Up from stop mode Flag
|
||
USART_ISR_TEACK = longword($00200000); //Transmit Enable Acknowledge Flag
|
||
USART_ISR_REACK = longword($00400000); //Receive Enable Acknowledge Flag
|
||
|
||
//****************** Bit definition for USART_ICR register *****************
|
||
USART_ICR_PECF = longword($00000001); //Parity Error Clear Flag
|
||
USART_ICR_FECF = longword($00000002); //Framing Error Clear Flag
|
||
USART_ICR_NCF = longword($00000004); //Noise detected Clear Flag
|
||
USART_ICR_ORECF = longword($00000008); //OverRun Error Clear Flag
|
||
USART_ICR_IDLECF = longword($00000010); //IDLE line detected Clear Flag
|
||
USART_ICR_TCCF = longword($00000040); //Transmission Complete Clear Flag
|
||
USART_ICR_LBDCF = longword($00000100); //LIN Break Detection Clear Flag
|
||
USART_ICR_CTSCF = longword($00000200); //CTS Interrupt Clear Flag
|
||
USART_ICR_RTOCF = longword($00000800); //Receiver Time Out Clear Flag
|
||
USART_ICR_EOBCF = longword($00001000); //End Of Block Clear Flag
|
||
USART_ICR_CMCF = longword($00020000); //Character Match Clear Flag
|
||
USART_ICR_WUCF = longword($00100000); //Wake Up from stop mode Clear Flag
|
||
|
||
//****************** Bit definition for USART_RDR register *****************
|
||
USART_RDR_RDR = longword($01FF); //RDR[8:0] bits (Receive Data value)
|
||
|
||
//****************** Bit definition for USART_TDR register *****************
|
||
USART_TDR_TDR = longword($01FF); //TDR[8:0] bits (Transmit Data value)
|
||
|
||
//****************************************************************************
|
||
|
||
//Window WATCHDOG (WWDG)
|
||
|
||
//****************************************************************************
|
||
|
||
//****************** Bit definition for WWDG_CR register *******************
|
||
WWDG_CR_T = longword($7F); //T[6:0] bits (7-Bit counter (MSB to LSB))
|
||
WWDG_CR_T0 = longword($01); //Bit 0
|
||
WWDG_CR_T1 = longword($02); //Bit 1
|
||
WWDG_CR_T2 = longword($04); //Bit 2
|
||
WWDG_CR_T3 = longword($08); //Bit 3
|
||
WWDG_CR_T4 = longword($10); //Bit 4
|
||
WWDG_CR_T5 = longword($20); //Bit 5
|
||
WWDG_CR_T6 = longword($40); //Bit 6
|
||
|
||
WWDG_CR_WDGA = longword($80); //Activation bit
|
||
|
||
//****************** Bit definition for WWDG_CFR register ******************
|
||
WWDG_CFR_W = longword($007F); //W[6:0] bits (7-bit window value)
|
||
WWDG_CFR_W0 = longword($0001); //Bit 0
|
||
WWDG_CFR_W1 = longword($0002); //Bit 1
|
||
WWDG_CFR_W2 = longword($0004); //Bit 2
|
||
WWDG_CFR_W3 = longword($0008); //Bit 3
|
||
WWDG_CFR_W4 = longword($0010); //Bit 4
|
||
WWDG_CFR_W5 = longword($0020); //Bit 5
|
||
WWDG_CFR_W6 = longword($0040); //Bit 6
|
||
|
||
WWDG_CFR_WDGTB = longword($0180); //WDGTB[1:0] bits (Timer Base)
|
||
WWDG_CFR_WDGTB0 = longword($0080); //Bit 0
|
||
WWDG_CFR_WDGTB1 = longword($0100); //Bit 1
|
||
|
||
WWDG_CFR_EWI = longword($0200); //Early Wakeup Interrupt
|
||
|
||
//****************** Bit definition for WWDG_SR register *******************
|
||
WWDG_SR_EWIF = longword($01); //Early Wakeup Interrupt Flag
|
||
|
||
//*********************** (C) COPYRIGHT STMicroelectronics *****END OF FILE***
|
||
implementation
|
||
procedure NonMaskableInt_interrupt; external name 'NonMaskableInt_interrupt';
|
||
procedure HardFault_interrupt; external name 'HardFault_interrupt';
|
||
procedure SVC_interrupt; external name 'SVC_interrupt';
|
||
procedure PendSV_interrupt; external name 'PendSV_interrupt';
|
||
procedure SysTick_interrupt; external name 'SysTick_interrupt';
|
||
procedure WWDG_interrupt; external name 'WWDG_interrupt';
|
||
procedure PVD_interrupt; external name 'PVD_interrupt';
|
||
procedure RTC_interrupt; external name 'RTC_interrupt';
|
||
procedure FLASH_interrupt; external name 'FLASH_interrupt';
|
||
procedure RCC_interrupt; external name 'RCC_interrupt';
|
||
procedure EXTI0_1_interrupt; external name 'EXTI0_1_interrupt';
|
||
procedure EXTI2_3_interrupt; external name 'EXTI2_3_interrupt';
|
||
procedure EXTI4_15_interrupt; external name 'EXTI4_15_interrupt';
|
||
procedure TS_interrupt; external name 'TS_interrupt';
|
||
procedure DMA1_Channel1_interrupt; external name 'DMA1_Channel1_interrupt';
|
||
procedure DMA1_Channel2_3_interrupt; external name 'DMA1_Channel2_3_interrupt';
|
||
procedure DMA1_Channel4_5_interrupt; external name 'DMA1_Channel4_5_interrupt';
|
||
procedure ADC1_COMP_interrupt; external name 'ADC1_COMP_interrupt';
|
||
procedure TIM1_BRK_UP_TRG_COM_interrupt; external name 'TIM1_BRK_UP_TRG_COM_interrupt';
|
||
procedure TIM1_CC_interrupt; external name 'TIM1_CC_interrupt';
|
||
procedure TIM2_interrupt; external name 'TIM2_interrupt';
|
||
procedure TIM3_interrupt; external name 'TIM3_interrupt';
|
||
procedure TIM6_DAC_interrupt; external name 'TIM6_DAC_interrupt';
|
||
procedure TIM14_interrupt; external name 'TIM14_interrupt';
|
||
procedure TIM15_interrupt; external name 'TIM15_interrupt';
|
||
procedure TIM16_interrupt; external name 'TIM16_interrupt';
|
||
procedure TIM17_interrupt; external name 'TIM17_interrupt';
|
||
procedure I2C1_interrupt; external name 'I2C1_interrupt';
|
||
procedure I2C2_interrupt; external name 'I2C2_interrupt';
|
||
procedure SPI1_interrupt; external name 'SPI1_interrupt';
|
||
procedure SPI2_interrupt; external name 'SPI2_interrupt';
|
||
procedure USART1_interrupt; external name 'USART1_interrupt';
|
||
procedure USART2_interrupt; external name 'USART2_interrupt';
|
||
procedure CEC_interrupt; external name 'CEC_interrupt';
|
||
|
||
{$i cortexm3_start.inc}
|
||
|
||
procedure Vectors; assembler; nostackframe;
|
||
label interrupt_vectors;
|
||
asm
|
||
.section ".init.interrupt_vectors"
|
||
interrupt_vectors:
|
||
.long _stack_top
|
||
.long Startup
|
||
.long NonMaskableInt_interrupt
|
||
.long HardFault_interrupt
|
||
.long 0
|
||
.long 0
|
||
.long 0
|
||
.long 0
|
||
.long 0
|
||
.long 0
|
||
.long 0
|
||
.long SVC_interrupt
|
||
.long 0
|
||
.long 0
|
||
.long PendSV_interrupt
|
||
.long SysTick_interrupt
|
||
.long WWDG_interrupt
|
||
.long PVD_interrupt
|
||
.long RTC_interrupt
|
||
.long FLASH_interrupt
|
||
.long RCC_interrupt
|
||
.long EXTI0_1_interrupt
|
||
.long EXTI2_3_interrupt
|
||
.long EXTI4_15_interrupt
|
||
.long TS_interrupt
|
||
.long DMA1_Channel1_interrupt
|
||
.long DMA1_Channel2_3_interrupt
|
||
.long DMA1_Channel4_5_interrupt
|
||
.long ADC1_COMP_interrupt
|
||
.long TIM1_BRK_UP_TRG_COM_interrupt
|
||
.long TIM1_CC_interrupt
|
||
.long TIM2_interrupt
|
||
.long TIM3_interrupt
|
||
.long TIM6_DAC_interrupt
|
||
.long 0
|
||
.long TIM14_interrupt
|
||
.long TIM15_interrupt
|
||
.long TIM16_interrupt
|
||
.long TIM17_interrupt
|
||
.long I2C1_interrupt
|
||
.long I2C2_interrupt
|
||
.long SPI1_interrupt
|
||
.long SPI2_interrupt
|
||
.long USART1_interrupt
|
||
.long USART2_interrupt
|
||
.long 0
|
||
.long CEC_interrupt
|
||
.long 0
|
||
|
||
.weak NonMaskableInt_interrupt
|
||
.weak HardFault_interrupt
|
||
.weak SVC_interrupt
|
||
.weak PendSV_interrupt
|
||
.weak SysTick_interrupt
|
||
.weak WWDG_interrupt
|
||
.weak PVD_interrupt
|
||
.weak RTC_interrupt
|
||
.weak FLASH_interrupt
|
||
.weak RCC_interrupt
|
||
.weak EXTI0_1_interrupt
|
||
.weak EXTI2_3_interrupt
|
||
.weak EXTI4_15_interrupt
|
||
.weak TS_interrupt
|
||
.weak DMA1_Channel1_interrupt
|
||
.weak DMA1_Channel2_3_interrupt
|
||
.weak DMA1_Channel4_5_interrupt
|
||
.weak ADC1_COMP_interrupt
|
||
.weak TIM1_BRK_UP_TRG_COM_interrupt
|
||
.weak TIM1_CC_interrupt
|
||
.weak TIM2_interrupt
|
||
.weak TIM3_interrupt
|
||
.weak TIM6_DAC_interrupt
|
||
.weak TIM14_interrupt
|
||
.weak TIM15_interrupt
|
||
.weak TIM16_interrupt
|
||
.weak TIM17_interrupt
|
||
.weak I2C1_interrupt
|
||
.weak I2C2_interrupt
|
||
.weak SPI1_interrupt
|
||
.weak SPI2_interrupt
|
||
.weak USART1_interrupt
|
||
.weak USART2_interrupt
|
||
.weak CEC_interrupt
|
||
|
||
.set NonMaskableInt_interrupt, HaltProc
|
||
.set HardFault_interrupt, HaltProc
|
||
.set SVC_interrupt, HaltProc
|
||
.set PendSV_interrupt, HaltProc
|
||
.set SysTick_interrupt, HaltProc
|
||
.set WWDG_interrupt, HaltProc
|
||
.set PVD_interrupt, HaltProc
|
||
.set RTC_interrupt, HaltProc
|
||
.set FLASH_interrupt, HaltProc
|
||
.set RCC_interrupt, HaltProc
|
||
.set EXTI0_1_interrupt, HaltProc
|
||
.set EXTI2_3_interrupt, HaltProc
|
||
.set EXTI4_15_interrupt, HaltProc
|
||
.set TS_interrupt, HaltProc
|
||
.set DMA1_Channel1_interrupt, HaltProc
|
||
.set DMA1_Channel2_3_interrupt, HaltProc
|
||
.set DMA1_Channel4_5_interrupt, HaltProc
|
||
.set ADC1_COMP_interrupt, HaltProc
|
||
.set TIM1_BRK_UP_TRG_COM_interrupt, HaltProc
|
||
.set TIM1_CC_interrupt, HaltProc
|
||
.set TIM2_interrupt, HaltProc
|
||
.set TIM3_interrupt, HaltProc
|
||
.set TIM6_DAC_interrupt, HaltProc
|
||
.set TIM14_interrupt, HaltProc
|
||
.set TIM15_interrupt, HaltProc
|
||
.set TIM16_interrupt, HaltProc
|
||
.set TIM17_interrupt, HaltProc
|
||
.set I2C1_interrupt, HaltProc
|
||
.set I2C2_interrupt, HaltProc
|
||
.set SPI1_interrupt, HaltProc
|
||
.set SPI2_interrupt, HaltProc
|
||
.set USART1_interrupt, HaltProc
|
||
.set USART2_interrupt, HaltProc
|
||
.set CEC_interrupt, HaltProc
|
||
.text
|
||
end;
|
||
end.
|