Так что ничего конкретного сказать не могу.
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Код: Выделить всё
//#ifndef FUNC_H
//#define FUNC_H
//==================
STATE (PROC_DEVICE_INIT, proc_device_init),
STATE (PROC_DEVICE_WAIT_SWITCH_MODE, proc_device_wait_switch_mode),
STATE (PROC_DEVICE_MANUAL, proc_device_manual_mode),
STATE (PROC_DEVICE_AUTOMAT, proc_device_automat_mode),
STATE (PROC_DEVICE_EMERG_MODE, proc_device_emerg_mode),
//==================
//#endifКод: Выделить всё
#ifndef PROC_DEVICE_H
#define PROC_DEVICE_H
#define __flash const
//==================
typedef void (*FUNC)(void);
//==================
typedef enum _proc_device
{
#define STATE(name, func) name
#include "func.h"
#undef STATE
PROC_DEVICE_STATES,
}proc_device_t;
void proc_device (void);
void proc_device_init (void);
void proc_device_wait_switch_mode (void);
void proc_device_manual_mode (void);
void proc_device_automat_mode (void);
void proc_device_emerg_mode (void);
void proc_fsm_func (FUNC __flash *ptr_func, unsigned char s);
__flash FUNC proc_device_func [PROC_DEVICE_STATES] ;
#endif
Код: Выделить всё
#include "_proc_device.h"
static proc_device_t _proc_device;
void proc_device (void)
{
_proc_device = PROC_DEVICE_INIT;
proc_fsm_func (proc_device_func, _proc_device);
_proc_device = PROC_DEVICE_MANUAL;
proc_fsm_func (proc_device_func, _proc_device);
_proc_device = PROC_DEVICE_AUTOMAT;
proc_fsm_func (proc_device_func, _proc_device);
_proc_device = PROC_DEVICE_WAIT_SWITCH_MODE;
proc_fsm_func (proc_device_func, _proc_device);
_proc_device = PROC_DEVICE_EMERG_MODE;
proc_fsm_func (proc_device_func, _proc_device);
}
void proc_device_init (void) {
PORTC = (1 << 0);
}
void proc_device_wait_switch_mode (void) {
PORTC = (1 << 1);
}
void proc_device_manual_mode (void) {
PORTC = (1 << 2);
}
void proc_device_automat_mode (void) {
PORTC = (1 << 3);
}
void proc_device_emerg_mode (void) {
PORTC = (1 << 4);
}
void proc_fsm_func (FUNC __flash *ptr_func, unsigned char s)
{
ptr_func [s] ();
}
__flash FUNC proc_device_func [PROC_DEVICE_STATES] =
{
#define STATE(name, func) func
#include "func.h"
#undef STATE
};В ARM нет необходимости в __flash потому что флеш, озу, регистры и др. в едином адресном пространстве равном 4 ГБ.Dimon456 писал(а):gcc_arm не проглотил
Код: Выделить всё
#define __flash const
Program Size:
text data bss dec hex filename
888 0 1032 1920 780 TEMPLATE_FSM_ARM.elf
proc_device_func 0x08000364
proc_device_func[0] 0x080002c5
proc_device_func[1] 0x080002d5
proc_device_func[2] 0x080002e5
proc_device_func[3] 0x080002f5
proc_device_func[4] 0x08000305Код: Выделить всё
#define __flash //const
Program Size:
text data bss dec hex filename
868 20 1028 1916 77c TEMPLATE_FSM_ARM.elf
proc_device_func 0x20000000
proc_device_func[0] 0x080003ed
proc_device_func[1] 0x08000409
proc_device_func[2] 0x08000425
proc_device_func[3] 0x08000441
proc_device_func[4] 0x0800045dКод: Выделить всё
MLMESSAGE( Enter , "Button >Enter<" , "Taste >Enter<" , "Tecla >Enter<" , "Touche >Enter<" , "Нажми > Ввод <" ) //14
MLMESSAGE( Grade , "Grade" , "Sorte" , "Grado" , "Produit" , "Продукт" ) //15
MLMESSAGE( Price , "Price" , "Preis" , "Precio" , "Prix" , "Цена" ) //16
MLMESSAGE( Sign , "Sign" , "Anzeige" , "Se al" , "Afficheur" , "Табло" ) //17
MLMESSAGE( LineGrade , "Line Grade " , "Zeile Sorte " , "L nea Grado " , "Ligne Prod. " , "Строка Прод" ) //18
MLMESSAGE( Lines , "Lines " , "Zeilen " , "L neas " , "Lignes " , "Строки" ) //19
MLMESSAGE( DigitsLine , "Digits/line " , "Ziffer/Zeile " , "D gitos/l nea " , "Chiffres/ligne " , "Цифры" ) //20
Код: Выделить всё
//PRODUCT( Name , En , Ru
PRODUCT( Empty , "--------- " , "----------" )
PRODUCT( Normal80 , "Normal 80 " , "Нормаль 80" )
PRODUCT( Ai92 , "AI 92 " , "АИ 92 " )
PRODUCT( Ai95 , "AI 95 " , "АИ 95 " )
Код: Выделить всё
SETUP( Light , "Яркость/bright" , 10 , 100 , 0 )
SETUP( Lang , "Language" , RUS , LANG_QTY-1 , 0 )
Код: Выделить всё
STATE ( EnterGrade , "Prices" , "УСТАНОВКА ЦЕН" , null_menu )
STATE ( EnterEffect , "Effect" , "ЭФФЕКТ" , null_menu )
STATE ( EnterBrightness , "Brightness" , "ЯРКОСТЬ" , null_menu )
STATE ( ConfigurationPin , "Configuration" , "КОНФИГУРАЦИЯ" , null_menu )
STATE ( ZeroesSpaces , "Zeros and spaces" , "НУЛИ И ПРОБЕЛЫ" , null_menu )
STATE ( ServiceMenu , "Service menu" , "СЕРВИС" , null_menu )
Код: Выделить всё
STATE (PROC_DEVICE_INIT, proc_device_init, "PROC_DEVICE_INIT"),
STATE (PROC_DEVICE_WAIT_SWITCH_MODE, proc_device_wait_switch_mode, "PROC_DEVICE_WAIT_SWITCH_MODE"),
STATE (PROC_DEVICE_MANUAL, proc_device_manual_mode, "PROC_DEVICE_MANUAL"),
STATE (PROC_DEVICE_AUTOMAT, proc_device_automat_mode, "PROC_DEVICE_AUTOMAT"),
STATE (PROC_DEVICE_EMERG_MODE, proc_device_emerg_mode, "PROC_DEVICE_EMERG_MODE"),Код: Выделить всё
char *Array [] = {
#define STATE(name, func, ima) ima
#include "func.h"
#undef STATE
};На тот момент изначально .NET - чисто винда. Дальше:C# (произносится си шарп) — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров компании Microsoft под руководством Андерса Хейлсберга и Скотта Вильтаумота[7] как язык разработки приложений для платформы Microsoft .NET Framework.
CLR - реализация виртуальной машины. Опять же для винды.C# разрабатывался как язык программирования прикладного уровня для CLR
Я имею в виду, что в реальности это почти нигде не используется. Ну слишком высокие накладные расходы для МК. Бессмыслица.Не видеть Яву на мк странно, она там в куче мест... Имеет смысл поглядеть дальше вики. Или Вы имеете ввиду 8-битную мелочь?
.NET Micro Framework работает с STM32, даже на сайте ST есть документы, типа UM1676. На смену Micro пришел nanoFramework, работает на кортексах и ESP32.По ссылке FEZ Panda 2. Там не STM32, а ARM7TDMI с 512 флэша и 96 рамы. Смотрю .NET Micro Framework только для ARM7, ARM9 и BlackFin вроде как анонсирован. И проект уже в архиве и не разивавается. Равно как и Panda эта.