Собственно, пытаюсь помигать диодом (ну ладно - пока вообще просто запустить его) на плате с контроллером stm8s003f3. Нужно задействовать PD3. Собираю sdcc и stm8flash. Как я понимаю - я должен выставить единицы соответствующим битам в PD_DDR и в PD_ODR?
#include <stdint.h>
#define PD_ODR *(unsigned char*)0x500F
#define PD_DDR *(unsigned char*)0x5011
void delay(uint32_t t) {
while (t) t--;
}
int main( void )
{
uint8_t val = 0b11111111;
PD_DDR=0b11111111;
while (1) {
val = val ^ 0b11111111;
PD_ODR = val;
delay(20000);
}
return 0;
}
мейкфайл следующий :
CC=sdcc
CFLAGS=-mstm8
INCLUDEPATH=lib/stm8/inc/
DEFINES= STM8S003
SOURCE=src/main
OUTPUT_DIR=build/
all: compile flash
compile:
mkdir -p $(OUTPUT_DIR)
$(CC) $(CFLAGS) -I $(INCLUDEPATH) -D $(DEFINES) -o $(OUTPUT_DIR) $(SOURCE).c
flash:
stm8flash -c stlinkv2 -p stm8s003 -w build/main.ihx
Но на выходе имею 0. При этом, при попытке залить тем же stm8flash заранее слитую родную прошивку - она работает корректно.
upd. Однако, одна глупая ошибка была - но по исправлении ничего не поменялось. Новый код в посте.