HWA
Bare metal programming with style
rcca_1.h
Go to the documentation of this file.
1
2
/* This file is part of the HWA project.
3
* Copyright (c) 2017 Christophe Duparquet.
4
* All rights reserved. Read LICENSE.TXT for details.
5
*/
6
12
#define hw_class__rcca
13
14
#include "
hsia_1.h
"
15
#include "
hsea_1.h
"
16
#include "
plla_1.h
"
17
18
#define hw_hsi _hsia, 0
19
#define hw_hse _hsea, 0
20
#define hw_pll _plla, 0
21
22
#define hw_class__ahba
23
24
#define hw_ahb _ahba, 0
25
26
#define hw_class__apba
27
28
#define hw_apb1 _apba, 0
29
#define hw_apb2 _apba, 0
30
63
/* Hardware registers
64
*/
65
#define hw_rcc_cr _r32, 0x00, 0x010D00F9, 0
66
#define hw_rcc_cfgr _r32, 0x04, 0x077FFFF3, 0
67
#define hw_rcc_cir _r32, 0x08, 0x00FFFFFF, 0
68
#define hw_rcc_apb2enr _r32, 0x18, 0x0038FFFD, 0
69
#define hw_rcc_apb1enr _r32, 0x1C, 0x3AFED3FF, 0
70
71
/* Logical registers are implemented as object registers since there is only one
72
* RCC in the device and HW_X() will find them faster this way.
73
*/
74
#define hw_rcc_csson _ob1, cr, 1, 19
75
76
#define hw_pll_rdy _xb1, rcc, cr, 1, 25
77
#define hw_pll_on _xb1, rcc, cr, 1, 24
78
#define hw_pll_cken _xb1, rcc, cr, 1, 24
/* convenient */
79
80
#define hw_hse_byp _xb1, rcc, cr, 1, 18
81
#define hw_hse_rdy _xb1, rcc, cr, 1, 17
82
#define hw_hse_on _xb1, rcc, cr, 1, 16
83
#define hw_hse_cken _xb1, rcc, cr, 1, 16
/* convenient */
84
85
#define hw_hsi_cal _xb1, rcc, cr, 8, 8
86
#define hw_hsi_trim _xb1, rcc, cr, 5, 3
87
#define hw_hsi_rdy _xb1, rcc, cr, 1, 1
88
#define hw_hsi_on _xb1, rcc, cr, 1, 0
89
#define hw_hsi_cken _xb1, rcc, cr, 1, 0
/* convenient */
90
91
#define hw_rcc_mco _ob1, cfgr, 3, 24
92
#define hw_rcc_usbpre _ob1, cfgr, 1, 22
93
#define hw_rcc_adcpre _ob1, cfgr, 2, 14
94
#define hw_rcc_ppre2 _ob1, cfgr, 3, 11
95
#define hw_rcc_apb2 _ob1, cfgr, 3, 11
/* convenient */
96
//#define hw_rcc_apb2prescaler _ob1, cfgr, 3, 11 /* convenient */
97
#define hw_rcc_ppre1 _ob1, cfgr, 3, 8
98
#define hw_rcc_apb1 _ob1, cfgr, 3, 8
/* convenient */
99
//#define hw_rcc_apb1prescaler _ob1, cfgr, 3, 8 /* convenient */
100
#define hw_rcc_hpre _ob1, cfgr, 4, 4
101
#define hw_rcc_sws _ob1, cfgr, 2, 2
102
#define hw_rcc_sw _ob1, cfgr, 2, 0
103
104
#define hw_pll_mul _xb1, rcc, cfgr, 4, 18
105
#define hw_pll_xtpre _xb1, rcc, cfgr, 1, 17
106
#define hw_pll_src _xb1, rcc, cfgr, 1, 16
107
#define hw_pll_xtpresrc _xb1, rcc, cfgr, 2, 16
/* convenient */
108
109
#define hw_hse_rdyc _xb1, rcc, cir, 1, 19
110
#define hw_hse_rdye _xb1, rcc, cir, 1, 11
111
#define hw_hse_rdyf _xb1, rcc, cir, 1, 3
112
113
#define hw_hsi_rdyc _xb1, rcc, cir, 1, 18
114
#define hw_hsi_rdye _xb1, rcc, cir, 1, 10
115
#define hw_hsi_rdyf _xb1, rcc, cir, 1, 2
116
117
#define hw_rcc_tim11en _ob1, apb2enr, 1, 21
118
#define hw_rcc_tim10en _ob1, apb2enr, 1, 20
119
#define hw_rcc_tim9en _ob1, apb2enr, 1, 19
120
#define hw_rcc_adc3en _ob1, apb2enr, 1, 15
121
#define hw_rcc_usart1en _ob1, apb2enr, 1, 14
122
#define hw_rcc_tim8en _ob1, apb2enr, 1, 13
123
#define hw_rcc_spi1en _ob1, apb2enr, 1, 12
124
#define hw_rcc_tim1en _ob1, apb2enr, 1, 11
125
#define hw_rcc_adc2en _ob1, apb2enr, 1, 10
126
#define hw_rcc_adc1en _ob1, apb2enr, 1, 9
127
#define hw_rcc_port6en _ob1, apb2enr, 1, 8
128
#define hw_rcc_port5en _ob1, apb2enr, 1, 7
129
#define hw_rcc_port4en _ob1, apb2enr, 1, 6
130
#define hw_rcc_port3en _ob1, apb2enr, 1, 5
131
#define hw_rcc_port2en _ob1, apb2enr, 1, 4
132
#define hw_rcc_port1en _ob1, apb2enr, 1, 3
133
#define hw_rcc_port0en _ob1, apb2enr, 1, 2
134
#define hw_rcc_afioen _ob1, apb2enr, 1, 0
135
136
#define hw_porta_cken _xb1, rcc, apb2enr, 1, 2
/* convenient */
137
#define hw_portb_cken _xb1, rcc, apb2enr, 1, 3
/* convenient */
138
#define hw_portc_cken _xb1, rcc, apb2enr, 1, 4
/* convenient */
139
#define hw_portd_cken _xb1, rcc, apb2enr, 1, 5
/* convenient */
140
#define hw_porte_cken _xb1, rcc, apb2enr, 1, 6
/* convenient */
141
#define hw_porth_cken _xb1, rcc, apb2enr, 1, 8
/* convenient */
142
#define hw_afio_cken _xb1, rcc, apb2enr, 1, 0
/* convenient */
143
144
#define hw_rcc_dacen _ob1, apb1enr, 1, 29
145
#define hw_rcc_pwren _ob1, apb1enr, 1, 28
146
#define hw_rcc_bkpen _ob1, apb1enr, 1, 27
147
#define hw_rcc_canen _ob1, apb1enr, 1, 25
148
#define hw_rcc_usben _ob1, apb1enr, 1, 23
149
#define hw_rcc_i2c2en _ob1, apb1enr, 1, 22
150
#define hw_rcc_i2c1en _ob1, apb1enr, 1, 21
151
#define hw_rcc_uart5en _ob1, apb1enr, 1, 20
152
#define hw_rcc_uart4en _ob1, apb1enr, 1, 19
153
#define hw_rcc_usart3en _ob1, apb1enr, 1, 18
154
#define hw_rcc_usart2en _ob1, apb1enr, 1, 17
155
#define hw_rcc_spi3en _ob1, apb1enr, 1, 15
156
#define hw_rcc_spi2en _ob1, apb1enr, 1, 14
157
#define hw_rcc_wwdgen _ob1, apb1enr, 1, 11
158
#define hw_rcc_tim14en _ob1, apb1enr, 1, 8
159
#define hw_rcc_tim13en _ob1, apb1enr, 1, 7
160
#define hw_rcc_tim12en _ob1, apb1enr, 1, 6
161
#define hw_rcc_tim7en _ob1, apb1enr, 1, 5
162
#define hw_rcc_tim6en _ob1, apb1enr, 1, 4
163
#define hw_rcc_tim5en _ob1, apb1enr, 1, 3
164
#define hw_rcc_tim4en _ob1, apb1enr, 1, 2
165
#define hw_rcc_tim3en _ob1, apb1enr, 1, 1
166
#define hw_rcc_tim2en _ob1, apb1enr, 1, 0
167
168
/* HWA names
169
*/
170
#define hw_rcc_dac _ob1, apb1enr, 1, 29
171
#define hw_rcc_power _ob1, apb1enr, 1, 28
172
#define hw_rcc_backup _ob1, apb1enr, 1, 27
173
#define hw_rcc_can _ob1, apb1enr, 1, 25
174
#define hw_rcc_usb _ob1, apb1enr, 1, 23
175
#define hw_rcc_i2c2 _ob1, apb1enr, 1, 22
176
#define hw_rcc_i2c1 _ob1, apb1enr, 1, 21
177
#define hw_rcc_uart5 _ob1, apb1enr, 1, 20
178
#define hw_rcc_uart4 _ob1, apb1enr, 1, 19
179
#define hw_rcc_usart3 _ob1, apb1enr, 1, 18
180
#define hw_rcc_usart2 _ob1, apb1enr, 1, 17
181
#define hw_rcc_spi3 _ob1, apb1enr, 1, 15
182
#define hw_rcc_spi2 _ob1, apb1enr, 1, 14
183
#define hw_rcc_windiwwdg _ob1, apb1enr, 1, 11
184
#define hw_rcc_counter14 _ob1, apb1enr, 1, 8
185
#define hw_rcc_counter13 _ob1, apb1enr, 1, 7
186
#define hw_rcc_counter12 _ob1, apb1enr, 1, 6
187
#define hw_rcc_counter7 _ob1, apb1enr, 1, 5
188
#define hw_rcc_counter6 _ob1, apb1enr, 1, 4
189
#define hw_rcc_counter5 _ob1, apb1enr, 1, 3
190
#define hw_rcc_counter4 _ob1, apb1enr, 1, 2
191
#define hw_rcc_counter3 _ob1, apb1enr, 1, 1
192
#define hw_rcc_counter2 _ob1, apb1enr, 1, 0
193
194
#define hw_counter2_cken _xb1, rcc, apb1enr, 1, 0
/* convenient */
195
#define hw_counter3_cken _xb1, rcc, apb1enr, 1, 1
/* convenient */
196
#define hw_counter4_cken _xb1, rcc, apb1enr, 1, 2
/* convenient */
197
#define hw_counter5_cken _xb1, rcc, apb1enr, 1, 3
/* convenient */
198
199
200
/* Convenient objects
201
*/
202
#define hw_usbprescaler _obj, 0
203
#define hw_adcprescaler _obj, 0
204
205
206
#if !defined __ASSEMBLER__
207
208
/* HWA context
209
*/
210
typedef
struct
{
211
hwa_r32_t cr ;
212
hwa_r32_t cfgr ;
213
hwa_r32_t apb2enr ;
214
hwa_r32_t apb1enr ;
215
} hwa_rcca_t ;
216
217
#endif
hsia_1.h
HSI.
plla_1.h
PLL.
hsea_1.h
HSE.
Generated for HWA by
1.8.6