HWA
Bare metal programming with style
cta_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 /* Load the channels implementation definitions
13  */
14 #include "cca_1.h"
15 
47 #define hw_class__cta
48 
49 #define hw__cta_cr1 _r16, 0x00, 0x03FF, 0
50 #define hw__cta_cr2 _r16, 0x04, 0x00F8, 0
51 #define hw__cta_smcr _r16, 0x08, 0xFFF7, 0
52 #define hw__cta_dier _r16, 0x0C, 0x5F5F, 0
53 #define hw__cta_sr _r16, 0x10, 0x1E7F, 0
54 #define hw__cta_egr _r16, 0x14, 0x005F, 0
55 #define hw__cta_ccmr1 _r16, 0x18, 0xFFFF, 0
56 #define hw__cta_ccmr2 _r16, 0x1C, 0xFFFF, 0
57 #define hw__cta_ccer _r16, 0x20, 0x3333, 0
58 #define hw__cta_cnt _r16, 0x24, 0xFFFF, 0
59 #define hw__cta_psc _r16, 0x28, 0xFFFF, 0
60 #define hw__cta_arr _r16, 0x2C, 0xFFFF, 0
61 #define hw__cta_ccr1 _r16, 0x34, 0xFFFF, 0
62 #define hw__cta_ccr2 _r16, 0x38, 0xFFFF, 0
63 #define hw__cta_ccr3 _r16, 0x3C, 0xFFFF, 0
64 #define hw__cta_ccr4 _r16, 0x40, 0xFFFF, 0
65 #define hw__cta_dcr _r16, 0x48, 0x1F1F, 0
66 #define hw__cta_dmar _r16, 0x4C, 0xFFFF, 0
67 
68 #define hw__cta_ckd _cb1, cr1, 2, 8
69 #define hw__cta_arpe _cb1, cr1, 1, 7
70 #define hw__cta_cms _cb1, cr1, 2, 5
71 #define hw__cta_dir _cb1, cr1, 1, 4
72 #define hw__cta_cmsdir _cb1, cr1, 3, 4 // Convenient
73 #define hw__cta_opm _cb1, cr1, 1, 3
74 #define hw__cta_cmsdiropm _cb1, cr1, 4, 3 // Convenient
75 #define hw__cta_urs _cb1, cr1, 1, 2
76 #define hw__cta_udis _cb1, cr1, 1, 1
77 #define hw__cta_cen _cb1, cr1, 1, 0
78 
79 #define hw__cta_ti1s _cb1, cr2, 1, 7
80 #define hw__cta_mms _cb1, cr2, 3, 4
81 #define hw__cta_ccds _cb1, cr2, 1, 3
82 
83 #define hw__cta_etp _cb1, smcr, 1, 15
84 #define hw__cta_ece _cb1, smcr, 1, 14
85 #define hw__cta_etps _cb1, smcr, 2, 12
86 #define hw__cta_etf _cb1, smcr, 4, 8
87 #define hw__cta_msm _cb1, smcr, 1, 7
88 #define hw__cta_ts _cb1, smcr, 3, 4
89 #define hw__cta_sms _cb1, smcr, 3, 0
90 
91 #define hw__cta_tde _cb1, dier, 1, 14
92 #define hw__cta_cc4de _cb1, dier, 1, 12
93 #define hw__cta_cc3de _cb1, dier, 1, 11
94 #define hw__cta_cc2de _cb1, dier, 1, 10
95 #define hw__cta_cc1de _cb1, dier, 1, 9
96 #define hw__cta_ude _cb1, dier, 1, 8
97 #define hw__cta_tie _cb1, dier, 1, 6
98 #define hw__cta_cc4ie _cb1, dier, 1, 4
99 #define hw__cta_cc3ie _cb1, dier, 1, 3
100 #define hw__cta_cc2ie _cb1, dier, 1, 2
101 #define hw__cta_cc1ie _cb1, dier, 1, 1
102 #define hw__cta_uie _cb1, dier, 1, 0
103 
104 #define hw__cta_cc4of _cb1, sr, 1, 12
105 #define hw__cta_cc3of _cb1, sr, 1, 11
106 #define hw__cta_cc2of _cb1, sr, 1, 10
107 #define hw__cta_cc1of _cb1, sr, 1, 9
108 #define hw__cta_tif _cb1, sr, 1, 6
109 #define hw__cta_cc4if _cb1, sr, 1, 4
110 #define hw__cta_cc3if _cb1, sr, 1, 3
111 #define hw__cta_cc2if _cb1, sr, 1, 2
112 #define hw__cta_cc1if _cb1, sr, 1, 1
113 #define hw__cta_uif _cb1, sr, 1, 0
114 
115 #define hw__cta_cc4p _cb1, ccer, 1, 13
116 #define hw__cta_cc4e _cb1, ccer, 1, 12
117 #define hw__cta_cc3p _cb1, ccer, 1, 9
118 #define hw__cta_cc3e _cb1, ccer, 1, 8
119 #define hw__cta_cc2p _cb1, ccer, 1, 5
120 #define hw__cta_cc2e _cb1, ccer, 1, 4
121 #define hw__cta_cc1p _cb1, ccer, 1, 1
122 #define hw__cta_cc1e _cb1, ccer, 1, 0
123 
124 #define hw__cta_oc2ce _cb1, ccmr1, 1, 15
125 #define hw__cta_oc2m _cb1, ccmr1, 3, 12
126 #define hw__cta_ic2f _cb1, ccmr1, 4, 12
127 #define hw__cta_oc2pe _cb1, ccmr1, 1, 11
128 #define hw__cta_oc2fe _cb1, ccmr1, 1, 10
129 #define hw__cta_ic2psc _cb1, ccmr1, 2, 10
130 #define hw__cta_cc2s _cb1, ccmr1, 2, 8
131 
132 #define hw__cta_oc1ce _cb1, ccmr1, 1, 7
133 #define hw__cta_oc1m _cb1, ccmr1, 3, 4
134 #define hw__cta_ic1f _cb1, ccmr1, 4, 4
135 #define hw__cta_oc1pe _cb1, ccmr1, 1, 3
136 #define hw__cta_oc1fe _cb1, ccmr1, 1, 2
137 #define hw__cta_ic1psc _cb1, ccmr1, 2, 2
138 #define hw__cta_cc1s _cb1, ccmr1, 2, 0
139 
140 #define hw__cta_oc4ce _cb1, ccmr2, 1, 15
141 #define hw__cta_oc4m _cb1, ccmr2, 3, 12
142 #define hw__cta_ic4f _cb1, ccmr2, 4, 12
143 #define hw__cta_oc4pe _cb1, ccmr2, 1, 11
144 #define hw__cta_oc4fe _cb1, ccmr2, 1, 10
145 #define hw__cta_ic4psc _cb1, ccmr2, 2, 10
146 #define hw__cta_cc4s _cb1, ccmr2, 2, 8
147 
148 #define hw__cta_oc3ce _cb1, ccmr2, 1, 7
149 #define hw__cta_oc3m _cb1, ccmr2, 3, 4
150 #define hw__cta_ic3f _cb1, ccmr2, 4, 4
151 #define hw__cta_oc3pe _cb1, ccmr2, 1, 3
152 #define hw__cta_oc3fe _cb1, ccmr2, 1, 2
153 #define hw__cta_ic3psc _cb1, ccmr2, 2, 2
154 #define hw__cta_cc3s _cb1, ccmr2, 2, 0
155 
156 /* Relatives
157  */
158 #define hw__cta_prescaler _cb1, psc, 16, 0
159 #define hw__cta_reload _cb1, arr, 16, 0
160 
161 #define hw__cta_irq _irq, uie, uif, 0 // Clear flag writing 0 (rc_w0)
162 
163 /* Generate relatives for channels:
164  * _cca,(counterX,channelY),(Y)
165  */
166 #define hw__cta_ , _hw_ctarl
167 
168 #define _hw_ctarl(o,r,d) HW_BED(_hw_ctarl,_hw__cta_##r,o,r)
169 #define _hw_ctarl0(o,r,...) HW_E(HW_EM_OO(o,r))
170 #define _hw_ctarl1(o,r,c,...) c,(o,r),(__VA_ARGS__)
171 
172 #define _hw__cta_channel1 _cca, 1
173 #define _hw__cta_channel2 _cca, 2
174 #define _hw__cta_channel3 _cca, 3
175 #define _hw__cta_channel4 _cca, 4
176 
177 
178 #if !defined __ASSEMBLER__
179 
180 typedef struct {
181  hwa_r16_t cr1 ;
182  hwa_r16_t cr2 ;
183  hwa_r16_t smcr ;
184  hwa_r16_t dier ;
185  hwa_r16_t egr ;
186  hwa_r16_t ccmr1 ;
187  hwa_r16_t ccmr2 ;
188  hwa_r16_t ccer ;
189  hwa_r16_t cnt ;
190  hwa_r16_t psc ;
191  hwa_r16_t arr ;
192  hwa_r16_t ccr1 ;
193  hwa_r16_t ccr2 ;
194  hwa_r16_t ccr3 ;
195  hwa_r16_t ccr4 ;
196 } hwa_cta_t ;
197 
198 #endif
cca_1.h
STM32 capture-compare channel.