HWA
Bare metal programming with style
usarta_2.h
Go to the documentation of this file.
1
2
/* This file is part of the HWA project.
3
* Copyright (c) 2019 Christophe Duparquet.
4
* All rights reserved. Read LICENSE.TXT for details.
5
*/
6
44
#define hw_class__usarta
45
46
#define hw_configure__usarta , _hw_cfusarta
47
#define hwa_configure__usarta , _hwa_cfusarta
48
49
#define _hw_cfusarta_clk_from_apb1 , 17
50
51
#if 0
52
#define _hw_cfusarta(o,a,k,...) do{ HW_B(_hwx_cfusarta_k_,k)(_hw,o,k,__VA_ARGS__) }while(0)
53
#define _hwa_cfusarta(o,a,k,...) do{ HW_B(_hwx_cfusarta_k_,k)(_hwa,o,k,__VA_ARGS__) }while(0)
54
#else
55
#define _hw_cfusarta(o,a,k,...) HW_E(HW_EM_TBD())
56
#define _hwa_cfusarta(o,a,k,...) HW_E(HW_EM_TBD())
57
#endif
58
59
/* At least one keyword
60
*/
61
#define _hwx_cfusarta_k_1(h,o,k,...) HW_E(HW_EM_AML((clock,reload,run)))
62
#define _hwx_cfusarta_k_0(h,o,k,...) HW_B(_hwx_cfusarta_kclk_,_hw_is_clock_##k)(h,o,k,__VA_ARGS__)
63
64
/* Optionnal parameter `clock`
65
*/
66
#define _hwx_cfusarta_kclk_1(h,o,k,v,...) HW_B(_hwx_cfusarta_vclk_,_hw_cfusarta_clk_##v)(h,o,v,__VA_ARGS__)
67
#define _hwx_cfusarta_vclk_0(h,o,v,...) HW_E(HW_EM_XNIL(v,(apb1)))
68
#define _hwx_cfusarta_vclk_1(h,o,v,...) _hwx_cfusarta_vclk_2(h,o,v,_hw_cfusarta_clk_##v,__VA_ARGS__)
69
#define _hwx_cfusarta_vclk_2(...) _hwx_cfusarta_vclk_3(__VA_ARGS__)
70
#define _hwx_cfusarta_vclk_3(h,o,v,z,xv,k,...) \
71
if ( 8*xv == 17 ) h##_write(o,clksource,0); \
72
else if ( xv == 17 ) h##_write(o,clksource,1); \
73
else HWA_E(HW_EM_VAL(v,clock,(ahb/8, ahb))); \
74
HW_B(_hwx_cfusarta_krld_,_hw_is_reload_##k)(h,o,k,__VA_ARGS__)
75
76
#define _hwx_cfusarta_kclk_0(h,o,k,...) HW_B(_hwx_cfusarta_krld_,_hw_is_reload_##k)(h,o,k,__VA_ARGS__)
77
78
/* Optionnal parameter `reload`
79
*/
80
#define _hwx_cfusarta_krld_1(h,o,k0,v,k,...) \
81
h##_write(o,arr,(uint32_t)(v)); \
82
HW_B(_hwx_cfusarta_krn_,_hw_is_run_##k)(h,o,k,__VA_ARGS__)
83
84
#define _hwx_cfusarta_krld_0(h,o,k,...) HW_B(_hwx_cfusarta_krn_,_hw_is_run_##k)(h,o,k,__VA_ARGS__)
85
86
/* Optionnal parameter `run`
87
*/
88
#define _hwx_cfusarta_krn_0(h,o,k,...) HW_EOL(k)
89
#define _hwx_cfusarta_krn_1(h,o,k,v,...) HW_B(_hwx_cfusarta_vrn_,_hw_state_##v)(h,o,v,__VA_ARGS__)
90
#define _hwx_cfusarta_vrn_0(h,o,v,...) HW_E(HW_EM_ST(v))
91
#define _hwx_cfusarta_vrn_1(h,o,v,g,...) h##_write(o,cen,HW_A1(_hw_state_##v)); HW_EOL(g)
92
93
102
#define hw_read__usarta , _hw_rdusarta
103
#define _hw_rdusarta(o,a,...) _hw_read(o,cnt)
104
105
188
/*******************************************************************************
189
* *
190
* Context *
191
* *
192
*******************************************************************************/
193
194
#define _hwa_setup__usarta(o,a) \
195
_hwa_setup_r( o, brr ); \
196
_hwa_setup_r( o, cr1 ); \
197
_hwa_setup_r( o, cr2 ); \
198
_hwa_setup_r( o, cr3 ); \
199
_hwa_setup_r( o, gtpr )
200
201
#define _hwa_init__usarta(o,a) \
202
_hwa_init_r( o, brr, 0x00000000 ); \
203
_hwa_init_r( o, cr1, 0x00000000 ); \
204
_hwa_init_r( o, cr2, 0x00000000 ); \
205
_hwa_init_r( o, cr3, 0x00000000 ); \
206
_hwa_init_r( o, gtpr, 0x00000000 )
207
208
#define _hwa_commit__usarta(o,a) \
209
_hwa_commit_r( o, brr ); \
210
_hwa_commit_r( o, cr1 ); \
211
_hwa_commit_r( o, cr2 ); \
212
_hwa_commit_r( o, cr3 ); \
213
_hwa_commit_r( o, gtpr )
Generated for HWA by
1.8.6