Вот именно глядя на будущее - писать нужно платформо-независимо
Вот именно глядя на будущее начинать нужно 100% юридически чисто - как я.
то ваще апафиоз всего и вся! дальше вообще можно не продолжать. это скажет любой инженер. ну в смысл настоящий.
это бич нашего времени - когда за изготовление берутся менеджеры отодвигая и уничтожая инженеров - вот тут и началась жопа с одноразовыми вещами.
У тебя своя специфика - ты где-то разбираешься, но явно не в разработке ПО
я даже на си для процов пишу как на ассемблере.
например чтоб разобрать поток команд в 485 шине мне подлсказали вставить парсер строк. ну я вставил - он сожрал 3 килобайта памяти. я его выкинул и написал по своему - вся прога заняла 1кБ.
пример вот он, чтобю ты не звиздел тут что я не разбираюсь с прошивках
void USART1_IRQHandler ()
{
A = USART1->RDR;
USART1->RQR = USART_RQR_RXFRQ;
/*GPIOA->ODR = 255;
delay(50);
GPIOA->ODR = 0;
delay(50);
*/
if (c2==0&&A==0x41) { c2=1; return;} //a
if (c2==1&&A==0x44) { c2=2; return;} //d
if (c2==2&&A==0x52) { c2=3; return;} //r
if (c2==3&&A==0x45) { c2=4; return;} //e
if (c2==4&&A==0x53) { c2=5; return;} //s
if (c2==5&&A==0x31) { c2=6; return;} //1
if (c2==6&&A==0x35) { c2=7; return;} //5
if (c2==7&&A==0X5F) { c2=8; return;} //_
if (c2==8)
{
switch (A)
{
case 0x41: GPIOA->BSRR = (1<<21); break;
case 0x42: GPIOA->BSRR = (1<<22); break;
case 0x43: GPIOA->BSRR = (1<<23); break;
case 0x44: GPIOB->BSRR = (1<<17); break;
case 0x45: GPIOA->BSRR = (1<<25); break;
case 0x46: GPIOA->BSRR = (1<<26) ; break;
case 0x47: GPIOB->BSRR = (1<<29); break;
case 0x48: GPIOB->BSRR = (1<<30); break;
case 0x30: GPIOA->BSRR = (1<<5); break;
case 0x31: GPIOA->BSRR = (1<<6) ; break;
case 0x32: GPIOA->BSRR = (1<<7); break;
case 0x33: GPIOB->BSRR = (1<<1) ; break;
case 0x34: GPIOA->BSRR = (1<<9); break;
case 0x35: GPIOA->BSRR = (1<<10); break;
case 0x36: GPIOB->BSRR = (1<<13); break;
case 0x37: GPIOB->BSRR = (1<<14) ; break;
}
c2=0;
/*
USART1->CR1 &= ~(USART_CR1_RE);
puthex(A, 3);
USART1->CR1 |= USART_CR1_RE;
*/
}
c2=0;
{
A = USART1->RDR;
USART1->RQR = USART_RQR_RXFRQ;
/*GPIOA->ODR = 255;
delay(50);
GPIOA->ODR = 0;
delay(50);
*/
if (c2==0&&A==0x41) { c2=1; return;} //a
if (c2==1&&A==0x44) { c2=2; return;} //d
if (c2==2&&A==0x52) { c2=3; return;} //r
if (c2==3&&A==0x45) { c2=4; return;} //e
if (c2==4&&A==0x53) { c2=5; return;} //s
if (c2==5&&A==0x31) { c2=6; return;} //1
if (c2==6&&A==0x35) { c2=7; return;} //5
if (c2==7&&A==0X5F) { c2=8; return;} //_
if (c2==8)
{
switch (A)
{
case 0x41: GPIOA->BSRR = (1<<21); break;
case 0x42: GPIOA->BSRR = (1<<22); break;
case 0x43: GPIOA->BSRR = (1<<23); break;
case 0x44: GPIOB->BSRR = (1<<17); break;
case 0x45: GPIOA->BSRR = (1<<25); break;
case 0x46: GPIOA->BSRR = (1<<26) ; break;
case 0x47: GPIOB->BSRR = (1<<29); break;
case 0x48: GPIOB->BSRR = (1<<30); break;
case 0x30: GPIOA->BSRR = (1<<5); break;
case 0x31: GPIOA->BSRR = (1<<6) ; break;
case 0x32: GPIOA->BSRR = (1<<7); break;
case 0x33: GPIOB->BSRR = (1<<1) ; break;
case 0x34: GPIOA->BSRR = (1<<9); break;
case 0x35: GPIOA->BSRR = (1<<10); break;
case 0x36: GPIOB->BSRR = (1<<13); break;
case 0x37: GPIOB->BSRR = (1<<14) ; break;
}
c2=0;
/*
USART1->CR1 &= ~(USART_CR1_RE);
puthex(A, 3);
USART1->CR1 |= USART_CR1_RE;
*/
}
c2=0;
заметь - тут нет дурацких записей типа - set porta.bit5 итипа того. кросплатформенности нету зато все четко и лаконично. и код не пухнет пока препроцессор линкера разгр**** всякие там вложения имакросы
Последнее редактирование: