HWA
Bare metal programming with style
rccb_1.h
Go to the documentation of this file.
1
2
/* This file is part of the HWA project.
3
* Copyright (c) 2021 Christophe Duparquet.
4
* All rights reserved. Read LICENSE.TXT for details.
5
*/
6
12
#define hw_class__rccb
13
14
#include "
hsia_1.h
"
15
#include "
hsea_1.h
"
16
#include "
pllb_1.h
"
17
#include "
ahba_1.h
"
18
19
#define hw_hsi _hsia, 0
20
#define hw_hse _hsea, 0
21
#define hw_pll _pllb, 0
22
23
#define hw_class__apba
24
25
#define hw_apb1 _apba, 0
26
#define hw_apb2 _apba, 0
27
59
/* Hardware registers Reset value
60
*/
61
#define hw_rcc_cr _r32, 0x00, 0x050D00F9, 0 // 0x0000 XX81
62
#define hw_rcc_pllcfgr _r32, 0x04, 0x0F437FFF, 0 // 0x2400 3010
63
#define hw_rcc_cfgr _r32, 0x08, 0xFFFFFCF3, 0 // 0x0000 0000
64
#define hw_rcc_cir _r32, 0x0C, 0x00BF3F00, 0x00BF0000 // 0x0000 0000
65
//#define hw_rcc_ahb1rstr _r32, 0x10,
66
//#define hw_rcc_ahb2rstr _r32, 0x14,
67
68
//#define hw_rcc_apb1rstr _r32, 0x20,
69
//#define hw_rcc_apb2rstr _r32, 0x24,
70
71
#define hw_rcc_ahb1enr _r32, 0x30, 0x0060109F, 0 // 0x0000 0000
72
#define hw_rcc_ahb2enr _r32, 0x34, 0x00000080, 0 // 0x0000 0000
73
74
#define hw_rcc_apb1enr _r32, 0x40, 0x10E2C80F, 0 // 0x0000 0000
75
#define hw_rcc_apb2enr _r32, 0x44, 0x00177931, 0 // 0x0000 0000
76
77
/* Logical registers are implemented as object registers since there is only one
78
* RCC in the device and HW_X() will find them faster this way.
79
*/
80
#define hw_i2s_pll_rdy _xb1, rcc, cr, 1, 27
81
#define hw_i2s_pll_on _xb1, rcc, cr, 1, 26
82
83
#define hw_pll_rdy _xb1, rcc, cr, 1, 25
84
#define hw_pll_on _xb1, rcc, cr, 1, 24
85
86
#define hw_rcc_csson _ob1, cr, 1, 19
87
#define hw_css_on _xb1, rcc, cr, 1, 19
88
89
#define hw_hse_byp _xb1, rcc, cr, 1, 18
90
#define hw_hse_rdy _xb1, rcc, cr, 1, 17
91
#define hw_hse_on _xb1, rcc, cr, 1, 16
92
#define hw_hse_cken _xb1, rcc, cr, 1, 16
/* Convenient */
93
94
#define hw_hsi_cal _xb1, rcc, cr, 8, 8
95
#define hw_hsi_trim _xb1, rcc, cr, 5, 3
96
#define hw_hsi_rdy _xb1, rcc, cr, 1, 1
97
#define hw_hsi_on _xb1, rcc, cr, 1, 0
98
#define hw_hsi_cken _xb1, rcc, cr, 1, 0
/* Convenient */
99
100
#define hw_pll_q _xb1, rcc, pllcfgr, 4, 24
101
#define hw_pll_src _xb1, rcc, pllcfgr, 1, 22
102
#define hw_pll_xtpresrc _xb1, rcc, pllcfgr, 1, 22
/* Convenient */
103
#define hw_pll_p _xb1, rcc, pllcfgr, 2, 16
104
#define hw_pll_n _xb1, rcc, pllcfgr, 9, 6
105
#define hw_pll_m _xb1, rcc, pllcfgr, 6, 0
106
107
#define hw_rcc_mco2 _ob1, cfgr, 2, 30
108
#define hw_rcc_mco2pre _ob1, cfgr, 3, 27
109
#define hw_rcc_mco1pre _ob1, cfgr, 3, 24
110
111
#define hw_i2s_scr _xb1, rcc, cfgr, 1, 23
112
113
#define hw_rcc_mco1 _xb1, rcc, cfgr, 2, 21
114
115
#define hw_rtc_pre _xb1, rcc, cfgr, 5, 16
116
117
#define hw_rcc_ppre2 _ob1, cfgr, 3, 13
118
#define hw_apb2_psc _xb1, rcc, cfgr, 3, 13
119
120
#define hw_rcc_ppre1 _ob1, cfgr, 3, 10
121
#define hw_apb1_psc _xb1, rcc, cfgr, 3, 10
122
123
//#define hw_rcc_hpre _ob1, cfgr, 4, 4
124
#define hw_ahb_pre _xb1, rcc, cfgr, 4, 4
125
126
#define hw_rcc_sws _ob1, cfgr, 2, 2
127
#define hw_rcc_sw _ob1, cfgr, 2, 0
128
129
#define hw_css_c _xb1, rcc, cir, 1, 23
130
#define hw_i2s_pll_rdyc _xb1, rcc, cir, 1, 21
131
#define hw_pll_rdyc _xb1, rcc, cir, 1, 20
132
#define hw_hse_rdyc _xb1, rcc, cir, 1, 19
133
#define hw_hsi_rdyc _xb1, rcc, cir, 1, 18
134
#define hw_lse_rdyc _xb1, rcc, cir, 1, 17
135
#define hw_lsi_rdyc _xb1, rcc, cir, 1, 16
136
#define hw_i2s_pll_rdyie _xb1, rcc, cir, 1, 13
137
#define hw_pll_rdyie _xb1, rcc, cir, 1, 12
138
#define hw_hse_rdyie _xb1, rcc, cir, 1, 11
139
#define hw_hsi_rdyie _xb1, rcc, cir, 1, 10
140
#define hw_lse_rdyie _xb1, rcc, cir, 1, 9
141
#define hw_lsi_rdyie _xb1, rcc, cir, 1, 8
142
#define hw_css_f _xb1, rcc, cir, 1, 7
143
#define hw_i2s_pll_rdyf _xb1, rcc, cir, 1, 5
144
#define hw_pll_rdyf _xb1, rcc, cir, 1, 4
145
#define hw_hse_rdyf _xb1, rcc, cir, 1, 3
146
#define hw_hsi_rdyf _xb1, rcc, cir, 1, 2
147
#define hw_lse_rdyf _xb1, rcc, cir, 1, 1
148
#define hw_lsi_rdyf _xb1, rcc, cir, 1, 0
149
150
#define hw_dma2_en _xb1, rcc, ahb1enr, 1, 22
151
#define hw_dma1_en _xb1, rcc, ahb1enr, 1, 21
152
#define hw_crc_en _xb1, rcc, ahb1enr, 1, 12
153
#define hw_gpioh_en _xb1, rcc, ahb1enr, 1, 7
154
#define hw_gpioe_en _xb1, rcc, ahb1enr, 1, 4
155
#define hw_gpiod_en _xb1, rcc, ahb1enr, 1, 3
156
#define hw_gpioc_en _xb1, rcc, ahb1enr, 1, 2
157
#define hw_gpiov_en _xb1, rcc, ahb1enr, 1, 1
158
#define hw_gpioa_en _xb1, rcc, ahb1enr, 1, 0
159
160
#define hw_porth_cken _xb1, rcc, ahb1enr, 1, 7
161
#define hw_porte_cken _xb1, rcc, ahb1enr, 1, 4
162
#define hw_portd_cken _xb1, rcc, ahb1enr, 1, 3
163
#define hw_portc_cken _xb1, rcc, ahb1enr, 1, 2
164
#define hw_portv_cken _xb1, rcc, ahb1enr, 1, 1
165
#define hw_porta_cken _xb1, rcc, ahb1enr, 1, 0
166
167
#define hw_usart2_en _xb1, rcc, apb1enr, 1, 17
168
#define hw_usart2_cken _xb1, rcc, apb1enr, 1, 17
/* convenient */
169
170
#define hw_counter5_cken _xb1, rcc, apb1enr, 1, 3
/* convenient */
171
#define hw_counter4_cken _xb1, rcc, apb1enr, 1, 2
/* convenient */
172
#define hw_counter3_cken _xb1, rcc, apb1enr, 1, 1
/* convenient */
173
#define hw_counter2_cken _xb1, rcc, apb1enr, 1, 0
/* convenient */
174
175
#define hw_usart1_en _xb1, rcc, apb2enr, 1, 4
176
#define hw_usart1_cken _xb1, rcc, apb2enr, 1, 4
/* convenient */
177
#define hw_usart6_en _xb1, rcc, apb2enr, 1, 5
178
#define hw_usart6_cken _xb1, rcc, apb2enr, 1, 5
/* convenient */
179
180
181
#if !defined __ASSEMBLER__
182
183
/* HWA context
184
*/
185
typedef
struct
{
186
hwa_r32_t cr ;
187
hwa_r32_t pllcfgr ;
188
hwa_r32_t cfgr ;
189
hwa_r32_t cir ;
190
hwa_r32_t ahb1enr ;
191
hwa_r32_t ahb2enr ;
192
hwa_r32_t apb1enr ;
193
hwa_r32_t apb2enr ;
194
} hwa_rccb_t ;
195
196
#endif
ahba_1.h
AHB.
hsia_1.h
HSI.
hsea_1.h
HSE.
pllb_1.h
PLL.
Generated for HWA by
1.8.6