ПростоНуб писал(а):Начиная с 3.8 он существенно поумнел.
Все равно до gcc еще очень далеко!
ПростоНуб писал(а):Например, QT - великолепная и очень удобная штука.
Жуткая жирная дрянь. Абсолютно ненужная.
VladislavS писал(а):Давай PA0...PA3 - на выход LowSpeeed в нулевое состояние, а PA4...PA7 на выход HighSpeed в единицу.
Возьми, да посмотри, как это у меня на гитхабе сделано. Все элементарно!
Настраиваем как-то так (для STM32F0 немного иначе — там периферия разумней сделана):
Код: Выделить всё
// buzzer (PC13): pushpull output
GPIOC->CRH = CRH(13, CNF_PPOUTPUT|MODE_SLOW);
// Set leds (PB8) as opendrain output
GPIOB->CRH = CRH(8, CNF_ODOUTPUT|MODE_SLOW) | CRH(9, CNF_ODOUTPUT|MODE_SLOW);
// PPS pin (PA1) - input with weak pullup
GPIOA->CRL = CRL(1, CNF_PUDINPUT|MODE_INPUT);
// Set USB pullup (PA15) - opendrain output
GPIOA->CRH = CRH(15, CNF_ODOUTPUT|MODE_SLOW);
А для ногодрыга у меня макросы вроде pin_toggle() или pin_clear. И, скажем, чтобы мыргать светодиодами,
объявляю:
Код: Выделить всё
#define LED_blink() do{if(LEDSon)pin_toggle(LED0_port, LED0_pin);}while(0)
#define LED_on() do{if(LEDSon)pin_clear(LED0_port, LED0_pin);}while(0)
#define LED_off() do{pin_set(LED0_port, LED0_pin);}while(0)
#define LED1_blink() do{if(LEDSon)pin_toggle(LED1_port, LED1_pin);}while(0)
#define LED1_on() do{if(LEDSon)pin_clear(LED1_port, LED1_pin);}while(0)
#define LED1_off() do{pin_set(LED1_port, LED1_pin);}while(0)
Все легко и просто. И совершенно легко читаемо.
Для STM8 разницы не так уж много.
Настройка:
Код: Выделить всё
// PA: 1 - PU IN, 2,3 - PP OUT
PA_DDR = GPIO_PIN2 | GPIO_PIN3;
PA_CR1 = GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3;
и тоже макросы для
для использования:
Код: Выделить всё
#define SET_TRIAC0() PD_ODR |= GPIO_PIN2
#define RESET_TRIAC0() PD_ODR &= ~GPIO_PIN2
#define SET_TRIAC1() PC_ODR |= GPIO_PIN6
#define RESET_TRIAC1() PC_ODR &= ~GPIO_PIN6
C++ — тупой недоязычок. Нет от него толку никакого!