HWA
Bare metal programming with style
ctb_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
/* The channels rely on their counter's registers, so we can use the cca
13
* implementation definitions with ctb counters.
14
*/
15
16
#include "
cca_1.h
"
17
48
#define hw_class__ctb
49
50
#define hw__ctb_cr1 _r16, 0x00, 0x03FF, 0
51
#define hw__ctb_cr2 _r16, 0x04, 0x00F8, 0
52
#define hw__ctb_smcr _r16, 0x08, 0xFFF7, 0
53
#define hw__ctb_dier _r16, 0x0C, 0x5F5F, 0
54
#define hw__ctb_sr _r16, 0x10, 0x1E7F, 0
55
#define hw__ctb_egr _r16, 0x14, 0x005F, 0
56
#define hw__ctb_ccmr1 _r16, 0x18, 0xFFFF, 0
57
#define hw__ctb_ccmr2 _r16, 0x1C, 0xFFFF, 0
58
#define hw__ctb_ccer _r16, 0x20, 0x3333, 0
59
#define hw__ctb_cnt _r32, 0x24, 0xFFFFFFFF, 0
60
#define hw__ctb_psc _r16, 0x28, 0xFFFF, 0
61
#define hw__ctb_arr _r32, 0x2C, 0xFFFFFFFF, 0
62
#define hw__ctb_ccr1 _r32, 0x34, 0xFFFFFFFF, 0
63
#define hw__ctb_ccr2 _r32, 0x38, 0xFFFFFFFF, 0
64
#define hw__ctb_ccr3 _r32, 0x3C, 0xFFFFFFFF, 0
65
#define hw__ctb_ccr4 _r32, 0x40, 0xFFFFFFFF, 0
66
#define hw__ctb_dcr _r16, 0x48, 0x1F1F, 0
67
#define hw__ctb_dmar _r16, 0x4C, 0xFFFF, 0
68
69
#define hw__ctb_ckd _cb1, cr1, 2, 8
70
#define hw__ctb_arpe _cb1, cr1, 1, 7
71
#define hw__ctb_cms _cb1, cr1, 2, 5
72
#define hw__ctb_dir _cb1, cr1, 1, 4
73
#define hw__ctb_cmsdir _cb1, cr1, 3, 4 // Convenient
74
#define hw__ctb_opm _cb1, cr1, 1, 3
75
#define hw__ctb_cmsdiropm _cb1, cr1, 4, 3 // Convenient
76
#define hw__ctb_urs _cb1, cr1, 1, 2
77
#define hw__ctb_udis _cb1, cr1, 1, 1
78
#define hw__ctb_cen _cb1, cr1, 1, 0
79
80
#define hw__ctb_ti1s _cb1, cr2, 1, 7
81
#define hw__ctb_mms _cb1, cr2, 3, 4
82
#define hw__ctb_ccds _cb1, cr2, 1, 3
83
84
#define hw__ctb_etp _cb1, smcr, 1, 15
85
#define hw__ctb_ece _cb1, smcr, 1, 14
86
#define hw__ctb_etps _cb1, smcr, 2, 12
87
#define hw__ctb_etf _cb1, smcr, 4, 8
88
#define hw__ctb_msm _cb1, smcr, 1, 7
89
#define hw__ctb_ts _cb1, smcr, 3, 4
90
#define hw__ctb_sms _cb1, smcr, 3, 0
91
92
#define hw__ctb_tde _cb1, dier, 1, 14
93
#define hw__ctb_cc4de _cb1, dier, 1, 12
94
#define hw__ctb_cc3de _cb1, dier, 1, 11
95
#define hw__ctb_cc2de _cb1, dier, 1, 10
96
#define hw__ctb_cc1de _cb1, dier, 1, 9
97
#define hw__ctb_ude _cb1, dier, 1, 8
98
#define hw__ctb_tie _cb1, dier, 1, 6
99
#define hw__ctb_cc4ie _cb1, dier, 1, 4
100
#define hw__ctb_cc3ie _cb1, dier, 1, 3
101
#define hw__ctb_cc2ie _cb1, dier, 1, 2
102
#define hw__ctb_cc1ie _cb1, dier, 1, 1
103
#define hw__ctb_uie _cb1, dier, 1, 0
104
105
#define hw__ctb_cc4of _cb1, sr, 1, 12
106
#define hw__ctb_cc3of _cb1, sr, 1, 11
107
#define hw__ctb_cc2of _cb1, sr, 1, 10
108
#define hw__ctb_cc1of _cb1, sr, 1, 9
109
#define hw__ctb_tif _cb1, sr, 1, 6
110
#define hw__ctb_cc4if _cb1, sr, 1, 4
111
#define hw__ctb_cc3if _cb1, sr, 1, 3
112
#define hw__ctb_cc2if _cb1, sr, 1, 2
113
#define hw__ctb_cc1if _cb1, sr, 1, 1
114
#define hw__ctb_uif _cb1, sr, 1, 0
115
116
#define hw__ctb_cc4p _cb1, ccer, 1, 13
117
#define hw__ctb_cc4e _cb1, ccer, 1, 12
118
#define hw__ctb_cc3p _cb1, ccer, 1, 9
119
#define hw__ctb_cc3e _cb1, ccer, 1, 8
120
#define hw__ctb_cc2p _cb1, ccer, 1, 5
121
#define hw__ctb_cc2e _cb1, ccer, 1, 4
122
#define hw__ctb_cc1p _cb1, ccer, 1, 1
123
#define hw__ctb_cc1e _cb1, ccer, 1, 0
124
125
#define hw__ctb_oc2ce _cb1, ccmr1, 1, 15
126
#define hw__ctb_oc2m _cb1, ccmr1, 3, 12
127
#define hw__ctb_ic2f _cb1, ccmr1, 4, 12
128
#define hw__ctb_oc2pe _cb1, ccmr1, 1, 11
129
#define hw__ctb_oc2fe _cb1, ccmr1, 1, 10
130
#define hw__ctb_ic2psc _cb1, ccmr1, 2, 10
131
#define hw__ctb_cc2s _cb1, ccmr1, 2, 8
132
133
#define hw__ctb_oc1ce _cb1, ccmr1, 1, 7
134
#define hw__ctb_oc1m _cb1, ccmr1, 3, 4
135
#define hw__ctb_ic1f _cb1, ccmr1, 4, 4
136
#define hw__ctb_oc1pe _cb1, ccmr1, 1, 3
137
#define hw__ctb_oc1fe _cb1, ccmr1, 1, 2
138
#define hw__ctb_ic1psc _cb1, ccmr1, 2, 2
139
#define hw__ctb_cc1s _cb1, ccmr1, 2, 0
140
141
#define hw__ctb_oc4ce _cb1, ccmr2, 1, 15
142
#define hw__ctb_oc4m _cb1, ccmr2, 3, 12
143
#define hw__ctb_ic4f _cb1, ccmr2, 4, 12
144
#define hw__ctb_oc4pe _cb1, ccmr2, 1, 11
145
#define hw__ctb_oc4fe _cb1, ccmr2, 1, 10
146
#define hw__ctb_ic4psc _cb1, ccmr2, 2, 10
147
#define hw__ctb_cc4s _cb1, ccmr2, 2, 8
148
149
#define hw__ctb_oc3ce _cb1, ccmr2, 1, 7
150
#define hw__ctb_oc3m _cb1, ccmr2, 3, 4
151
#define hw__ctb_ic3f _cb1, ccmr2, 4, 4
152
#define hw__ctb_oc3pe _cb1, ccmr2, 1, 3
153
#define hw__ctb_oc3fe _cb1, ccmr2, 1, 2
154
#define hw__ctb_ic3psc _cb1, ccmr2, 2, 2
155
#define hw__ctb_cc3s _cb1, ccmr2, 2, 0
156
157
/* Relatives
158
*/
159
#define hw__ctb_prescaler _cb1, psc, 32, 0
160
#define hw__ctb_reload _cb1, arr, 32, 0
161
162
#define hw__ctb_irq _irq, uie, uif, 0 // Clear flag writing 0 (rc_w0)
163
164
165
#if !defined __ASSEMBLER__
166
167
typedef
struct
{
168
hwa_r16_t cr1 ;
169
hwa_r16_t cr2 ;
170
hwa_r16_t smcr ;
171
hwa_r16_t dier ;
172
hwa_r16_t egr ;
173
hwa_r16_t ccmr1 ;
174
hwa_r16_t ccmr2 ;
175
hwa_r16_t ccer ;
176
hwa_r32_t cnt ;
177
hwa_r16_t psc ;
178
hwa_r32_t arr ;
179
hwa_r16_t ccr3 ;
180
} hwa_ctb_t ;
181
182
#endif
cca_1.h
STM32 capture-compare channel.
Generated for HWA by
1.8.6