Вчера я попробовал-таки скомпилировать простенькую мигалку диодом на STM8-mini, чтобы проверить работоспособность sdcc.
Тестовый код вот такой:
Оригинал (с Makefile и stm8l.h) взят где-то на просторах то ли сосфоржа, то ли гитхаба из примеров для sdcc и немножно допилен для конкретной макетки.
Сначала я сдуру заменил в Makefile hex2bin на утилиту packihx из пакета sdcc, но оказалось, что делает она что-то совершенно несовместимое с stm8flash, которым прошивался МК. После установки hex2bin все получилось. Оказывается, stm8flash хочет иметь на входе именно "родной" бинарник, которым и будет прошиваться МК, а не дамп памяти в шестнадцатеричных кодах!
Диод замигал, замыкание контактов PD5 и PD2 изменяло частоту мигания. Можно пробовать что-нибудь посложнее.
Тестовый код вот такой:
#include "stm8l.h"
int main() {
int d, T = 10000;
// Configure pins
PD_DDR = 0x18; // PD4,PD3 - output, other are inputs
PD_CR1 = 0x3c; // PD4,PD3 is PPout, PD2&PD5 are inputs with pull-up
PD_ODR = 0xff;
// Loop
do {
PD_ODR ^= 0x18;
for(d = 0; d < T; d++) { }
if(!(PD_IDR & 0x20)) T+= 500;
else if(!(PD_IDR & 0x04)) T -= 500; // PD2
} while(1);
}
Оригинал (с Makefile и stm8l.h) взят где-то на просторах то ли сосфоржа, то ли гитхаба из примеров для sdcc и немножно допилен для конкретной макетки.
Сначала я сдуру заменил в Makefile hex2bin на утилиту packihx из пакета sdcc, но оказалось, что делает она что-то совершенно несовместимое с stm8flash, которым прошивался МК. После установки hex2bin все получилось. Оказывается, stm8flash хочет иметь на входе именно "родной" бинарник, которым и будет прошиваться МК, а не дамп памяти в шестнадцатеричных кодах!
Диод замигал, замыкание контактов PD5 и PD2 изменяло частоту мигания. Можно пробовать что-нибудь посложнее.