generated from Embedded_Projects/MPyATE_Template
144 lines
3.7 KiB
C
144 lines
3.7 KiB
C
/* App */
|
|
#include "app_led.h"
|
|
#include "app_reg_if.h"
|
|
|
|
/* Private */
|
|
#include "app_sys_utils.h"
|
|
|
|
#define APP_SYS_REG_OFFSET_CFG (0x00U)
|
|
#define APP_SYS_REG_OFFSET_AUX (0x01U)
|
|
#define APP_SYS_REG_OFFSET_VER (0x0EU)
|
|
#define APP_SYS_REG_OFFSET_ID (0x0FU)
|
|
|
|
#define APP_SYS_CONST_ID (0xEACEU)
|
|
#define APP_SYS_CONST_VER (0x0000U)
|
|
|
|
#define APP_SYS_CFG_GPIO0_FUNC_Pos (0U)
|
|
#define APP_SYS_CFG_GPIO0_FUNC_Msk (3U << APP_SYS_CFG_GPIO0_FUNC_Pos)
|
|
|
|
#define APP_SYS_CFG_GPIO1_FUNC_Pos (2U)
|
|
#define APP_SYS_CFG_GPIO1_FUNC_Msk (3U << APP_SYS_CFG_GPIO1_FUNC_Pos)
|
|
|
|
#define APP_SYS_CFG_GPIO2_FUNC_Pos (4U)
|
|
#define APP_SYS_CFG_GPIO2_FUNC_Msk (3U << APP_SYS_CFG_GPIO2_FUNC_Pos)
|
|
|
|
#define APP_SYS_CFG_GPIO3_FUNC_Pos (6U)
|
|
#define APP_SYS_CFG_GPIO3_FUNC_Msk (3U << APP_SYS_CFG_GPIO3_FUNC_Pos)
|
|
|
|
#define APP_SYS_CFG_RST_Pos (15U)
|
|
#define APP_SYS_CFG_RST_Msk (1U << APP_SYS_CFG_RST_Pos)
|
|
|
|
#define APP_SYS_AUX_LED_R_Pos (0U)
|
|
#define APP_SYS_AUX_LED_R_Msk (1U << APP_SYS_AUX_LED_R_Pos)
|
|
|
|
#define APP_SYS_AUX_LED_G_Pos (1U)
|
|
#define APP_SYS_AUX_LED_G_Msk (1U << APP_SYS_AUX_LED_G_Pos)
|
|
|
|
#define APP_SYS_AUX_LED_B_Pos (2U)
|
|
#define APP_SYS_AUX_LED_B_Msk (1U << APP_SYS_AUX_LED_B_Pos)
|
|
|
|
static inline uint16_t app_sys_utils_read_reg_cfg(void);
|
|
static inline uint16_t app_sys_utils_read_reg_aux(void);
|
|
static inline uint16_t app_sys_utils_read_reg_ver(void);
|
|
static inline uint16_t app_sys_utils_read_reg_id(void);
|
|
|
|
static inline void app_sys_utils_write_reg_cfg(uint16_t data);
|
|
static inline void app_sys_utils_write_reg_aux(uint16_t data);
|
|
|
|
void app_sys_utils_init(void) {
|
|
app_led_off(APP_LED_RED);
|
|
app_led_off(APP_LED_GREEN);
|
|
app_led_off(APP_LED_BLUE);
|
|
}
|
|
|
|
uint16_t app_sys_utils_module_reg_read(uint8_t addr) {
|
|
uint16_t ret = 0x5555;
|
|
|
|
switch (addr) {
|
|
case APP_SYS_REG_OFFSET_CFG:
|
|
ret = app_sys_utils_read_reg_cfg();
|
|
break;
|
|
case APP_SYS_REG_OFFSET_AUX:
|
|
ret = app_sys_utils_read_reg_aux();
|
|
break;
|
|
case APP_SYS_REG_OFFSET_VER:
|
|
ret = app_sys_utils_read_reg_ver();
|
|
break;
|
|
case APP_SYS_REG_OFFSET_ID:
|
|
ret = app_sys_utils_read_reg_id();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
void app_sys_utils_module_reg_write(uint8_t addr, uint16_t data) {
|
|
switch (addr) {
|
|
case APP_SYS_REG_OFFSET_CFG:
|
|
app_sys_utils_write_reg_cfg(data);
|
|
break;
|
|
case APP_SYS_REG_OFFSET_AUX:
|
|
app_sys_utils_write_reg_aux(data);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
static inline uint16_t app_sys_utils_read_reg_cfg(void) {
|
|
return 0x0000U;
|
|
}
|
|
|
|
static inline uint16_t app_sys_utils_read_reg_aux(void) {
|
|
uint16_t ret = 0x0000U;
|
|
|
|
if (app_led_status(APP_LED_RED)) {
|
|
ret |= APP_SYS_AUX_LED_R_Msk;
|
|
}
|
|
|
|
if (app_led_status(APP_LED_GREEN)) {
|
|
ret |= APP_SYS_AUX_LED_G_Msk;
|
|
}
|
|
|
|
if (app_led_status(APP_LED_BLUE)) {
|
|
ret |= APP_SYS_AUX_LED_B_Msk;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
static inline uint16_t app_sys_utils_read_reg_ver(void) {
|
|
return APP_SYS_CONST_VER;
|
|
}
|
|
|
|
static inline uint16_t app_sys_utils_read_reg_id(void) {
|
|
return APP_SYS_CONST_ID;
|
|
}
|
|
|
|
static inline void app_sys_utils_write_reg_cfg(uint16_t data) {
|
|
if (data & APP_SYS_CFG_RST_Msk) {
|
|
NVIC_SystemReset();
|
|
}
|
|
}
|
|
|
|
static inline void app_sys_utils_write_reg_aux(uint16_t data) {
|
|
if (data & APP_SYS_AUX_LED_R_Msk) {
|
|
app_led_on(APP_LED_RED);
|
|
} else {
|
|
app_led_off(APP_LED_RED);
|
|
}
|
|
|
|
if (data & APP_SYS_AUX_LED_G_Msk) {
|
|
app_led_on(APP_LED_GREEN);
|
|
} else {
|
|
app_led_off(APP_LED_GREEN);
|
|
}
|
|
|
|
if (data & APP_SYS_AUX_LED_B_Msk) {
|
|
app_led_on(APP_LED_BLUE);
|
|
} else {
|
|
app_led_off(APP_LED_BLUE);
|
|
}
|
|
} |