WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
hal_gpio_v150_regs_op.h
浏览该文件的文档.
1
9#ifndef HAL_GPIO_V150_REGS_OP_H
10#define HAL_GPIO_V150_REGS_OP_H
11
12#include <stdint.h>
13#include "common_def.h"
15#include "gpio_porting.h"
16
17#ifdef __cplusplus
18#if __cplusplus
19extern "C" {
20#endif /* __cplusplus */
21#endif /* __cplusplus */
22
30#define hal_gpio_set_bit(x, y, z) (((uint32_t)(x) & ~bit(y)) | (((uint32_t)(z) & 1U) << (uint32_t)(y)))
31
33#define hal_gpio_toggle_bit(x, y) (((x) & ~bit(y)) | ((~(x)) & bit(y)))
34
36#define hal_gpio_read_bit(x, y) (((uint32_t)(x) >> (uint32_t)(y)) & 1U)
37
39
45static inline gpio_v150_regs_t *gpios_v150_regs(uint32_t channel)
46{
47 return (gpio_v150_regs_t *)g_gpios_regs[channel];
48}
49
57static inline void hal_gpio_gpio_sw_out_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin, uint32_t val)
58{
59 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_sw_out =
60 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_sw_out, group_pin, val);
61}
62
70static inline uint32_t hal_gpio_gpio_sw_out_get_bit(uint32_t channel, uint32_t group, uint32_t group_pin)
71{
72 return hal_gpio_read_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_sw_out, group_pin);
73}
74
81static inline void hal_gpio_gpio_sw_out_toggle_bit(uint32_t channel, uint32_t group, uint32_t group_pin)
82{
83 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_sw_out =
84 hal_gpio_toggle_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_sw_out, group_pin);
85}
86
94static inline uint32_t hal_gpio_gpio_sw_oen_get_bit(uint32_t channel, uint32_t group, uint32_t group_pin)
95{
96 return hal_gpio_read_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_sw_oen, group_pin);
97}
98
106static inline void hal_gpio_gpio_sw_oen_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin, uint32_t val)
107{
108 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_sw_oen =
109 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_sw_oen, group_pin, val);
110}
111
119static inline uint32_t hal_gpio_gpio_sw_ctl_get_bit(uint32_t channel, uint32_t group, uint32_t group_pin)
120{
121 return hal_gpio_read_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_sw_ctl, group_pin);
122}
123
131static inline void hal_gpio_gpio_sw_ctl_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin, uint32_t val)
132{
133 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_sw_ctl =
134 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_sw_ctl, group_pin, val);
135}
136
144static inline uint32_t hal_gpio_gpio_int_en_get_bit(uint32_t channel, uint32_t group, uint32_t group_pin)
145{
146 return hal_gpio_read_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_en, group_pin);
147}
148
156static inline void hal_gpio_gpio_int_en_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin, uint32_t val)
157{
158 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_en =
159 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_en, group_pin, val);
160}
161
167static inline void hal_gpio_gpio_int_en_disable_all(uint32_t channel, uint32_t group)
168{
169 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_en = 0x0;
170}
171
179static inline uint32_t hal_gpio_gpio_int_mask_get_bit(uint32_t channel, uint32_t group, uint32_t group_pin)
180{
181 return hal_gpio_read_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_mask, group_pin);
182}
183
191static inline void hal_gpio_gpio_int_mask_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin, uint32_t val)
192{
193 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_mask =
194 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_mask, group_pin, val);
195}
196
202static inline void hal_gpio_gpio_int_mask_unmask_all(uint32_t channel, uint32_t group)
203{
204 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_mask = 0x0;
205}
206
212static inline void hal_gpio_gpio_int_mask_mask_all(uint32_t channel, uint32_t group)
213{
214 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_mask = 0xFFFFFFFF;
215}
216
224static inline uint32_t hal_gpio_gpio_int_type_get_bit(uint32_t channel, uint32_t group, uint32_t group_pin)
225{
226 return hal_gpio_read_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_type, group_pin);
227}
228
236static inline void hal_gpio_gpio_int_type_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin, uint32_t val)
237{
238 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_type =
239 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_type, group_pin, val);
240}
241
249static inline uint32_t hal_gpio_gpio_int_polarity_get_bit(uint32_t channel, uint32_t group, uint32_t group_pin)
250{
251 return hal_gpio_read_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_polarity, group_pin);
252}
253
261static inline void hal_gpio_v150_gpio_int_polarity_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin,
262 uint32_t val)
263{
264 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_polarity =
265 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_polarity, group_pin, val);
266}
267
275static inline uint32_t hal_gpio_gpio_int_dedge_get_bit(uint32_t channel, uint32_t group, uint32_t group_pin)
276{
277 return hal_gpio_read_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_dedge, group_pin);
278}
279
287static inline void hal_gpio_gpio_int_dedge_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin, uint32_t val)
288{
289 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_dedge =
290 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_dedge, group_pin, val);
291}
292
300static inline uint32_t hal_gpio_gpio_int_debounce_get_bit(uint32_t channel, uint32_t group, uint32_t group_pin)
301{
302 return hal_gpio_read_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_debounce, group_pin);
303}
304
312static inline void hal_gpio_gpio_int_debounce_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin,
313 uint32_t val)
314{
315 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_debounce =
316 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_debounce, group_pin, val);
317}
318
325static inline uint32_t hal_gpio_gpio_int_raw_get_data(uint32_t channel, uint32_t group)
326{
327 return gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_raw;
328}
329
336static inline uint32_t hal_gpio_gpio_intr_get_data(uint32_t channel, uint32_t group)
337{
338 return gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_intr;
339}
340
348static inline void hal_gpio_gpio_int_eoi_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin, uint32_t val)
349{
350 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_eoi =
351 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_eoi, group_pin, val);
352}
353
359static inline void hal_gpio_gpio_int_eoi_clr_all(uint32_t channel, uint32_t group)
360{
361 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_eoi = 0xFFFFFFFF;
362}
363
371static inline void hal_gpio_gpio_data_set_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin, uint32_t val)
372{
373 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_data_set =
374 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_data_set, group_pin, val);
375}
376
384static inline void hal_gpio_gpio_data_clr_set_bit(uint32_t channel, uint32_t group, uint32_t group_pin, uint32_t val)
385{
386 gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_data_clr =
387 hal_gpio_set_bit(gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_data_clr, group_pin, val);
388}
389
396static inline uint32_t hal_gpio_gpio_get_int_en(uint32_t channel, uint32_t group)
397{
398 return gpios_v150_regs(channel)->gpio_group_cfg[group].gpio_int_en;
399}
400
406void hal_gpio_v150_intr_rebase(uint32_t channel, uint32_t group);
407
412#ifdef __cplusplus
413#if __cplusplus
414}
415#endif /* __cplusplus */
416#endif /* __cplusplus */
417
418#endif
#define hal_gpio_toggle_bit(x, y)
Definition hal_gpio_v150_regs_op.h:33
uintptr_t g_gpios_regs[GPIO_CHANNEL_MAX_NUM]
Definition hal_gpio.c:13
void hal_gpio_v150_intr_rebase(uint32_t channel, uint32_t group)
Init all GPIO interrupt relative regs. Disable, mask and clean all interruption status.
Definition hal_gpio_v150_regs_op.c:14
#define hal_gpio_read_bit(x, y)
Definition hal_gpio_v150_regs_op.h:36
#define hal_gpio_set_bit(x, y, z)
Definition hal_gpio_v150_regs_op.h:30
@ GPIO_CHANNEL_MAX_NUM
Definition gpio_porting.h:69
osal_u32 group
Definition oal_net.h:3
volatile uint32_t gpio_int_mask
Definition hal_gpio_v150_regs_def.h:100
volatile uint32_t gpio_sw_out
Definition hal_gpio_v150_regs_def.h:96
volatile uint32_t gpio_int_raw
Definition hal_gpio_v150_regs_def.h:105
volatile uint32_t gpio_int_dedge
Definition hal_gpio_v150_regs_def.h:103
volatile uint32_t gpio_intr
Definition hal_gpio_v150_regs_def.h:106
volatile uint32_t gpio_data_set
Definition hal_gpio_v150_regs_def.h:108
volatile uint32_t gpio_data_clr
Definition hal_gpio_v150_regs_def.h:109
volatile uint32_t gpio_sw_oen
Definition hal_gpio_v150_regs_def.h:97
volatile uint32_t gpio_int_polarity
Definition hal_gpio_v150_regs_def.h:102
volatile uint32_t gpio_int_debounce
Definition hal_gpio_v150_regs_def.h:104
volatile uint32_t gpio_int_type
Definition hal_gpio_v150_regs_def.h:101
volatile uint32_t gpio_int_eoi
Definition hal_gpio_v150_regs_def.h:107
volatile uint32_t gpio_int_en
Definition hal_gpio_v150_regs_def.h:99
volatile uint32_t gpio_sw_ctl
Definition hal_gpio_v150_regs_def.h:98
Register definition of GPIO channel. A GPIO channel contains a maximum of 8 groups of pin....
Definition hal_gpio_v150_regs_def.h:118
volatile gpio_group_regs_t gpio_group_cfg[GPIO_GROUP_MAX_NUM]
Definition hal_gpio_v150_regs_def.h:119
unsigned int uintptr_t
Definition td_type.h:65