STM32G0 MCAL 0.0.1
Tiny MCAL for educational purpose.
Loading...
Searching...
No Matches
Registers.h
Go to the documentation of this file.
1
7#ifndef REGISTERS_H
8#define REGISTERS_H
9
14typedef enum
15{
16 /****** Cortex-M0+ Processor Exceptions Numbers ***************************************************************/
22 /****** STM32G0xxxx specific Interrupt Numbers ************************/
38 TIM2_IRQn = 15,
46 I2C1_IRQn = 23,
48 SPI1_IRQn = 25,
53 CEC_IRQn = 30,
55
59#define FLASH_BASE ( 0x08000000UL )
60#define SRAM_BASE ( 0x20000000UL )
61#define PERIPH_BASE ( 0x40000000UL )
62#define IOPORT_BASE ( 0x50000000UL )
63#define SCS_BASE ( 0xE000E000UL )
64#define APBPERIPH_BASE ( PERIPH_BASE )
65#define AHBPERIPH_BASE ( PERIPH_BASE + 0x00020000UL )
68
72typedef struct
73{
74 volatile uint32 ISER[ 1U ];
75 volatile uint32 RESERVED0[ 31U ];
76 volatile uint32 ICER[ 1U ];
77 volatile uint32 RESERVED1[ 31U ];
78 volatile uint32 ISPR[ 1U ];
79 volatile uint32 RESERVED2[ 31U ];
80 volatile uint32 ICPR[ 1U ];
81 volatile uint32 RESERVED3[ 31U ];
82 volatile uint32 RESERVED4[ 64U ];
83 volatile uint32 IP[ 8U ];
85
89#define NVIC_BASE ( SCS_BASE + 0x0100UL )
90#define NVIC ( (Nvic_RegisterType *)NVIC_BASE )
93
97typedef struct
98{
99 volatile uint32 CR;
100 volatile uint32 ICSCR;
101 volatile uint32 CFGR;
102 volatile uint32 PLLCFGR;
103 volatile uint32 Reserv;
104 volatile uint32 CRRCR;
105 volatile uint32 CIER;
106 volatile uint32 CIFR;
107 volatile uint32 CICR;
108 volatile uint32 IOPRSTR;
109 volatile uint32 AHBRSTR;
110 volatile uint32 APBRSTR1;
111 volatile uint32 APBRSTR2;
112 volatile uint32 IOPENR;
113 volatile uint32 AHBENR;
114 volatile uint32 APBENR1;
115 volatile uint32 APBENR2;
116 volatile uint32 IOPSMENR;
117 volatile uint32 AHBSMENR;
118 volatile uint32 APBSMENR1;
119 volatile uint32 APBSMENR2;
120 volatile uint32 CCIPR;
121 volatile uint32 CCIPR2;
122 volatile uint32 BDCR;
123 volatile uint32 CSR;
125
129#define RCC_BASE ( AHBPERIPH_BASE + 0x00001000UL )
130#define RCC ( (Rcc_RegisterType *)RCC_BASE )
133
137typedef struct
138{
139 volatile uint32 MODER;
140 volatile uint32 OTYPER;
141 volatile uint32 OSPEEDR;
142 volatile uint32 PUPDR;
143 volatile uint32 IDR;
144 volatile uint32 ODR;
145 volatile uint32 BSRR;
146 volatile uint32 LCKR;
147 volatile uint32 AFRL;
148 volatile uint32 AFRH;
149 volatile uint32 BRR;
151
155#define PORTA_BASE ( IOPORT_BASE + 0x00000000UL )
156#define PORTB_BASE ( IOPORT_BASE + 0x00000400UL )
157#define PORTC_BASE ( IOPORT_BASE + 0x00000800UL )
158#define PORTD_BASE ( IOPORT_BASE + 0x00000C00UL )
159#define PORTE_BASE ( IOPORT_BASE + 0x00001000UL )
160#define PORTF_BASE ( IOPORT_BASE + 0x00001400UL )
161#define PORTA ( (Port_RegisterType *)PORTA_BASE )
162#define PORTB ( (Port_RegisterType *)PORTB_BASE )
163#define PORTC ( (Port_RegisterType *)PORTC_BASE )
164#define PORTD ( (Port_RegisterType *)PORTD_BASE )
165#define PORTE ( (Port_RegisterType *)PORTE_BASE )
166#define PORTF ( (Port_RegisterType *)PORTF_BASE )
169
173typedef struct
174{
175 volatile uint32 Reserved1[ 4 ];
176 volatile uint32 IDR;
177 volatile uint32 ODR;
178 volatile uint32 BSRR;
179 volatile uint32 Reserved2[ 3 ];
180 volatile uint32 BRR;
182
186#define DIOA ( (Dio_RegisterType *)PORTA_BASE )
187#define DIOB ( (Dio_RegisterType *)PORTB_BASE )
188#define DIOC ( (Dio_RegisterType *)PORTC_BASE )
189#define DIOD ( (Dio_RegisterType *)PORTD_BASE )
190#define DIOE ( (Dio_RegisterType *)PORTE_BASE )
191#define DIOF ( (Dio_RegisterType *)PORTF_BASE )
194
198#define RCC_GPIOA_CLK_EN( ) RCC->IOPENR |= 0x01u;
199#define RCC_GPIOB_CLK_EN( ) RCC->IOPENR |= 0x02u;
200#define RCC_GPIOC_CLK_EN( ) RCC->IOPENR |= 0x04u;
201#define RCC_GPIOD_CLK_EN( ) RCC->IOPENR |= 0x08u;
202#define RCC_GPIOE_CLK_EN( ) RCC->IOPENR |= 0x10u;
203#define RCC_GPIOF_CLK_EN( ) RCC->IOPENR |= 0x20u;
206
210#define RCC_GPIOA_CLK_DIS( ) RCC->IOPENR &= ~( 1u << 0u );
211#define RCC_GPIOB_CLK_DIS( ) RCC->IOPENR &= ~( 1u << 1u );
212#define RCC_GPIOC_CLK_DIS( ) RCC->IOPENR &= ~( 1u << 2u );
213#define RCC_GPIOD_CLK_DIS( ) RCC->IOPENR &= ~( 1u << 3u );
214#define RCC_GPIOE_CLK_DIS( ) RCC->IOPENR &= ~( 1u << 4u );
215#define RCC_GPIOF_CLK_DIS( ) RCC->IOPENR &= ~( 1u << 5u );
218
222typedef struct
223{
224 volatile uint32 CR1;
225 volatile uint32 CR2;
226 volatile uint32 Reserved0;
227 volatile uint32 DIER;
228 volatile uint32 SR;
229 volatile uint32 EGR;
230 volatile uint32 Reserved1[ 3u ];
231 volatile uint32 CNT;
232 volatile uint32 PSC;
233 volatile uint32 ARR;
235
239#define TIM6_BASE ( PERIPH_BASE + 0x00001000UL )
240#define TIM7_BASE ( PERIPH_BASE + 0x00001400UL )
241#define TIM6 ( (Gpt_RegisterType *)TIM6_BASE )
242#define TIM7 ( (Gpt_RegisterType *)TIM7_BASE )
244
248typedef struct
249{
250 volatile uint32 CREL;
251 volatile uint32 ENDN;
253 volatile uint32 DBTP;
254 volatile uint32 TEST;
255 volatile uint32 RWD;
256 volatile uint32 CCCR;
257 volatile uint32 NBTP;
258 volatile uint32 TSCC;
259 volatile uint32 TSCV;
260 volatile uint32 TOCC;
261 volatile uint32 TOCV;
263 volatile uint32 ECR;
264 volatile uint32 PSR;
265 volatile uint32 TDCR;
267 volatile uint32 IR;
268 volatile uint32 IE;
269 volatile uint32 ILS;
270 volatile uint32 ILE;
272 volatile uint32 RXGFC;
273 volatile uint32 XIDAM;
274 volatile uint32 HPMS;
276 volatile uint32 RXF0S;
277 volatile uint32 RXF0A;
278 volatile uint32 RXF1S;
279 volatile uint32 RXF1A;
281 volatile uint32 TXBC;
282 volatile uint32 TXFQS;
283 volatile uint32 TXBRP;
284 volatile uint32 TXBAR;
285 volatile uint32 TXBCR;
286 volatile uint32 TXBTO;
287 volatile uint32 TXBCF;
288 volatile uint32 TXBTIE;
289 volatile uint32 TXBCIE;
290 volatile uint32 TXEFS;
291 volatile uint32 TXEFA;
293 volatile uint32 CKDIV;
295
300#define CAN1_BASE ( PERIPH_BASE + 0x00006400UL )
301#define CAN2_BASE ( PERIPH_BASE + 0x00006800UL )
302#define CAN1 ( (Can_RegisterType *)CAN1_BASE )
303#define CAN2 ( (Can_RegisterType *)CAN2_BASE )
306
310typedef struct
311{
312 volatile uint32 FLSSA[ 28 ];
313 volatile uint32 FLESA[ 16 ];
314 volatile uint32 F0SA[ 54 ];
315 volatile uint32 F1SA[ 54 ];
316 volatile uint32 EFSA[ 6 ];
317 volatile uint32 TBSA[ 54 ];
319
324#define SRAMCAN1_BASE ( APBPERIPH_BASE + 0x0000B400UL )
325#define SRAMCAN2_BASE ( APBPERIPH_BASE + 0x0000B800UL )
326#define SRAMCAN1 ( (SramCan_RegisterType *)SRAMCAN1_BASE )
327#define SRAMCAN2 ( (SramCan_RegisterType *)SRAMCAN2_BASE )
330
331#endif
unsigned int uint32
Definition Platform_Types.h:98
Nvic_IrqType
Nested Vectored Interrupt Controller (NVIC) interrupt types for Cortex-M0+ and STM32G0xxxx....
Definition Registers.h:15
@ DMA1_Ch4_7_DMA2_Ch1_5_DMAMUX1_OVR_IRQn
Definition Registers.h:34
@ PendSV_IRQn
Definition Registers.h:20
@ RCC_CRS_IRQn
Definition Registers.h:27
@ SPI2_3_IRQn
Definition Registers.h:49
@ TIM16_FDCAN_IT0_IRQn
Definition Registers.h:44
@ ADC1_COMP_IRQn
Definition Registers.h:35
@ TIM15_IRQn
Definition Registers.h:43
@ TIM17_FDCAN_IT1_IRQn
Definition Registers.h:45
@ TIM2_IRQn
Definition Registers.h:38
@ DMA1_Channel1_IRQn
Definition Registers.h:32
@ SVCall_IRQn
Definition Registers.h:19
@ USB_UCPD1_2_IRQn
Definition Registers.h:31
@ TIM7_LPTIM2_IRQn
Definition Registers.h:41
@ TIM6_DAC_LPTIM1_IRQn
Definition Registers.h:40
@ SysTick_IRQn
Definition Registers.h:21
@ EXTI2_3_IRQn
Definition Registers.h:29
@ TIM3_TIM4_IRQn
Definition Registers.h:39
@ TIM1_BRK_UP_TRG_COM_IRQn
Definition Registers.h:36
@ CEC_IRQn
Definition Registers.h:53
@ FLASH_IRQn
Definition Registers.h:26
@ WWDG_IRQn
Definition Registers.h:23
@ USART3_4_5_6_LPUART1_IRQn
Definition Registers.h:52
@ EXTI0_1_IRQn
Definition Registers.h:28
@ PVD_VDDIO2_IRQn
Definition Registers.h:24
@ DMA1_Channel2_3_IRQn
Definition Registers.h:33
@ SPI1_IRQn
Definition Registers.h:48
@ HardFault_IRQn
Definition Registers.h:18
@ USART2_LPUART2_IRQn
Definition Registers.h:51
@ TIM14_IRQn
Definition Registers.h:42
@ USART1_IRQn
Definition Registers.h:50
@ RTC_TAMP_IRQn
Definition Registers.h:25
@ NonMaskableInt_IRQn
Definition Registers.h:17
@ EXTI4_15_IRQn
Definition Registers.h:30
@ TIM1_CC_IRQn
Definition Registers.h:37
@ I2C1_IRQn
Definition Registers.h:46
@ I2C2_3_IRQn
Definition Registers.h:47
CAN Controller Area Network.
Definition Registers.h:249
uint32 RESERVED2[4]
Definition Registers.h:262
volatile uint32 TXBTIE
Definition Registers.h:288
volatile uint32 TXEFS
Definition Registers.h:290
volatile uint32 TXBCF
Definition Registers.h:287
volatile uint32 TSCC
Definition Registers.h:258
uint32 RESERVED3
Definition Registers.h:266
volatile uint32 HPMS
Definition Registers.h:274
volatile uint32 TXBCIE
Definition Registers.h:289
volatile uint32 TSCV
Definition Registers.h:259
volatile uint32 CKDIV
Definition Registers.h:293
volatile uint32 ILS
Definition Registers.h:269
volatile uint32 ENDN
Definition Registers.h:251
volatile uint32 TXEFA
Definition Registers.h:291
volatile uint32 TOCC
Definition Registers.h:260
volatile uint32 CCCR
Definition Registers.h:256
volatile uint32 TXFQS
Definition Registers.h:282
volatile uint32 CREL
Definition Registers.h:250
volatile uint32 TXBC
Definition Registers.h:281
volatile uint32 RXF1A
Definition Registers.h:279
volatile uint32 RXF0A
Definition Registers.h:277
volatile uint32 TOCV
Definition Registers.h:261
uint32 RESERVED5
Definition Registers.h:275
uint32 RESERVED4[8]
Definition Registers.h:271
volatile uint32 RXF1S
Definition Registers.h:278
volatile uint32 DBTP
Definition Registers.h:253
volatile uint32 TDCR
Definition Registers.h:265
volatile uint32 XIDAM
Definition Registers.h:273
volatile uint32 TEST
Definition Registers.h:254
volatile uint32 RWD
Definition Registers.h:255
volatile uint32 PSR
Definition Registers.h:264
volatile uint32 TXBRP
Definition Registers.h:283
volatile uint32 RXF0S
Definition Registers.h:276
volatile uint32 TXBTO
Definition Registers.h:286
volatile uint32 TXBCR
Definition Registers.h:285
volatile uint32 ECR
Definition Registers.h:263
volatile uint32 IR
Definition Registers.h:267
volatile uint32 TXBAR
Definition Registers.h:284
volatile uint32 ILE
Definition Registers.h:270
uint32 RESERVED1
Definition Registers.h:252
volatile uint32 IE
Definition Registers.h:268
volatile uint32 RXGFC
Definition Registers.h:272
uint32 RESERVED6[8]
Definition Registers.h:280
volatile uint32 NBTP
Definition Registers.h:257
uint32 RESERVED7[5]
Definition Registers.h:292
GPIOS registers struct for Dio.
Definition Registers.h:174
volatile uint32 BSRR
Definition Registers.h:178
volatile uint32 Reserved2[3]
Definition Registers.h:179
volatile uint32 Reserved1[4]
Definition Registers.h:175
volatile uint32 IDR
Definition Registers.h:176
volatile uint32 ODR
Definition Registers.h:177
volatile uint32 BRR
Definition Registers.h:180
GPT registers struct.
Definition Registers.h:223
volatile uint32 DIER
Definition Registers.h:227
volatile uint32 Reserved1[3u]
Definition Registers.h:230
volatile uint32 Reserved0
Definition Registers.h:226
volatile uint32 CNT
Definition Registers.h:231
volatile uint32 EGR
Definition Registers.h:229
volatile uint32 SR
Definition Registers.h:228
volatile uint32 CR1
Definition Registers.h:224
volatile uint32 ARR
Definition Registers.h:233
volatile uint32 CR2
Definition Registers.h:225
volatile uint32 PSC
Definition Registers.h:232
Nested Vectored Interrupt Controller (NVIC) structure.
Definition Registers.h:73
volatile uint32 IP[8U]
Definition Registers.h:83
volatile uint32 ISER[1U]
Definition Registers.h:74
volatile uint32 ICER[1U]
Definition Registers.h:76
volatile uint32 RESERVED0[31U]
Definition Registers.h:75
volatile uint32 ISPR[1U]
Definition Registers.h:78
volatile uint32 ICPR[1U]
Definition Registers.h:80
volatile uint32 RESERVED1[31U]
Definition Registers.h:77
volatile uint32 RESERVED3[31U]
Definition Registers.h:81
volatile uint32 RESERVED4[64U]
Definition Registers.h:82
volatile uint32 RESERVED2[31U]
Definition Registers.h:79
GPIOS registers struct.
Definition Registers.h:138
volatile uint32 MODER
Definition Registers.h:139
volatile uint32 AFRL
Definition Registers.h:147
volatile uint32 IDR
Definition Registers.h:143
volatile uint32 AFRH
Definition Registers.h:148
volatile uint32 OSPEEDR
Definition Registers.h:141
volatile uint32 LCKR
Definition Registers.h:146
volatile uint32 OTYPER
Definition Registers.h:140
volatile uint32 BRR
Definition Registers.h:149
volatile uint32 BSRR
Definition Registers.h:145
volatile uint32 ODR
Definition Registers.h:144
volatile uint32 PUPDR
Definition Registers.h:142
RCC registers struct.
Definition Registers.h:98
volatile uint32 Reserv
Definition Registers.h:103
volatile uint32 APBENR1
Definition Registers.h:114
volatile uint32 IOPENR
Definition Registers.h:112
volatile uint32 APBRSTR2
Definition Registers.h:111
volatile uint32 APBSMENR1
Definition Registers.h:118
volatile uint32 CIER
Definition Registers.h:105
volatile uint32 APBSMENR2
Definition Registers.h:119
volatile uint32 CR
Definition Registers.h:99
volatile uint32 AHBENR
Definition Registers.h:113
volatile uint32 CCIPR2
Definition Registers.h:121
volatile uint32 AHBSMENR
Definition Registers.h:117
volatile uint32 CFGR
Definition Registers.h:101
volatile uint32 CCIPR
Definition Registers.h:120
volatile uint32 APBENR2
Definition Registers.h:115
volatile uint32 ICSCR
Definition Registers.h:100
volatile uint32 IOPRSTR
Definition Registers.h:108
volatile uint32 PLLCFGR
Definition Registers.h:102
volatile uint32 AHBRSTR
Definition Registers.h:109
volatile uint32 IOPSMENR
Definition Registers.h:116
volatile uint32 CSR
Definition Registers.h:123
volatile uint32 CRRCR
Definition Registers.h:104
volatile uint32 CIFR
Definition Registers.h:106
volatile uint32 CICR
Definition Registers.h:107
volatile uint32 BDCR
Definition Registers.h:122
volatile uint32 APBRSTR1
Definition Registers.h:110
SRAM CAN for Hardware objects.
Definition Registers.h:311
volatile uint32 TBSA[54]
Definition Registers.h:317
volatile uint32 F0SA[54]
Definition Registers.h:314
volatile uint32 FLESA[16]
Definition Registers.h:313
volatile uint32 F1SA[54]
Definition Registers.h:315
volatile uint32 FLSSA[28]
Definition Registers.h:312
volatile uint32 EFSA[6]
Definition Registers.h:316