This commit is contained in:
wmano
2025-10-19 22:11:21 +08:00
parent 1e6443a767
commit d52c94b866
11 changed files with 201 additions and 19 deletions
+2
View File
@@ -56,6 +56,7 @@ void FM_Init (void)
#endif
#endif
#if 0
printf("onchip size : 0x%lX\r\n", SIZE_ONCHIP_FLASH);
printf("0x%08lX+0x%lX 'parameters'.\r\n", BASE_PARAMETERS, SIZE_PART_PARAMETERS);
printf("0x%08X+0x%X 'app'.\r\n", _flash_app_part.addr, _flash_app_part.len);
@@ -65,6 +66,7 @@ void FM_Init (void)
printf("0x%08X+0x%X 'factory'.\r\n", _flash_factory_part.addr, _flash_app_part.len);
#endif
#endif
#endif
#if (CONFIG_DECRYPT)
AES_init_ctx_iv(&aesCtx, (uint8_t *)AES256_KEY, (uint8_t *)AES256_IV);
+5 -2
View File
@@ -168,7 +168,7 @@ int main (void)
MX_GPIO_Init();
MX_DMA_Init();
MX_USART_Init();
#if 0
printf("\r\n\r\n========================================\r\n");
printf("\t%s boot V%d.%d.%d\r\n", NAME_CHIP,
VERSION_MAIN, VERSION_SUB, VERSION_FIX);
@@ -176,7 +176,10 @@ int main (void)
printf("Chip UID: %08X - %08X - %08X\r\n",
HAL_GetUIDw0(), HAL_GetUIDw1(), HAL_GetUIDw2());
printf("========================================\r\n");
#else
printf("\tboot V%d.%d.%d built @ %s\r\n",
VERSION_MAIN, VERSION_SUB, VERSION_FIX, BUILD_TIMESTAMP);
#endif
APP_Init();
while (1) {
+4
View File
@@ -3,6 +3,8 @@
#include <board.h>
#include "chrg_vcom.h"
#include "chrg_lcd.h"
#define DBG_TAG "chrg.vcom"
#include <rtdbg.h>
@@ -34,6 +36,8 @@ int chrg_vcom_console_init (void)
{
rt_console_set_device(DEV_NAME_VCOM);
chrg_lcd_init();
return 0;
}
+5 -1
View File
@@ -7,11 +7,11 @@
#include <string.h>
#include "shell.h"
#include "main.h"
#include "chrg_wdt.h"
void show_app_version (void)
{
#if 0
rt_kprintf("\r\n\r\n================================================\r\n");
rt_kprintf("\tcharger control via RT-Thread v%d.%d.%d\r\n",
RT_VERSION_MAJOR, RT_VERSION_MINOR, RT_VERSION_PATCH);
@@ -19,6 +19,10 @@ void show_app_version (void)
rt_kprintf("\tUID: %08X %08X %08X\r\n",
HAL_GetUIDw2(), HAL_GetUIDw1(), HAL_GetUIDw0());
rt_kprintf("================================================\r\n");
#else
rt_kprintf("\tcharger control via RT-Thread v%d.%d.%d built @ %s, %s\r\n",
RT_VERSION_MAJOR, RT_VERSION_MINOR, RT_VERSION_PATCH, __DATE__, __TIME__);
#endif
}
int main(void)
-8
View File
@@ -1,8 +0,0 @@
#ifndef __MAIN_H__
#define __MAIN_H__
#include <rtthread.h>
#endif
+151
View File
@@ -1,4 +1,155 @@
#include <string.h>
#include <rtthread.h>
#include "chrg_roll.h"
#include "chrg_north.h"
#include "chrg_south.h"
#include "chrg_lcd.h"
#define LOG_TAG "chrg.lcd"
#define DBG_LEVEL DBG_LOG
#include <rtdbg.h>
struct chrg_lcd_t chrglcd = {
.name = THR_NAME_LCD,
.devname = DEV_NAME_LCD,
.tid = RT_NULL,
.tty = RT_NULL,
};
static int chrg_lcd_parse (char *recv)
{
if (strstr(recv, "main.CH1_RunStop.txt")) {
if (strstr(recv, "run")) {
chrgroll.en_nor[IDX_CH_0] = 1;
} else if (strstr(recv, "stop")) {
chrgroll.en_nor[IDX_CH_0] = 0;
}
// ...
}
return 0;
}
int chrg_lcd_send (char *cmd)
{
rt_ssize_t ret = -1;
struct chrg_tty_t *pTTY = chrglcd.tty;
if (RT_NULL == cmd) {
return -1;
}
int len = strlen(cmd);
rt_uint8_t *data = rt_malloc(len+3);
if (RT_NULL == data) {
LOG_E("malloc failed.");
return -1;
}
memcpy(data, cmd, len);
memset(&data[len], 0xFF, 3);
if (RT_NULL != pTTY) {
ret = chrg_tty_send(pTTY, data, len+3);
}
if (RT_NULL != data) {
rt_free(data);
data = RT_NULL;
}
return ret;
}
static void chrg_lcd_thread_entry (void *data)
{
struct chrg_lcd_t *pLCD = (struct chrg_lcd_t *)data;
if ((RT_NULL == pLCD)||(RT_NULL == pLCD->tty)) {
return ;
}
int len = 0;
struct chrg_tty_t *pTTY = pLCD->tty;
chrg_tty_set_recv_tmo(pTTY, 100);
if (chrg_tty_connect(pTTY) != RT_EOK) {
chrg_tty_destory(pTTY);
return;
}
while (1) {
len = chrg_tty_recv(pTTY, pLCD->rx_buf, sizeof(pLCD->rx_buf));
if (len <= 0) {
rt_thread_mdelay(1);
continue;
}
rt_kprintf("%s\r\n", (char *)pLCD->rx_buf);
chrg_lcd_parse((char *)pLCD->rx_buf);
}
}
int chrg_lcd_init (void)
{
rt_err_t ret;
struct chrg_lcd_t *pLCD = &chrglcd;
pLCD->tty = chrg_tty_create(pLCD->devname, 115200, 0, -1, 1);
if (RT_NULL == pLCD->tty) {
LOG_E("tty can't create.");
return -1;
}
rt_memset(pLCD->rx_buf, 0, SIZE_BUF_TTY);
ret = rt_mutex_init(&pLCD->lock, pLCD->name, RT_IPC_FLAG_FIFO);
if (ret != RT_EOK) {
LOG_E("init mutex '%s' failed.", pLCD->name);
return ret;
}
pLCD->tid = rt_thread_create(pLCD->name, chrg_lcd_thread_entry, pLCD, 4096,
RT_MAIN_THREAD_PRIORITY, 20);
if (RT_NULL != pLCD->tid) {
rt_thread_startup(pLCD->tid);
} else {
LOG_E("create thread '%s' failed.", pLCD->name);
}
return 0;
}
//INIT_APP_EXPORT(chrg_lcd_init);
#if 1
static int lcdsend(rt_uint8_t argc, char **argv)
{
if (2 != argc) {
rt_kprintf("help : %s <cmd>\r\n e.g. %s main.CH1_Volt_Show.txt=\"5.000\"",
argv[0], argv[0]);
return -1;
}
chrg_lcd_send(argv[1]);
return 0;
}
MSH_CMD_EXPORT(lcdsend, lcd send test);
#endif
+23
View File
@@ -1,6 +1,29 @@
#ifndef __CHRG_LCD_H__
#define __CHRG_LCD_H__
#include <rtthread.h>
#include "chrg_tty.h"
#define THR_NAME_LCD "thr.lcd"
#define DEV_NAME_LCD "uart2"
struct chrg_lcd_t {
const char *name;
const char *devname;
struct rt_thread *tid;
struct rt_mutex lock;
struct chrg_tty_t *tty;
rt_uint8_t rx_buf[SIZE_BUF_TTY];
};
extern struct chrg_lcd_t chrglcd;
extern int chrg_lcd_send (char *cmd);
extern int chrg_lcd_init (void);
#endif
+3 -3
View File
@@ -76,7 +76,7 @@ static void chrg_roll_thread_entry (void *data)
sink_get_vc(pSW->sink.loadv, pSW->sink.loadc);
}
rt_kprintf("Nor[%d].%d\r\n", pNOR->idx, pSW->id);
//rt_kprintf("Nor[%d].%d\r\n", pNOR->idx, pSW->id);
}
} else {
sou_idx = pROLL->idx - TOTAL_CHS;
@@ -89,11 +89,11 @@ static void chrg_roll_thread_entry (void *data)
chrg_switch_south(pSOU->idx);
pSW = &pSOU->sw[pSOU->idx];
// todo pkg send
if (ID_ELOAD == pSW->id) {
source_get_vc(pSW->source.voltage, pSW->source.current);
// change pro modbus
}
rt_kprintf("Sou[%d].%d\r\n", pSOU->idx, pSW->id);
//rt_kprintf("Sou[%d].%d\r\n", pSOU->idx, pSW->id);
}
}
+4 -3
View File
@@ -83,7 +83,7 @@ static int chrg_south_init (void)
rt_err_t ret;
struct chrg_south_t *pSOU = &chrgsouth;
pSOU->tty = chrg_tty_create(pSOU->devname, 2000000, 0, -1, 1);
pSOU->tty = chrg_tty_create(pSOU->devname, 115200, 0, -1, 1);
if (RT_NULL == pSOU->tty) {
LOG_E("tty can't create.");
return -1;
@@ -111,10 +111,11 @@ static int chrg_south_init (void)
INIT_APP_EXPORT(chrg_south_init);
#if 0
#if 1
static int south_send(rt_uint8_t argc, char **argv)
{
return chrg_south_send("1234567890abcdef", 16);
return source_get_vc(5000, 1000);
//return chrg_south_send("1234567890abcdef", 16);
}
+4 -2
View File
@@ -2,6 +2,8 @@
#include <string.h>
#include <rtthread.h>
#include "chrg_north.h"
#include "chrg_south.h"
#include "chrg_pkg.h"
#include "chrg_utils.h"
@@ -38,10 +40,10 @@ int chrg_pkg_send (eIDX_TTY idx, rt_uint8_t *data, rt_uint16_t len)
switch (idx) {
case IDX_TTY_NORTH:
// pTTY = chrgnorth.tty;
pTTY = chrgnorth.tty;
break;
case IDX_TTY_SOUTH:
// pTTY = chrgsouth.tty;
pTTY = chrgsouth.tty;
break;
default:
return -1;