1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
#[doc = "Register `OPTSR_CUR_` reader"]
pub struct R(crate::R<OPTSR_CUR__SPEC>);
impl core::ops::Deref for R {
    type Target = crate::R<OPTSR_CUR__SPEC>;
    #[inline(always)]
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
impl From<crate::R<OPTSR_CUR__SPEC>> for R {
    #[inline(always)]
    fn from(reader: crate::R<OPTSR_CUR__SPEC>) -> Self {
        R(reader)
    }
}
#[doc = "Register `OPTSR_CUR_` writer"]
pub struct W(crate::W<OPTSR_CUR__SPEC>);
impl core::ops::Deref for W {
    type Target = crate::W<OPTSR_CUR__SPEC>;
    #[inline(always)]
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
impl core::ops::DerefMut for W {
    #[inline(always)]
    fn deref_mut(&mut self) -> &mut Self::Target {
        &mut self.0
    }
}
impl From<crate::W<OPTSR_CUR__SPEC>> for W {
    #[inline(always)]
    fn from(writer: crate::W<OPTSR_CUR__SPEC>) -> Self {
        W(writer)
    }
}
#[doc = "Field `SWAP_BANK_OPT` reader - Bank swapping option status bit"]
pub type SWAP_BANK_OPT_R = crate::BitReader<bool>;
#[doc = "Field `SWAP_BANK_OPT` writer - Bank swapping option status bit"]
pub type SWAP_BANK_OPT_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `OPTCHANGEERR` reader - Option byte change error flag"]
pub type OPTCHANGEERR_R = crate::BitReader<bool>;
#[doc = "Field `OPTCHANGEERR` writer - Option byte change error flag"]
pub type OPTCHANGEERR_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `IO_HSLV` reader - I"]
pub type IO_HSLV_R = crate::BitReader<bool>;
#[doc = "Field `IO_HSLV` writer - I"]
pub type IO_HSLV_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `NRST_STBY_D2` reader - D2 domain DStandby entry reset option status bit"]
pub type NRST_STBY_D2_R = crate::BitReader<bool>;
#[doc = "Field `NRST_STBY_D2` writer - D2 domain DStandby entry reset option status bit"]
pub type NRST_STBY_D2_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `NRST_STOP_D2` reader - D2 domain DStop entry reset option status bit"]
pub type NRST_STOP_D2_R = crate::BitReader<bool>;
#[doc = "Field `NRST_STOP_D2` writer - D2 domain DStop entry reset option status bit"]
pub type NRST_STOP_D2_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `BOOT_CM7` reader - Arm Cortex"]
pub type BOOT_CM7_R = crate::BitReader<bool>;
#[doc = "Field `BOOT_CM7` writer - Arm Cortex"]
pub type BOOT_CM7_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `BOOT_CM4` reader - Arm Cortex"]
pub type BOOT_CM4_R = crate::BitReader<bool>;
#[doc = "Field `BOOT_CM4` writer - Arm Cortex"]
pub type BOOT_CM4_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `SECURITY` reader - Security enable option status bit"]
pub type SECURITY_R = crate::BitReader<bool>;
#[doc = "Field `SECURITY` writer - Security enable option status bit"]
pub type SECURITY_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `ST_RAM_SIZE` reader - ST RAM size option status"]
pub type ST_RAM_SIZE_R = crate::FieldReader<u8, u8>;
#[doc = "Field `ST_RAM_SIZE` writer - ST RAM size option status"]
pub type ST_RAM_SIZE_W<'a, const O: u8> =
    crate::FieldWriter<'a, u32, OPTSR_CUR__SPEC, u8, u8, 2, O>;
#[doc = "Field `IWDG_FZ_SDBY` reader - IWDG Standby mode freeze option status bit"]
pub type IWDG_FZ_SDBY_R = crate::BitReader<bool>;
#[doc = "Field `IWDG_FZ_SDBY` writer - IWDG Standby mode freeze option status bit"]
pub type IWDG_FZ_SDBY_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `IWDG_FZ_STOP` reader - IWDG Stop mode freeze option status bit"]
pub type IWDG_FZ_STOP_R = crate::BitReader<bool>;
#[doc = "Field `IWDG_FZ_STOP` writer - IWDG Stop mode freeze option status bit"]
pub type IWDG_FZ_STOP_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `RDP` reader - Readout protection level option status byte"]
pub type RDP_R = crate::FieldReader<u8, u8>;
#[doc = "Field `RDP` writer - Readout protection level option status byte"]
pub type RDP_W<'a, const O: u8> = crate::FieldWriter<'a, u32, OPTSR_CUR__SPEC, u8, u8, 8, O>;
#[doc = "Field `RST_STDY_D1` reader - D1 domain DStandby entry reset option status bit"]
pub type RST_STDY_D1_R = crate::BitReader<bool>;
#[doc = "Field `RST_STDY_D1` writer - D1 domain DStandby entry reset option status bit"]
pub type RST_STDY_D1_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `NRST_STOP_D1` reader - D1 domain DStop entry reset option status bit"]
pub type NRST_STOP_D1_R = crate::BitReader<bool>;
#[doc = "Field `NRST_STOP_D1` writer - D1 domain DStop entry reset option status bit"]
pub type NRST_STOP_D1_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `IWDG2_SW` reader - IWDG2 control mode option status bit"]
pub type IWDG2_SW_R = crate::BitReader<bool>;
#[doc = "Field `IWDG2_SW` writer - IWDG2 control mode option status bit"]
pub type IWDG2_SW_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `IWDG_SW` reader - IWDG control mode option status bit"]
pub type IWDG_SW_R = crate::BitReader<bool>;
#[doc = "Field `IWDG_SW` writer - IWDG control mode option status bit"]
pub type IWDG_SW_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
#[doc = "Field `BOR_LEV` reader - Brownout level option status bit"]
pub type BOR_LEV_R = crate::FieldReader<u8, u8>;
#[doc = "Field `BOR_LEV` writer - Brownout level option status bit"]
pub type BOR_LEV_W<'a, const O: u8> = crate::FieldWriter<'a, u32, OPTSR_CUR__SPEC, u8, u8, 2, O>;
#[doc = "Field `OPT_BUSY` reader - Option byte change ongoing flag"]
pub type OPT_BUSY_R = crate::BitReader<bool>;
#[doc = "Field `OPT_BUSY` writer - Option byte change ongoing flag"]
pub type OPT_BUSY_W<'a, const O: u8> = crate::BitWriter<'a, u32, OPTSR_CUR__SPEC, bool, O>;
impl R {
    #[doc = "Bit 31 - Bank swapping option status bit"]
    #[inline(always)]
    pub fn swap_bank_opt(&self) -> SWAP_BANK_OPT_R {
        SWAP_BANK_OPT_R::new(((self.bits >> 31) & 1) != 0)
    }
    #[doc = "Bit 30 - Option byte change error flag"]
    #[inline(always)]
    pub fn optchangeerr(&self) -> OPTCHANGEERR_R {
        OPTCHANGEERR_R::new(((self.bits >> 30) & 1) != 0)
    }
    #[doc = "Bit 29 - I"]
    #[inline(always)]
    pub fn io_hslv(&self) -> IO_HSLV_R {
        IO_HSLV_R::new(((self.bits >> 29) & 1) != 0)
    }
    #[doc = "Bit 25 - D2 domain DStandby entry reset option status bit"]
    #[inline(always)]
    pub fn nrst_stby_d2(&self) -> NRST_STBY_D2_R {
        NRST_STBY_D2_R::new(((self.bits >> 25) & 1) != 0)
    }
    #[doc = "Bit 24 - D2 domain DStop entry reset option status bit"]
    #[inline(always)]
    pub fn nrst_stop_d2(&self) -> NRST_STOP_D2_R {
        NRST_STOP_D2_R::new(((self.bits >> 24) & 1) != 0)
    }
    #[doc = "Bit 23 - Arm Cortex"]
    #[inline(always)]
    pub fn boot_cm7(&self) -> BOOT_CM7_R {
        BOOT_CM7_R::new(((self.bits >> 23) & 1) != 0)
    }
    #[doc = "Bit 22 - Arm Cortex"]
    #[inline(always)]
    pub fn boot_cm4(&self) -> BOOT_CM4_R {
        BOOT_CM4_R::new(((self.bits >> 22) & 1) != 0)
    }
    #[doc = "Bit 21 - Security enable option status bit"]
    #[inline(always)]
    pub fn security(&self) -> SECURITY_R {
        SECURITY_R::new(((self.bits >> 21) & 1) != 0)
    }
    #[doc = "Bits 19:20 - ST RAM size option status"]
    #[inline(always)]
    pub fn st_ram_size(&self) -> ST_RAM_SIZE_R {
        ST_RAM_SIZE_R::new(((self.bits >> 19) & 3) as u8)
    }
    #[doc = "Bit 18 - IWDG Standby mode freeze option status bit"]
    #[inline(always)]
    pub fn iwdg_fz_sdby(&self) -> IWDG_FZ_SDBY_R {
        IWDG_FZ_SDBY_R::new(((self.bits >> 18) & 1) != 0)
    }
    #[doc = "Bit 17 - IWDG Stop mode freeze option status bit"]
    #[inline(always)]
    pub fn iwdg_fz_stop(&self) -> IWDG_FZ_STOP_R {
        IWDG_FZ_STOP_R::new(((self.bits >> 17) & 1) != 0)
    }
    #[doc = "Bits 8:15 - Readout protection level option status byte"]
    #[inline(always)]
    pub fn rdp(&self) -> RDP_R {
        RDP_R::new(((self.bits >> 8) & 0xff) as u8)
    }
    #[doc = "Bit 7 - D1 domain DStandby entry reset option status bit"]
    #[inline(always)]
    pub fn rst_stdy_d1(&self) -> RST_STDY_D1_R {
        RST_STDY_D1_R::new(((self.bits >> 7) & 1) != 0)
    }
    #[doc = "Bit 6 - D1 domain DStop entry reset option status bit"]
    #[inline(always)]
    pub fn nrst_stop_d1(&self) -> NRST_STOP_D1_R {
        NRST_STOP_D1_R::new(((self.bits >> 6) & 1) != 0)
    }
    #[doc = "Bit 5 - IWDG2 control mode option status bit"]
    #[inline(always)]
    pub fn iwdg2_sw(&self) -> IWDG2_SW_R {
        IWDG2_SW_R::new(((self.bits >> 5) & 1) != 0)
    }
    #[doc = "Bit 4 - IWDG control mode option status bit"]
    #[inline(always)]
    pub fn iwdg_sw(&self) -> IWDG_SW_R {
        IWDG_SW_R::new(((self.bits >> 4) & 1) != 0)
    }
    #[doc = "Bits 2:3 - Brownout level option status bit"]
    #[inline(always)]
    pub fn bor_lev(&self) -> BOR_LEV_R {
        BOR_LEV_R::new(((self.bits >> 2) & 3) as u8)
    }
    #[doc = "Bit 0 - Option byte change ongoing flag"]
    #[inline(always)]
    pub fn opt_busy(&self) -> OPT_BUSY_R {
        OPT_BUSY_R::new((self.bits & 1) != 0)
    }
}
impl W {
    #[doc = "Bit 31 - Bank swapping option status bit"]
    #[inline(always)]
    pub fn swap_bank_opt(&mut self) -> SWAP_BANK_OPT_W<31> {
        SWAP_BANK_OPT_W::new(self)
    }
    #[doc = "Bit 30 - Option byte change error flag"]
    #[inline(always)]
    pub fn optchangeerr(&mut self) -> OPTCHANGEERR_W<30> {
        OPTCHANGEERR_W::new(self)
    }
    #[doc = "Bit 29 - I"]
    #[inline(always)]
    pub fn io_hslv(&mut self) -> IO_HSLV_W<29> {
        IO_HSLV_W::new(self)
    }
    #[doc = "Bit 25 - D2 domain DStandby entry reset option status bit"]
    #[inline(always)]
    pub fn nrst_stby_d2(&mut self) -> NRST_STBY_D2_W<25> {
        NRST_STBY_D2_W::new(self)
    }
    #[doc = "Bit 24 - D2 domain DStop entry reset option status bit"]
    #[inline(always)]
    pub fn nrst_stop_d2(&mut self) -> NRST_STOP_D2_W<24> {
        NRST_STOP_D2_W::new(self)
    }
    #[doc = "Bit 23 - Arm Cortex"]
    #[inline(always)]
    pub fn boot_cm7(&mut self) -> BOOT_CM7_W<23> {
        BOOT_CM7_W::new(self)
    }
    #[doc = "Bit 22 - Arm Cortex"]
    #[inline(always)]
    pub fn boot_cm4(&mut self) -> BOOT_CM4_W<22> {
        BOOT_CM4_W::new(self)
    }
    #[doc = "Bit 21 - Security enable option status bit"]
    #[inline(always)]
    pub fn security(&mut self) -> SECURITY_W<21> {
        SECURITY_W::new(self)
    }
    #[doc = "Bits 19:20 - ST RAM size option status"]
    #[inline(always)]
    pub fn st_ram_size(&mut self) -> ST_RAM_SIZE_W<19> {
        ST_RAM_SIZE_W::new(self)
    }
    #[doc = "Bit 18 - IWDG Standby mode freeze option status bit"]
    #[inline(always)]
    pub fn iwdg_fz_sdby(&mut self) -> IWDG_FZ_SDBY_W<18> {
        IWDG_FZ_SDBY_W::new(self)
    }
    #[doc = "Bit 17 - IWDG Stop mode freeze option status bit"]
    #[inline(always)]
    pub fn iwdg_fz_stop(&mut self) -> IWDG_FZ_STOP_W<17> {
        IWDG_FZ_STOP_W::new(self)
    }
    #[doc = "Bits 8:15 - Readout protection level option status byte"]
    #[inline(always)]
    pub fn rdp(&mut self) -> RDP_W<8> {
        RDP_W::new(self)
    }
    #[doc = "Bit 7 - D1 domain DStandby entry reset option status bit"]
    #[inline(always)]
    pub fn rst_stdy_d1(&mut self) -> RST_STDY_D1_W<7> {
        RST_STDY_D1_W::new(self)
    }
    #[doc = "Bit 6 - D1 domain DStop entry reset option status bit"]
    #[inline(always)]
    pub fn nrst_stop_d1(&mut self) -> NRST_STOP_D1_W<6> {
        NRST_STOP_D1_W::new(self)
    }
    #[doc = "Bit 5 - IWDG2 control mode option status bit"]
    #[inline(always)]
    pub fn iwdg2_sw(&mut self) -> IWDG2_SW_W<5> {
        IWDG2_SW_W::new(self)
    }
    #[doc = "Bit 4 - IWDG control mode option status bit"]
    #[inline(always)]
    pub fn iwdg_sw(&mut self) -> IWDG_SW_W<4> {
        IWDG_SW_W::new(self)
    }
    #[doc = "Bits 2:3 - Brownout level option status bit"]
    #[inline(always)]
    pub fn bor_lev(&mut self) -> BOR_LEV_W<2> {
        BOR_LEV_W::new(self)
    }
    #[doc = "Bit 0 - Option byte change ongoing flag"]
    #[inline(always)]
    pub fn opt_busy(&mut self) -> OPT_BUSY_W<0> {
        OPT_BUSY_W::new(self)
    }
    #[doc = "Writes raw bits to the register."]
    #[inline(always)]
    pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
        self.0.bits(bits);
        self
    }
}
#[doc = "FLASH option status register\n\nThis register you can [`read`](crate::generic::Reg::read), [`write_with_zero`](crate::generic::Reg::write_with_zero), [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`modify`](crate::generic::Reg::modify). See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [optsr_cur_](index.html) module"]
pub struct OPTSR_CUR__SPEC;
impl crate::RegisterSpec for OPTSR_CUR__SPEC {
    type Ux = u32;
}
#[doc = "`read()` method returns [optsr_cur_::R](R) reader structure"]
impl crate::Readable for OPTSR_CUR__SPEC {
    type Reader = R;
}
#[doc = "`write(|w| ..)` method takes [optsr_cur_::W](W) writer structure"]
impl crate::Writable for OPTSR_CUR__SPEC {
    type Writer = W;
}
#[doc = "`reset()` method sets OPTSR_CUR_ to value 0"]
impl crate::Resettable for OPTSR_CUR__SPEC {
    #[inline(always)]
    fn reset_value() -> Self::Ux {
        0
    }
}