В работе над своими проектами столкнулся с тем, что для STM нет нормальных библиотек. То, что предлагается или слишком ущербно или слишком заумно.
Для написания прошивок иcпользую CubeIDE и стандартную библиотеку CMSIS.
Поэтому решил по мере надобности переписывать библиотеки Алекса чтобы получить более привычную среду программирования.
Для STM32F1xx и STM324xx есть готовые ядра для Arduino IDE, и для PlatformIO уже много чего есть. Но передо мной чаще всего стоит задача написать код покомпактнее используя только CMSIS без HAL.
Уже не раз сталкивался с тем, что HAL глючит.
Так как я начал делать это недавно, пока готовых у меня мало. Сегодня выложу библиотеку GyverButton.
Так как это наиболее востребованная библиотека ввода с клавиатуры на данный момент.
В наличии есть библиотеки для
LCD6002
ILI9341 через FSMC на базе Adafruit GFX.
SPI
Ну а пока библиотека. Работает она так же как и библиотека Алекса и все примеры подходят от неё. Из за особенности STM32 есть только разница в инициализации.
Например:
На данный момент библиотека работает на кристалле STM32F030F4P6.
Так как в некоторый ядрах Cortex инициализация портов ввода вывода делается немного по разному, в будущем с помощью условной компиляции будут добавляться новые ядра, что бы библиотека стала универсальной.
Так же в ней используется функция millis() эта библиотека сразу не заработает. Эта функция была написана на отдельном таймере, что не совсем удобно. Сейчас работаю над тем, что бы на основе таймера SysTick написать основные функции работы со временем. Так то они готовы. Я не готов их выложить. Сюда не получится а GitHub я ещё не разобрался. Надеюсь на днях выложу основное ядро и структуру которую использует данная библиотека.
PS. Просьба к знающим STM по возможности указать на ошибки, если они допущены, и по мере возможности обсудить как должно выглядеть ядро для STM чтобы им было удобно пользоваться.
Для написания прошивок иcпользую CubeIDE и стандартную библиотеку CMSIS.
Поэтому решил по мере надобности переписывать библиотеки Алекса чтобы получить более привычную среду программирования.
Для STM32F1xx и STM324xx есть готовые ядра для Arduino IDE, и для PlatformIO уже много чего есть. Но передо мной чаще всего стоит задача написать код покомпактнее используя только CMSIS без HAL.
Уже не раз сталкивался с тем, что HAL глючит.
Так как я начал делать это недавно, пока готовых у меня мало. Сегодня выложу библиотеку GyverButton.
Так как это наиболее востребованная библиотека ввода с клавиатуры на данный момент.
В наличии есть библиотеки для
LCD6002
ILI9341 через FSMC на базе Adafruit GFX.
SPI
Ну а пока библиотека. Работает она так же как и библиотека Алекса и все примеры подходят от неё. Из за особенности STM32 есть только разница в инициализации.
Например:
C++:
// Инициализация клавиатуры
SButton Butt_Up(SW_UP_Port, SW_UP_Pin, HIGH_PULL, NORM_OPEN); // Назначаем кнопку Up
Butt_Up.setTickMode(AUTO); // Включаем для неё автоматический опрос
SButton Butt_Down(SW_DOWN_Port, SW_DOWN_Pin, HIGH_PULL, NORM_OPEN); // Назначам кнопку Down
Butt_Down.setTickMode(AUTO); // Включаем для неё автоматический опрос
SButton Butt_Set(SW_SET_Port, SW_SET_Pin, HIGH_PULL, NORM_OPEN); // Назначаем кнопку Set
Butt_Set.setTickMode(AUTO); // Включаем для неё автоматический опрос
Так как в некоторый ядрах Cortex инициализация портов ввода вывода делается немного по разному, в будущем с помощью условной компиляции будут добавляться новые ядра, что бы библиотека стала универсальной.
Так же в ней используется функция millis() эта библиотека сразу не заработает. Эта функция была написана на отдельном таймере, что не совсем удобно. Сейчас работаю над тем, что бы на основе таймера SysTick написать основные функции работы со временем. Так то они готовы. Я не готов их выложить. Сюда не получится а GitHub я ещё не разобрался. Надеюсь на днях выложу основное ядро и структуру которую использует данная библиотека.
PS. Просьба к знающим STM по возможности указать на ошибки, если они допущены, и по мере возможности обсудить как должно выглядеть ядро для STM чтобы им было удобно пользоваться.
Вложения
-
3.9 KB Просмотры: 51
Изменено: