microHAL
An abstraction layer for your future F4xx projects
Loading...
Searching...
No Matches
stm32f4xx.h
Go to the documentation of this file.
1
11#ifndef STM32F4XX_STUBS
12#define STM32F4XX_STUBS
13
14/* -- Includes -- */
15#include <stdint.h>
16#include "system_stm32f4xx.h"
17
18/* GPIO */
19#define GPIOA_BASE (0UL)
20
21/* ADC */
22#define ADC1_BASE (0UL)
23#define ADC123_COMMON_BASE (0UL)
24#define ADC_SR_EOC_Pos (1U)
25#define ADC_CCR_ADCPRE_Pos (16U)
26#define ADC_CCR_ADCPRE_Msk (0x3UL << ADC_CCR_ADCPRE_Pos)
27#define ADC_CR1_RES_Pos (24U)
28#define ADC_CR1_RES_Msk (0x3UL << ADC_CR1_RES_Pos)
29#define ADC_CR1_SCAN_Pos (8U)
30#define ADC_CR1_SCAN_Msk (0x1UL << ADC_CR1_SCAN_Pos)
31#define ADC_CR1_DISCEN_Pos (11U)
32#define ADC_CR1_DISCEN_Msk (0x1UL << ADC_CR1_DISCEN_Pos)
33#define ADC_CR2_CONT_Pos (1U)
34#define ADC_CR2_CONT_Msk (0x1UL << ADC_CR2_CONT_Pos)
35#define ADC_CR2_DMA_Pos (8U)
36#define ADC_CR2_DMA_Msk (0x1UL << ADC_CR2_DMA_Pos)
37#define ADC_CR2_DDS_Pos (9U)
38#define ADC_CR2_DDS_Msk (0x1UL << ADC_CR2_DDS_Pos)
39#define ADC_CR2_SWSTART_Msk (0x1UL << (30U))
40#define ADC_CR2_ADON_Msk (0x1UL << (0U))
41#define ADC_SQR1_L_Pos (20U)
42
43/* DMA */
44#define DMA1_BASE (0U)
45#define DMA_SxCR_EN_Msk (0x1UL << (0UL))
46#define DMA_SxCR_MSIZE_Pos (13U)
47#define DMA_SxCR_MSIZE_Msk (0x3UL << DMA_SxCR_MSIZE_Pos)
48#define DMA_SxCR_PSIZE_Pos (11U)
49#define DMA_SxCR_PSIZE_Msk (0x3UL << DMA_SxCR_PSIZE_Pos)
50#define DMA_SxCR_DIR_Pos (6U)
51#define DMA_SxCR_DIR_Msk (0x3UL << DMA_SxCR_DIR_Pos)
52#define DMA_SxCR_CIRC_Pos (8U)
53#define DMA_SxCR_CIRC_Msk (0x1UL << DMA_SxCR_CIRC_Pos)
54#define DMA_SxCR_MINC_Pos (10U)
55#define DMA_SxCR_MINC_Msk (0x1UL << DMA_SxCR_MINC_Pos)
56#define DMA_SxCR_PINC_Pos (9U)
57#define DMA_SxCR_PINC_Msk (0x1UL << DMA_SxCR_PINC_Pos)
58#define DMA_SxCR_DBM_Pos (18U)
59#define DMA_SxCR_DBM_Msk (0x1UL << DMA_SxCR_DBM_Pos)
60#define DMA_SxCR_PFCTRL_Pos (5U)
61#define DMA_SxCR_PFCTRL_Msk (0x1UL << DMA_SxCR_PFCTRL_Pos)
62#define DMA_SxCR_CHSEL_Pos (25U)
63#define DMA_SxCR_CHSEL_Msk (0x7UL << DMA_SxCR_CHSEL_Pos)
64#define DMA_SxCR_PL_Pos (16U)
65#define DMA_SxCR_PL_Msk (0x3UL << DMA_SxCR_PL_Pos)
66#define DMA_SxCR_DMEIE_Pos (1U)
67#define DMA_SxCR_DMEIE_Msk (0x1UL << DMA_SxCR_DMEIE_Pos)
68#define DMA_SxCR_HTIE_Pos (3U)
69#define DMA_SxCR_HTIE_Msk (0x1UL << DMA_SxCR_HTIE_Pos)
70#define DMA_SxCR_TCIE_Pos (4U)
71#define DMA_SxCR_TCIE_Msk (0x1UL << DMA_SxCR_TCIE_Pos)
72#define DMA_SxCR_TEIE_Pos (2U)
73#define DMA_SxCR_TEIE_Msk (0x1UL << DMA_SxCR_TEIE_Pos)
74#define DMA_SxFCR_FEIE_Pos (7U)
75#define DMA_SxFCR_FEIE_Msk (0x1UL << DMA_SxFCR_FEIE_Pos)
76
77/* U(S)ART */
78#define USART1_BASE (0UL)
79#define USART2_BASE (1UL)
80#define USART3_BASE (2UL)
81#define UART4_BASE (3UL)
82#define UART5_BASE (4UL)
83#define USART6_BASE (5UL)
84#define USART_CR1_TE_Pos (3U)
85#define USART_CR1_TE_Msk (0x1UL << USART_CR1_TE_Pos)
86#define USART_CR1_RE_Pos (2U)
87#define USART_CR1_RE_Msk (0x1UL << USART_CR1_RE_Pos)
88#define USART_CR1_UE_Pos (13U)
89#define USART_CR1_UE_Msk (0x1UL << USART_CR1_UE_Pos)
90#define USART_CR1_PEIE_Pos (8U)
91#define USART_CR1_PEIE_Msk (0x1UL << USART_CR1_PEIE_Pos)
92#define USART_CR1_TXEIE_Pos (7U)
93#define USART_CR1_TXEIE_Msk (0x1UL << USART_CR1_TXEIE_Pos)
94#define USART_CR1_TCIE_Pos (6U)
95#define USART_CR1_TCIE_Msk (0x1UL << USART_CR1_TCIE_Pos)
96#define USART_CR1_RXNEIE_Pos (5U)
97#define USART_CR1_RXNEIE_Msk (0x1UL << USART_CR1_RXNEIE_Pos)
98#define USART_CR1_IDLEIE_Pos (4U)
99#define USART_CR1_IDLEIE_Msk (0x1UL << USART_CR1_IDLEIE_Pos)
100#define USART_CR1_M_Pos (12U)
101#define USART_CR1_M_Msk (0x1UL << USART_CR1_M_Pos)
102#define USART_CR1_PS_Msk (0x1UL << (9U))
103#define USART_CR1_PCE_Msk (0x1UL << (10U))
104#define USART_CR2_LBDIE_Pos (6U)
105#define USART_CR2_LBDIE_Msk (0x1UL << USART_CR2_LBDIE_Pos)
106#define USART_CR2_STOP_Pos (12U)
107#define USART_CR2_STOP_Msk (0x3UL << USART_CR2_STOP_Pos)
108#define USART_CR3_CTSIE_Pos (10U)
109#define USART_CR3_CTSIE_Msk (0x1UL << USART_CR3_CTSIE_Pos)
110#define USART_CR3_EIE_Pos (0U)
111#define USART_CR3_EIE_Msk (0x1UL << USART_CR3_EIE_Pos)
112#define USART_CR3_DMAT_Pos (7U)
113#define USART_CR3_DMAT_Msk (0x1UL << USART_CR3_DMAT_Pos)
114#define USART_CR3_DMAR_Pos (6U)
115#define USART_CR3_DMAR_Msk (0x1UL << USART_CR3_DMAR_Pos)
116#define USART_SR_TXE_Msk (0x1UL << (7U))
117#define USART_SR_TC_Msk (0x1UL << (6U))
118#define USART_SR_RXNE_Msk (0x1UL << (5U))
119
120/* bxCAN */
121#define CAN1_BASE (0UL)
122#define CAN_MCR_INRQ_Msk (0x1UL << (0U))
123#define CAN_MCR_SLEEP_Msk (0x1UL << (1U))
124#define CAN_MCR_TXFP_Pos (2U)
125#define CAN_MCR_TXFP_Msk (0x1UL << CAN_MCR_TXFP_Pos)
126#define CAN_MCR_RFLM_Pos (3U)
127#define CAN_MCR_RFLM_Msk (0x1UL << CAN_MCR_RFLM_Pos)
128#define CAN_MCR_NART_Pos (4U)
129#define CAN_MCR_NART_Msk (0x1UL << CAN_MCR_NART_Pos)
130#define CAN_MCR_AWUM_Pos (5U)
131#define CAN_MCR_AWUM_Msk (0x1UL << CAN_MCR_AWUM_Pos)
132#define CAN_MCR_ABOM_Pos (6U)
133#define CAN_MCR_ABOM_Msk (0x1UL << CAN_MCR_ABOM_Pos)
134#define CAN_MCR_TTCM_Msk (0x1UL << (7U))
135#define CAN_MSR_SLAK_Msk (0x1UL << (1U))
136#define CAN_MSR_INAK_Msk (0x1UL << (0U))
137#define CAN_BTR_BRP_Pos (0U)
138#define CAN_BTR_BRP_Msk (0x3FFUL << CAN_BTR_BRP_Pos)
139#define CAN_BTR_TS1_Pos (16U)
140#define CAN_BTR_TS1_Msk (0xFUL << CAN_BTR_TS1_Pos)
141#define CAN_BTR_TS2_Pos (20U)
142#define CAN_BTR_TS2_Msk (0x7UL << CAN_BTR_TS2_Pos)
143#define CAN_BTR_SJW_Msk (0x3UL << (24U))
144#define CAN_BTR_LBKM_Pos (30U)
145#define CAN_BTR_LBKM_Msk (0x1UL << CAN_BTR_LBKM_Pos)
146#define CAN_BTR_SILM_Msk (0x1UL << (31U))
147#define CAN_IER_TMEIE_Pos (0U)
148#define CAN_IER_FMPIE0_Pos (1U)
149#define CAN_IER_FFIE0_Pos (2U)
150#define CAN_IER_FOVIE0_Pos (3U)
151#define CAN_IER_FMPIE1_Pos (4U)
152#define CAN_IER_FFIE1_Pos (5U)
153#define CAN_IER_FOVIE1_Pos (6U)
154#define CAN_IER_EWGIE_Pos (8U)
155#define CAN_IER_EPVIE_Pos (9U)
156#define CAN_IER_BOFIE_Pos (10U)
157#define CAN_IER_LECIE_Pos (11U)
158#define CAN_IER_ERRIE_Pos (15U)
159#define CAN_IER_WKUIE_Pos (16U)
160#define CAN_IER_SLKIE_Pos (17U)
161#define CAN_FMR_FINIT_Msk (0x1UL << (0U))
162#define CAN_FMR_CAN2SB_Pos (8U)
163#define CAN_FMR_CAN2SB_Msk (0x3FUL << CAN_FMR_CAN2SB_Pos)
164#define CAN_TSR_TME0_Msk (0x1UL << (26U))
165#define CAN_TSR_TME1_Msk (0x1UL << (27U))
166#define CAN_TSR_TME2_Msk (0x1UL << (28U))
167#define CAN_TI0R_TXRQ_Msk (0x1UL << (0U))
168#define CAN_TDT0R_TGT_Pos (8U)
169#define CAN_RI0R_IDE_Pos (2U)
170#define CAN_RI0R_EXID_Pos (3U)
171#define CAN_RI0R_STID_Pos (21U)
172#define CAN_RF0R_RFOM0_Msk (0x1UL << (5U))
173#define CAN_RDT0R_TIME_Pos (16U)
174#define CAN_ESR_EWGF_Pos (0U)
175#define CAN_ESR_EPVF_Pos (1U)
176#define CAN_ESR_BOFF_Pos (2U)
177#define CAN_ESR_LEC_Pos (4U)
178#define CAN_ESR_TEC_Pos (16U)
179#define CAN_ESR_REC_Pos (24U)
180
181/* SPI */
182#define SPI1_BASE (0UL)
183#define SPI_CR1_CPHA_Pos (0U)
184#define SPI_CR1_CPHA_Msk (0x1UL << SPI_CR1_CPHA_Pos)
185#define SPI_CR1_CPOL_Pos (1U)
186#define SPI_CR1_CPOL_Msk (0x1UL << SPI_CR1_CPOL_Pos)
187#define SPI_CR1_MSTR_Pos (2U)
188#define SPI_CR1_MSTR_Msk (0x1UL << SPI_CR1_MSTR_Pos)
189#define SPI_CR1_BR_Pos (3U)
190#define SPI_CR1_SPE_Msk (0x1UL << (6U))
191#define SPI_CR1_BR_Msk (0x7UL << SPI_CR1_BR_Pos)
192#define SPI_CR1_LSBFIRST_Pos (7U)
193#define SPI_CR1_LSBFIRST_Msk (0x1UL << SPI_CR1_LSBFIRST_Pos)
194#define SPI_CR1_SSI_Msk (0x1UL << (8U))
195#define SPI_CR1_SSM_Msk (0x1UL << (9U))
196#define SPI_CR1_RXONLY_Msk (0x1UL << (10U))
197#define SPI_CR1_DFF_Pos (11U)
198#define SPI_CR1_DFF_Msk (0x1UL << SPI_CR1_DFF_Pos)
199#define SPI_CR1_CRCEN_Pos (13U)
200#define SPI_CR1_CRCEN_Msk (0x1UL << SPI_CR1_CRCEN_Pos)
201#define SPI_CR1_BIDIOE_Msk (0x1UL << (14U))
202#define SPI_CR1_BIDIMODE_Msk (0x1UL << (15U))
203#define SPI_CR2_RXDMAEN_Pos (0U)
204#define SPI_CR2_RXDMAEN_Msk (0x1UL << SPI_CR2_RXDMAEN_Pos)
205#define SPI_CR2_TXDMAEN_Pos (1U)
206#define SPI_CR2_TXDMAEN_Msk (0x1UL << SPI_CR2_TXDMAEN_Pos)
207#define SPI_CR2_SSOE_Msk (0x1UL << (2U))
208#define SPI_CR2_FRF_Pos (4U)
209#define SPI_CR2_FRF_Msk (0x1UL << SPI_CR2_FRF_Pos)
210#define SPI_CR2_ERRIE_Pos (5U)
211#define SPI_CR2_ERRIE_Msk (0x1UL << SPI_CR2_ERRIE_Pos)
212#define SPI_CR2_RXNEIE_Pos (6U)
213#define SPI_CR2_RXNEIE_Msk (0x1UL << SPI_CR2_RXNEIE_Pos)
214#define SPI_CR2_TXEIE_Pos (7U)
215#define SPI_CR2_TXEIE_Msk (0x1UL << SPI_CR2_TXEIE_Pos)
216#define SPI_SR_TXE_Msk (0x1UL << (1U))
217#define SPI_SR_RXNE_Msk (0x1UL << (0U))
218#define SPI_SR_BSY_Msk (0x1UL << (7U))
219
220/* RCC */
221#define RCC_BASE (0UL)
222#define RCC_CR_HSEBYP_Msk (0x1UL << (18U))
223#define RCC_CR_HSERDY_Msk (0x1UL << (17U))
224#define RCC_CR_HSEON_Msk (0x1UL << (16U))
225#define RCC_CR_HSION_Msk (0x1UL << (0U))
226#define RCC_CR_HSIRDY_Msk (0x1UL << (1U))
227#define RCC_CSR_LSION_Msk (0x1UL << (0U))
228#define RCC_CSR_LSIRDY_Msk (0x1UL << (1U))
229#define RCC_BDCR_LSEON_Msk (0x1UL << (0U))
230#define RCC_BDCR_LSERDY_Msk (0x1UL << (1U))
231#define RCC_BDCR_LSEBYP_Msk (0x1UL << (2U))
232#define RCC_BDCR_RTCSEL_Pos (8U)
233#define RCC_BDCR_RTCSEL_Msk (0x3UL << RCC_BDCR_RTCSEL_Pos)
234#define RCC_BDCR_RTCEN_Pos (15U)
235#define RCC_BDCR_RTCEN_Msk (0x1UL << RCC_BDCR_RTCEN_Pos)
236
237#define RCC_CR_PLLSAION_Msk (0x1UL << (28U))
238#define RCC_CR_PLLSAIRDY_Msk (0x1UL << (29U))
239#define RCC_CR_PLLI2SON_Msk (0x1UL << (26U))
240#define RCC_CR_PLLI2SRDY_Msk (0x1UL << (27U))
241#define RCC_CR_PLLON_Msk (0x1UL << (24U))
242#define RCC_CR_PLLRDY_Msk (0x1UL << (25U))
243#define RCC_CFGR_HPRE_Pos (4U)
244#define RCC_CFGR_HPRE_Msk (0xFUL << RCC_CFGR_HPRE_Pos)
245#define RCC_CFGR_PPRE1_Pos (10U)
246#define RCC_CFGR_PPRE1_Msk (0x3UL << RCC_CFGR_PPRE1_Pos)
247#define RCC_CFGR_PPRE2_Pos (13U)
248#define RCC_CFGR_PPRE2_Msk (0x3UL << RCC_CFGR_PPRE2_Pos)
249#define RCC_CFGR_SW_Pos (0U)
250#define RCC_CFGR_SW_Msk (0x3UL << RCC_CFGR_SW_Pos)
251#define RCC_CFGR_SW_PLL (0x00000002U)
252#define RCC_CFGR_SWS_PLL (0x00000008U)
253#define RCC_CFGR_MCO1_Pos (21U)
254#define RCC_CFGR_MCO1_Msk (0x3UL << RCC_CFGR_MCO1_Pos)
255#define RCC_CFGR_MCO2_Pos (30U)
256#define RCC_CFGR_MCO2_Msk (0x3UL << RCC_CFGR_MCO2_Pos)
257#define RCC_CFGR_MCO1PRE_Pos (24U)
258#define RCC_CFGR_MCO1PRE_Msk (0x7UL << RCC_CFGR_MCO1PRE_Pos)
259#define RCC_CFGR_MCO2PRE_Pos (27U)
260#define RCC_CFGR_MCO2PRE_Msk (0x7UL << RCC_CFGR_MCO2PRE_Pos)
261#define RCC_CFGR_RTCPRE_Pos (16U)
262#define RCC_CFGR_RTCPRE_Msk (0x1FUL << RCC_CFGR_RTCPRE_Pos)
263#define RCC_PLLCFGR_PLLM_Pos (0U)
264#define RCC_PLLCFGR_PLLM_Msk (0x3FUL << RCC_PLLCFGR_PLLM_Pos)
265#define RCC_PLLCFGR_PLLN_Pos (6U)
266#define RCC_PLLCFGR_PLLN_Msk (0x1FFUL << RCC_PLLCFGR_PLLN_Pos)
267#define RCC_PLLCFGR_PLLP_Pos (16U)
268#define RCC_PLLCFGR_PLLP_Msk (0x3UL << RCC_PLLCFGR_PLLP_Pos)
269#define RCC_PLLCFGR_PLLR_Pos (28U)
270#define RCC_PLLCFGR_PLLR_Msk (0x7UL << RCC_PLLCFGR_PLLR_Pos)
271#define RCC_PLLCFGR_PLLQ_Pos (24U)
272#define RCC_PLLCFGR_PLLQ_Msk (0xFUL << RCC_PLLCFGR_PLLQ_Pos)
273#define RCC_PLLCFGR_PLLSRC_Pos (22U)
274#define RCC_PLLCFGR_PLLSRC_Msk (0x1UL << RCC_PLLCFGR_PLLSRC_Pos)
275#define RCC_AHB1ENR_GPIOAEN_Msk (0x1UL << (0U))
276#define RCC_AHB1ENR_GPIOBEN_Msk (0x1UL << (1U))
277#define RCC_AHB1ENR_GPIOCEN_Msk (0x1UL << (2U))
278#define RCC_AHB1ENR_GPIODEN_Msk (0x1UL << (3U))
279#define RCC_AHB1ENR_GPIOEEN_Msk (0x1UL << (4U))
280#define RCC_AHB1ENR_GPIOFEN_Msk (0x1UL << (5U))
281#define RCC_AHB1ENR_GPIOGEN_Msk (0x1UL << (6U))
282#define RCC_AHB1ENR_GPIOHEN_Msk (0x1UL << (7U))
283#define RCC_AHB1ENR_DMA1EN_Msk (0x1UL << (21U))
284#define RCC_AHB1ENR_DMA2EN_Msk (0x1UL << (22U))
285#define RCC_APB1ENR_PWREN_Msk (0x1UL << (28U))
286#define RCC_APB1ENR_USART2EN_Msk (0x1UL << (17U))
287#define RCC_APB1ENR_USART3EN_Msk (0x1UL << (18U))
288#define RCC_APB1ENR_UART4EN_Msk (0x1UL << (19U))
289#define RCC_APB1ENR_UART5EN_Msk (0x1UL << (20U))
290#define RCC_APB2ENR_ADC1EN_Msk (0x1UL << (8U))
291#define RCC_APB2ENR_ADC2EN_Msk (0x1UL << (9U))
292#define RCC_APB2ENR_ADC3EN_Msk (0x1UL << (10U))
293#define RCC_APB2ENR_USART1EN_Msk (0x1UL << (4U))
294#define RCC_APB2ENR_USART6EN_Msk (0x1UL << (5U))
295
296/* PWR */
300typedef struct {
301 volatile uint32_t CR;
302 volatile uint32_t CSR;
304
305#define PWR ((PWR_TypeDef *)(0UL))
306#define PWR_CR_VOS_Pos (14U)
307#define PWR_CR_ODEN_Msk (0x1UL << (16U))
308#define PWR_CR_ODSWEN_Msk (0x1UL << (17U))
309#define PWR_CSR_ODRDY_Msk (0x1UL << (16U))
310#define PWR_CSR_ODSWRDY_Msk (0x1UL << (17U))
311
312/* FLASH */
316typedef struct {
317 volatile uint32_t ACR;
319
320#define FLASH ((FLASH_TypeDef *)(0UL))
321#define FLASH_ACR_LATENCY_5WS 0x00000005U
322#define FLASH_ACR_ICEN_Msk (0x1UL << (9U))
323#define FLASH_ACR_PRFTEN_Msk (0x1UL << (8U))
324
325/* SCB */
329typedef struct {
330 volatile uint32_t CPACR;
332
333#define SCB ((SCB_TypeDef *)(0UL))
334
335/* CMSIS GCC */
336__attribute__((always_inline)) static inline void __enable_irq(void) { return; }
337
338/* CMSIS CM4 */
339__attribute__((always_inline)) static inline uint32_t
340SysTick_Config(uint32_t ticks) {
341 (void)ticks;
342 return 0UL;
343}
344
345#endif
volatile uint32_t ticks
MCU tick count.
Definition isr.c:15
Contains stubbed FLASH registers.
Definition stm32f4xx.h:316
Contains stubbed PWR registers.
Definition stm32f4xx.h:300
Contains stubbed SCB registers.
Definition stm32f4xx.h:329
CMSIS device system header stubs.