История изменений
Исправление KivApple, (текущая версия) :
Тот же opencm3 I2C умеет весьма условно. По крайней мере тогда, когда я его тыкал. Там нормальная поддержка (точнее вроде работающий пример в репозитории) была только для серии STM32F3. HAL, насколько я помню, достаточно низкоуровневый. Та же отправка пакета по I2C это куча вызовов функций в правильной последовательности. И вообще мой велосипед мне кажется куда более удобным, чем существующие аналоги. Например, я могу написать так:
STM32::GPIOPad usart1tx(STM32::GPIOA, STM32::GPIO9, GPIOPad::Mode::ALTFN);
STM32::GPIOPad usart1rx(STM32::GPIOA, STM32::GPIO10, GPIOPad::Mode::INPUT);
STM32::GPIOPad i2c1scl(STM32::GPIOB, STM32::GPIO6, GPIOPad::Mode::ALTFN, GPIOPad::PuPdMode::NONE, GPIOPad::DriverMode::OPENDRAIN);
STM32::GPIOPad i2c1sda(STM32::GPIOB, STM32::GPIO7, GPIOPad::Mode::ALTFN, GPIOPad::PuPdMode::NONE, GPIOPad::DriverMode::OPENDRAIN);
STM32::GPIOPad led(STM32::GPIOC, STM32::GPIO13, GPIOPad::Mode::OUTPUT);
STM32::USART usart1(STM32::USART1, 64, 64, 115200);
STM32::I2C i2c1(STM32::I2C1, 400000);
STM32::USBD usb(&usbDeviceDescr, usbConfigs);
...
while (true) {
led.toggle();
Thread::delay(500);
}
...
usart1.printf("Counter = %i\r\n", counter);
А сам по себе HAL я смотрел. Вроде более-менее повторил алгоритм.
Исправление KivApple, :
Тот же opencm3 I2C умеет весьма условно. По крайней мере тогда, когда я его тыкал. Там нормальная поддержка (точнее вроде работающий пример в репозитории) была только для серии STM32F3. HAL, насколько я помню, достаточно низкоуровневый. Та же отправка пакета по I2C это куча вызовов функций в правильной последовательности. И вообще мой велосипед мне кажется куда более удобным, чем существующие аналоги. Например, я могу написать так:
STM32::GPIOPad usart1tx(STM32::GPIOA, STM32::GPIO9, GPIOPad::Mode::ALTFN);
STM32::GPIOPad usart1rx(STM32::GPIOA, STM32::GPIO10, GPIOPad::Mode::INPUT);
STM32::GPIOPad i2c1scl(STM32::GPIOB, STM32::GPIO6, GPIOPad::Mode::ALTFN, GPIOPad::PuPdMode::NONE, GPIOPad::DriverMode::OPENDRAIN);
STM32::GPIOPad i2c1sda(STM32::GPIOB, STM32::GPIO7, GPIOPad::Mode::ALTFN, GPIOPad::PuPdMode::NONE, GPIOPad::DriverMode::OPENDRAIN);
STM32::GPIOPad led(STM32::GPIOC, STM32::GPIO13, GPIOPad::Mode::OUTPUT);
...
while (true) {
led.toggle();
Thread::delay(500);
}
А сам по себе HAL я смотрел. Вроде более-менее повторил алгоритм.
Исправление KivApple, :
Тот же opencm3 I2C умеет весьма условно. По крайней мере тогда, когда я его тыкал. Там нормальная поддержка (точнее вроде работающий пример в репозитории) была только для серии STM32F3. HAL, насколько я помню, достаточно низкоуровневый. Та же отправка пакета по I2C это куча вызовов функций в правильной последовательности. И вообще мой велосипед мне кажется куда более удобным, чем существующие аналоги. Например, я могу написать так:
STM32::GPIOPad usart1tx(STM32::GPIOA, STM32::GPIO9, GPIOPad::Mode::ALTFN);
STM32::GPIOPad usart1rx(STM32::GPIOA, STM32::GPIO10, GPIOPad::Mode::INPUT);
STM32::GPIOPad i2c1scl(STM32::GPIOB, STM32::GPIO6, GPIOPad::Mode::ALTFN, GPIOPad::PuPdMode::NONE, GPIOPad::DriverMode::OPENDRAIN);
STM32::GPIOPad i2c1sda(STM32::GPIOB, STM32::GPIO7, GPIOPad::Mode::ALTFN, GPIOPad::PuPdMode::NONE, GPIOPad::DriverMode::OPENDRAIN);
STM32::GPIOPad led(STM32::GPIOC, STM32::GPIO13, GPIOPad::Mode::OUTPUT);
...
while (true) {
led.toggle();
Thread::delay(500);
}
Исходная версия KivApple, :
Тот же opencm3 I2C умеет весьма условно. По крайней мере тогда, когда я его тыкал. Там нормальная поддержка (точнее вроде работающий пример в репозитории) была только для серии STM32F3.