Пн янв 02, 2023 16:12:16
Пн янв 02, 2023 16:20:34
Пн янв 02, 2023 23:07:17
int variable = array["parameter_name"];
Ср мар 22, 2023 21:58:40
typedef struct {
char CmdName[12]; // name of command
uint32_t (*fnctPt)(instance_t *, int *); // to execute this command
int *param;
}Cmd_t;
typedef struct {
unsigned char input_string[64];
unsigned int base;
uint32_t stack[FORTH_STACK_SIZE];
uint32_t stack_idx;
unsigned int str_index;
unsigned int esc_sequence;
void (*UART_OutString)(char *);
void (*UART_OutChar)(uint8_t);
void (*UART_OutUDec)(uint32_t);
} instance_t;
Ср мар 22, 2023 22:43:59
struct instance_t;
struct Cmd_t;
struct Cmd_t{
instance_t * p_instance;
};
struct instance_t{
Cmd_t * p_cmd;
};
//----------
{
instance_t inst;
Cmd_t cmd;
inst.p_cmd = &cmd;
cmd.p_instance = &inst;
}
Чт мар 23, 2023 06:56:31
#ifndef COMMANDLINE_H
#define COMMANDLINE_H
#define FORTH_STACK_SIZE 16
struct instance_t;
struct Cmd_t;
typedef struct {
char CmdName[12]; // name of command
uint32_t (*fnctPt)(instance_t *, int *); // to execute this command
int *param;
}Cmd_t;
typedef struct {
unsigned char input_string[64];
unsigned int base;
uint32_t stack[FORTH_STACK_SIZE];
uint32_t stack_idx;
unsigned int str_index;
unsigned int esc_sequence;
Cmd_t * current_vocabulary;
void (*UART_OutString)(char *);
void (*UART_OutChar)(uint8_t);
void (*UART_OutUDec)(uint32_t);
} instance_t;
arm-none-eabi-gcc -g3 -gdwarf-2 -mcpu=cortex-m4 -mthumb -std=c99 '-DDEBUG_EFM=1' '-DEFM32GG12B810F1024GM64=1' '-DSL_BOARD_NAME="BRD2207A"' '-DSL_BOARD_REV="A03"' '-DSL_COMPONENT_CATALOG_PRESENT=1' -I"C:\Users\prg51\SimplicityStudio\Maze\EFM32_ROMI_Robot_2\config"
<Skipped>
In file included from ../Maze.c:21:
../commandline.h:22:24: error: unknown type name 'instance_t'
22 | uint32_t (*fnctPt)(instance_t *, int *); // to execute this command
| ^~~~~~~~~~
uint32_t (*fnctPt)(instance_t *, int *); // to execute this command
Чт мар 23, 2023 09:12:00
typedef struct Node {
DATA_TYPE data;
struct Node *next;
} Node;
Пт мар 24, 2023 02:14:57
Вы не внимательно посмотрели в мой код. У него с Вашим есть различия.uldemir писал(а):Чевой-то не получается
Пт мар 24, 2023 07:50:24
#ifndef COMMANDLINE_H
#define COMMANDLINE_H
#define FORTH_STACK_SIZE (16)
struct instance_t;
struct Cmd_t;
struct Cmd_t{
instance_t * p_instance;
};
struct instance_t{
Cmd_t * p_cmd;
};
/*
----------
In file included from ../Maze.c:21:
../commandline.h:22:5: error: unknown type name 'instance_t'
22 | instance_t * p_instance;
| ^~~~~~~~~~
../commandline.h:27:4: error: unknown type name 'Cmd_t'
27 | Cmd_t * p_cmd;
| ^~~~~
Пт мар 24, 2023 08:44:01
Пт мар 24, 2023 12:30:14
Не совсем в АрдуинеVladislavS писал(а):Аlex, наверное, в ардуине компилирует? Там компилятор в режиме С++ - он такое умеет.
Пт мар 24, 2023 19:07:23
Thunderboard>words
drop dup swap @ +
* / - << !
b! w! & | ^
. sp cr show hex
bin decimal crc vbat threshold
Threshold X_offset Y_slope MAXspeed MINspeed
MAXmotor TurnSpeed Accelerat K*error K*de/dt
Kintegral MotorKprop MotorKint OnWay RunNumber
PathLength MapSize StartPoint EndPoint IRlevel
map LeftHand ColorRed ColorGreen ColorBlue
ColorThr ColorSat DstToleran GuardDist SensorOffs
IgnoreError BrakePath TimeToRun TurnCost CrossCost
StepCost CellStep Volt_calibr Bat_low_lvl Length_tab
RedWall GreenWall Watermark motor_en motor_speed
searchWay validate save_conf dump dump_eeprom
dump_log dump_addlog dump_log_ft dump_map show_path
time_to_run init_brkpth list words
Thunderboard>
const Cmd_t Table[]={
{"drop", &drop_stack, NULL},
{"dup", &dup_stack, NULL},
{"swap", &swap_stack, NULL},
{"@", &read_mem, NULL},
{"+", &sum_stack, NULL},
Пт мар 24, 2023 19:51:37
#include <stdint.h>
#include <string.h>
uint32_t foo1() { return 1; }
uint32_t foo2() { return 2; }
uint32_t foo3() { return 3; }
uint32_t foo4() { return 4; }
uint32_t foo5() { return 5; }
typedef struct {
char CmdName[12];
uint32_t (*fnctPt)();
int *Cmd_t;
} Cmd_t;
const Cmd_t Table[]={
{"drop", &foo1},
{"dup", &foo2},
{"swap", &foo3},
{"@", &foo4},
{"+", &foo5}, };
int main(int argc, char *argv[])
{
for(uint32_t i=0; i<argc; i++)
{
if(strcmp(Table[i].CmdName, argv[i])==0)
return Table[i].fnctPt();
}
}
Пт мар 24, 2023 20:15:05
Я не против. Более того, хотелось бы. Но я не знаю, как это организовать на языке си, поэтому пока что выкрутился используя массивы. На ассемблере и не такие завороты когда-то устраивал. Ну и конечная цель - переключение словарей. Т.е. чтобы в определённом контексте стали бы доступны другие слова. Почти как в настоящем форте.VladislavS писал(а):uldemir, послушайте мой совет - сделайте связный список
Пт мар 24, 2023 21:05:36
Чт мар 30, 2023 14:44:19
Я не против. Более того, хотелось бы. Но я не знаю, как это организовать на языке си, поэтому пока что выкрутился используя массивы. На ассемблере и не такие завороты когда-то устраивал. Ну и конечная цель - переключение словарей. Т.е. чтобы в определённом контексте стали бы доступны другие слова. Почти как в настоящем форте.VladislavS писал(а):uldemir, послушайте мой совет - сделайте связный список
Чт мар 30, 2023 18:44:17
Пт мар 31, 2023 08:40:51
Пт мар 31, 2023 15:53:32
Пт мар 31, 2023 16:22:33
#ifndef COMMANDLINE_H
#define COMMANDLINE_H
#define FORTH_STACK_SIZE (16)
struct instance_t;
struct Cmd_t;
struct Cmd_t{
instance_t * p_instance;
};
struct instance_t{
Cmd_t * p_cmd;
};
/*
----------
In file included from ../Maze.c:21:
../commandline.h:22:5: error: unknown type name 'instance_t'
22 | instance_t * p_instance;
| ^~~~~~~~~~
../commandline.h:27:4: error: unknown type name 'Cmd_t'
27 | Cmd_t * p_cmd;
| ^~~~~
struct instance_t;
struct Cmd_t;
struct Cmd_t{
struct instance_t * p_instance;
};