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
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
#[doc = "Register `SFR` reader"]
pub struct R(crate::R<SFR_SPEC>);
impl core::ops::Deref for R {
    type Target = crate::R<SFR_SPEC>;
    #[inline(always)]
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}
impl From<crate::R<SFR_SPEC>> for R {
    #[inline(always)]
    fn from(reader: crate::R<SFR_SPEC>) -> Self {
        R(reader)
    }
}
#[doc = "Register `SFR` writer"]
pub struct W(crate::W<SFR_SPEC>);
impl core::ops::Deref for W {
    type Target = crate::W<SFR_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<SFR_SPEC>> for W {
    #[inline(always)]
    fn from(writer: crate::W<SFR_SPEC>) -> Self {
        W(writer)
    }
}
#[doc = "Field `SFSA` reader - Secure Flash start address"]
pub type SFSA_R = crate::FieldReader<u8, u8>;
#[doc = "Field `SFSA` writer - Secure Flash start address"]
pub type SFSA_W<'a, const O: u8> = crate::FieldWriterSafe<'a, u32, SFR_SPEC, u8, u8, 7, O>;
#[doc = "Flash security disabled\n\nValue on reset: 1"]
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum FSD_A {
    #[doc = "0: System and Flash memory secure"]
    Secure = 0,
    #[doc = "1: System and Flash memory non-secure"]
    NonSecure = 1,
}
impl From<FSD_A> for bool {
    #[inline(always)]
    fn from(variant: FSD_A) -> Self {
        variant as u8 != 0
    }
}
#[doc = "Field `FSD` reader - Flash security disabled"]
pub type FSD_R = crate::BitReader<FSD_A>;
impl FSD_R {
    #[doc = "Get enumerated values variant"]
    #[inline(always)]
    pub fn variant(&self) -> FSD_A {
        match self.bits {
            false => FSD_A::Secure,
            true => FSD_A::NonSecure,
        }
    }
    #[doc = "Checks if the value of the field is `Secure`"]
    #[inline(always)]
    pub fn is_secure(&self) -> bool {
        *self == FSD_A::Secure
    }
    #[doc = "Checks if the value of the field is `NonSecure`"]
    #[inline(always)]
    pub fn is_non_secure(&self) -> bool {
        *self == FSD_A::NonSecure
    }
}
#[doc = "Field `FSD` writer - Flash security disabled"]
pub type FSD_W<'a, const O: u8> = crate::BitWriter<'a, u32, SFR_SPEC, FSD_A, O>;
impl<'a, const O: u8> FSD_W<'a, O> {
    #[doc = "System and Flash memory secure"]
    #[inline(always)]
    pub fn secure(self) -> &'a mut W {
        self.variant(FSD_A::Secure)
    }
    #[doc = "System and Flash memory non-secure"]
    #[inline(always)]
    pub fn non_secure(self) -> &'a mut W {
        self.variant(FSD_A::NonSecure)
    }
}
#[doc = "DDS\n\nValue on reset: 0"]
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum DDS_A {
    #[doc = "0: CPU2 debug access enabled"]
    Enabled = 0,
    #[doc = "1: CPU2 debug access disabled"]
    Disabled = 1,
}
impl From<DDS_A> for bool {
    #[inline(always)]
    fn from(variant: DDS_A) -> Self {
        variant as u8 != 0
    }
}
#[doc = "Field `DDS` reader - DDS"]
pub type DDS_R = crate::BitReader<DDS_A>;
impl DDS_R {
    #[doc = "Get enumerated values variant"]
    #[inline(always)]
    pub fn variant(&self) -> DDS_A {
        match self.bits {
            false => DDS_A::Enabled,
            true => DDS_A::Disabled,
        }
    }
    #[doc = "Checks if the value of the field is `Enabled`"]
    #[inline(always)]
    pub fn is_enabled(&self) -> bool {
        *self == DDS_A::Enabled
    }
    #[doc = "Checks if the value of the field is `Disabled`"]
    #[inline(always)]
    pub fn is_disabled(&self) -> bool {
        *self == DDS_A::Disabled
    }
}
#[doc = "Field `DDS` writer - DDS"]
pub type DDS_W<'a, const O: u8> = crate::BitWriter<'a, u32, SFR_SPEC, DDS_A, O>;
impl<'a, const O: u8> DDS_W<'a, O> {
    #[doc = "CPU2 debug access enabled"]
    #[inline(always)]
    pub fn enabled(self) -> &'a mut W {
        self.variant(DDS_A::Enabled)
    }
    #[doc = "CPU2 debug access disabled"]
    #[inline(always)]
    pub fn disabled(self) -> &'a mut W {
        self.variant(DDS_A::Disabled)
    }
}
#[doc = "Field `HDPSA` reader - User Flash hide protection area start address"]
pub type HDPSA_R = crate::FieldReader<u8, u8>;
#[doc = "Field `HDPSA` writer - User Flash hide protection area start address"]
pub type HDPSA_W<'a, const O: u8> = crate::FieldWriterSafe<'a, u32, SFR_SPEC, u8, u8, 7, O>;
#[doc = "User Flash hide protection area disabled\n\nValue on reset: 1"]
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum HDPAD_A {
    #[doc = "0: User Flash memory hide protection area enabled. HDPSA\\[6:0\\]
contains the start address of the first 2-Kbyte page of the user Flash memory hide protection area"]
    Enabled = 0,
    #[doc = "1: User Flash memory hide protection area disabled"]
    Disabled = 1,
}
impl From<HDPAD_A> for bool {
    #[inline(always)]
    fn from(variant: HDPAD_A) -> Self {
        variant as u8 != 0
    }
}
#[doc = "Field `HDPAD` reader - User Flash hide protection area disabled"]
pub type HDPAD_R = crate::BitReader<HDPAD_A>;
impl HDPAD_R {
    #[doc = "Get enumerated values variant"]
    #[inline(always)]
    pub fn variant(&self) -> HDPAD_A {
        match self.bits {
            false => HDPAD_A::Enabled,
            true => HDPAD_A::Disabled,
        }
    }
    #[doc = "Checks if the value of the field is `Enabled`"]
    #[inline(always)]
    pub fn is_enabled(&self) -> bool {
        *self == HDPAD_A::Enabled
    }
    #[doc = "Checks if the value of the field is `Disabled`"]
    #[inline(always)]
    pub fn is_disabled(&self) -> bool {
        *self == HDPAD_A::Disabled
    }
}
#[doc = "Field `HDPAD` writer - User Flash hide protection area disabled"]
pub type HDPAD_W<'a, const O: u8> = crate::BitWriter<'a, u32, SFR_SPEC, HDPAD_A, O>;
impl<'a, const O: u8> HDPAD_W<'a, O> {
    #[doc = "User Flash memory hide protection area enabled. HDPSA\\[6:0\\]
contains the start address of the first 2-Kbyte page of the user Flash memory hide protection area"]
    #[inline(always)]
    pub fn enabled(self) -> &'a mut W {
        self.variant(HDPAD_A::Enabled)
    }
    #[doc = "User Flash memory hide protection area disabled"]
    #[inline(always)]
    pub fn disabled(self) -> &'a mut W {
        self.variant(HDPAD_A::Disabled)
    }
}
#[doc = "sub-GHz radio SPI security disable\n\nValue on reset: 1"]
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum SUBGHSPISD_A {
    #[doc = "0: sub-GHz radio SPI security enabled"]
    Enabled = 0,
    #[doc = "1: sub-GHz radio SPI security disabled"]
    Disabled = 1,
}
impl From<SUBGHSPISD_A> for bool {
    #[inline(always)]
    fn from(variant: SUBGHSPISD_A) -> Self {
        variant as u8 != 0
    }
}
#[doc = "Field `SUBGHSPISD` reader - sub-GHz radio SPI security disable"]
pub type SUBGHSPISD_R = crate::BitReader<SUBGHSPISD_A>;
impl SUBGHSPISD_R {
    #[doc = "Get enumerated values variant"]
    #[inline(always)]
    pub fn variant(&self) -> SUBGHSPISD_A {
        match self.bits {
            false => SUBGHSPISD_A::Enabled,
            true => SUBGHSPISD_A::Disabled,
        }
    }
    #[doc = "Checks if the value of the field is `Enabled`"]
    #[inline(always)]
    pub fn is_enabled(&self) -> bool {
        *self == SUBGHSPISD_A::Enabled
    }
    #[doc = "Checks if the value of the field is `Disabled`"]
    #[inline(always)]
    pub fn is_disabled(&self) -> bool {
        *self == SUBGHSPISD_A::Disabled
    }
}
#[doc = "Field `SUBGHSPISD` writer - sub-GHz radio SPI security disable"]
pub type SUBGHSPISD_W<'a, const O: u8> = crate::BitWriter<'a, u32, SFR_SPEC, SUBGHSPISD_A, O>;
impl<'a, const O: u8> SUBGHSPISD_W<'a, O> {
    #[doc = "sub-GHz radio SPI security enabled"]
    #[inline(always)]
    pub fn enabled(self) -> &'a mut W {
        self.variant(SUBGHSPISD_A::Enabled)
    }
    #[doc = "sub-GHz radio SPI security disabled"]
    #[inline(always)]
    pub fn disabled(self) -> &'a mut W {
        self.variant(SUBGHSPISD_A::Disabled)
    }
}
impl R {
    #[doc = "Bits 0:6 - Secure Flash start address"]
    #[inline(always)]
    pub fn sfsa(&self) -> SFSA_R {
        SFSA_R::new((self.bits & 0x7f) as u8)
    }
    #[doc = "Bit 7 - Flash security disabled"]
    #[inline(always)]
    pub fn fsd(&self) -> FSD_R {
        FSD_R::new(((self.bits >> 7) & 1) != 0)
    }
    #[doc = "Bit 12 - DDS"]
    #[inline(always)]
    pub fn dds(&self) -> DDS_R {
        DDS_R::new(((self.bits >> 12) & 1) != 0)
    }
    #[doc = "Bits 16:22 - User Flash hide protection area start address"]
    #[inline(always)]
    pub fn hdpsa(&self) -> HDPSA_R {
        HDPSA_R::new(((self.bits >> 16) & 0x7f) as u8)
    }
    #[doc = "Bit 23 - User Flash hide protection area disabled"]
    #[inline(always)]
    pub fn hdpad(&self) -> HDPAD_R {
        HDPAD_R::new(((self.bits >> 23) & 1) != 0)
    }
    #[doc = "Bit 31 - sub-GHz radio SPI security disable"]
    #[inline(always)]
    pub fn subghspisd(&self) -> SUBGHSPISD_R {
        SUBGHSPISD_R::new(((self.bits >> 31) & 1) != 0)
    }
}
impl W {
    #[doc = "Bits 0:6 - Secure Flash start address"]
    #[inline(always)]
    pub fn sfsa(&mut self) -> SFSA_W<0> {
        SFSA_W::new(self)
    }
    #[doc = "Bit 7 - Flash security disabled"]
    #[inline(always)]
    pub fn fsd(&mut self) -> FSD_W<7> {
        FSD_W::new(self)
    }
    #[doc = "Bit 12 - DDS"]
    #[inline(always)]
    pub fn dds(&mut self) -> DDS_W<12> {
        DDS_W::new(self)
    }
    #[doc = "Bits 16:22 - User Flash hide protection area start address"]
    #[inline(always)]
    pub fn hdpsa(&mut self) -> HDPSA_W<16> {
        HDPSA_W::new(self)
    }
    #[doc = "Bit 23 - User Flash hide protection area disabled"]
    #[inline(always)]
    pub fn hdpad(&mut self) -> HDPAD_W<23> {
        HDPAD_W::new(self)
    }
    #[doc = "Bit 31 - sub-GHz radio SPI security disable"]
    #[inline(always)]
    pub fn subghspisd(&mut self) -> SUBGHSPISD_W<31> {
        SUBGHSPISD_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 secure Flash start address 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 [sfr](index.html) module"]
pub struct SFR_SPEC;
impl crate::RegisterSpec for SFR_SPEC {
    type Ux = u32;
}
#[doc = "`read()` method returns [sfr::R](R) reader structure"]
impl crate::Readable for SFR_SPEC {
    type Reader = R;
}
#[doc = "`write(|w| ..)` method takes [sfr::W](W) writer structure"]
impl crate::Writable for SFR_SPEC {
    type Writer = W;
}
#[doc = "`reset()` method sets SFR to value 0xffff_efff"]
impl crate::Resettable for SFR_SPEC {
    #[inline(always)]
    fn reset_value() -> Self::Ux {
        0xffff_efff
    }
}