embox

Форк
0
/
mikron_pad_config.c 
67 строк · 1.5 Кб
1
/**
2
 * @file
3
 * @brief
4
 *
5
 * @author  Anton Bondarev
6
 * @date    17.07.2024
7
 */
8

9
#include <stdint.h>
10

11
#include <drivers/gpio/gpio_driver.h>
12
#include <hal/reg.h>
13
#include <kernel/irq.h>
14

15
//#include <config/board_config.h>
16

17
#include <framework/mod/options.h>
18

19
struct pad_config_port_regs {
20
	volatile uint32_t PORT_CFG;
21
	volatile uint32_t PORT_DS;
22
	volatile uint32_t PORT_PUPD;
23
};
24

25
struct pad_config_regs {
26
	struct pad_config_port_regs pad_config_port_regs[3];
27
};
28

29
#define CONF_PAD_CONFIG_REGION_BASE 0x000050c00
30

31
#define PAD_CONFIG                 ((volatile struct pad_config_regs *)CONF_PAD_CONFIG_REGION_BASE)
32

33
void mik_pad_cfg_set_func(int port, int pin, int func) {
34
	volatile struct pad_config_port_regs *port_regs;
35
	uint32_t mask;
36

37
	port_regs = &(PAD_CONFIG->pad_config_port_regs[port]);
38

39
	mask = 0x3 << (pin << 1);
40
	port_regs->PORT_CFG &= ~mask;
41
	mask = func << (pin << 1);
42
	port_regs->PORT_CFG |= mask;
43
}
44

45
void mik_pad_cfg_set_ds(int port, int pin, int ds) {
46
	volatile struct pad_config_port_regs *port_regs;
47
	uint32_t mask;
48

49
	port_regs = &(PAD_CONFIG->pad_config_port_regs[port]);
50

51
	mask = 0x3 << (pin << 1);
52
	port_regs->PORT_DS &= ~mask;
53
	mask = ds << (pin << 1);
54
	port_regs->PORT_DS |= mask;
55
}
56

57
void mik_pad_cfg_set_pupd(int port, int pin, int pupd) {
58
	volatile struct pad_config_port_regs *port_regs;
59
	uint32_t mask;
60

61
	port_regs = &(PAD_CONFIG->pad_config_port_regs[port]);
62

63
	mask = 0x3 << (pin << 1);
64
	port_regs->PORT_PUPD &= ~mask;
65
	mask = pupd << (pin << 1);
66
	port_regs->PORT_PUPD |= mask;
67
}
68

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.