Вообщем -садись 2.
arkhnchul, ты то что стебаешься? Код элементарно читаем .
Тогда создайте из него проект, который можно скомпилировать и получить рабочую прошивку.dosikus писал(а):у тебя весь код
dosikus писал(а):жЫрный минус.
Но не компилируется. Причину думаю не нужно объяснять?dosikus писал(а):Все читается на ура
где именно?dosikus писал(а): ты то что стебаешься?
подробнее и исходники:Все началось с очередной попытки бросить курить. Разбудив свою внутреннюю «жабу» в поисках поддержки, говорю ей: «Смотри, пачка моих сигарет стоит сегодня как карманный ретро-компьютер с экраном, то есть примерно $10, а когда-то давным давно, на клон синклера-48К мы всю месячную зарплату и больше месяца на сборку и отладку потратили». Она: «Вы мужики- козлы и вруны, докажи!». Пришлось поработать.
Итак, исходно-расходные материалы:
* «Blue pill»: STM32F103C8T6 — 20K ram 64K flash $2.06
* «Ардуино Display»: ILI9341 2.8" 320x240 с сенсорным экраном и слотом карточки $7.72
* Пищалка $0.18
* Немного кнопок (7 штук) $0.2
* Немного проводов $0.1
* Флеш карта на 64 мега (с древнего фотоаппарата), в расчет не включена
* Программатор ST-LINK, не расходуется и в расчет не включен, однако тоже пару долларов стоит
* Пачка сигарет — расходуется слишком быстро и каждый день -$8.37
У него 256 КБ флеша.Reflector писал(а):взять хотя бы 103RC($1.85) у которого 64К RAM и 512К флеша

https://habr.com/company/inforion/blog/ ... ign=35911626 апреля 2018 года компания ИНФОРИОН провела конференцию для студентов МГТУ им. Баумана SMARTRHINO-2018. Специально для конференции было подготовлено небольшое устройство на базе микроконтроллера STM32F042.
Этот носорожек стал главным героем мастер-класса по реверсу прошивки. К сожалению, за время, отведенное на мастер-класс, не представлялось возможным провести полное исследование прошивки, поэтому мы решили восполнить это подробным разбором в формате статьи. Надеемся, информация будет полезна не только участникам конференции, но также всем начинающим кодокопателям.
Первая часть статьи составлена по мотивам проведённого мастер-класса и рассчитана на начинающих — уделяется внимание базовым подходам к реверсу прошивок и особенностям работы с дизассемблером IDA. Вторая часть немного сложнее, в ней уделяется внимание особенностям работы устройств на базе операционных систем реального времени.
https://habr.com/company/inforion/blog/ ... ign=412561В первой части статьи прошивка устройства была загружена в дизассемблер IDA и выполнен первичный анализ команд протокола устройства. Отдельные команды были проверены на работающем устройстве.
Во второй части будет выполнен анализ оставшихся тасков прошивки.
https://habr.com/post/412753/Приветствую! Недавно для проекта потребовалось запустить дисплей, который имел интерфейс LVDS. Для реализации задачи был выбран контроллер STM32F746, т.к. я с ним уже достаточно много работал и у него есть модуль LTDC, который позволяет работать напрямую с дисплеем без контроллера. В данном случае контроллер реализован уже внутри микроконтроллера. Так же не последним доводом было то, что на данном камне есть отладка STM32F746-Disco, которая у меня была под рукой, а значит я мог начинать работу над проектом не дожидаясь пока ко мне приедет плата, компоненты и прочее.
Сегодня я расскажу как запустить модуль LTDC, работая с регистрами (CMSIS). HAL и прочие библиотеки не люблю и не использую по религиозным убеждениям, но в этом и интерес. Вы увидите, что поднимать сложную периферию на регистрах так же просто, как и обычный SPI. Интересно? Тогда поехали!
...
Итог
Как видите реализация даже сложной периферии на регистрах (CMSIS) является не сложной задачей, вам достаточно понять как оно работает внутри. Конечно нынче модно разрабатывать встроенное ПО без понимания происходящего, но это тупиковый путь, если вы планируете стать инженером, а не…
Если сравнить полученный код с решением на HAL или SPL, то можно заметить, что код написанный на регистрах более компактный. Добавив где нужно пару комментариев и обернув в функции мы получаем читаемость как минимум не хуже, чем у HAL/SPL, а если вспомнив, что reference manual документирует именно регистры, то работа с использованием CMSIS является более удобной.
https://habr.com/post/413101/?utm_sourc ... ign=413101Добрый день, уважаемые хабровчане! Хочу представить общественности мой проект — небольшая отладочная плата на базе STM32, но в форм-факторе Raspberry Pi. От других отладочных плат она отличается тем, что имеет совместимую с корпусами от Raspberry Pi геометрию и наличие ESP8266-модуля в качестве беспроводного модема. А также приятные дополнения в виде разъёма для micro-SD карты и стерео-усилителя. Для использования всего этого богатства я разработал высокоуровневую библиотеку и демонстрационную программу (на C++11). В статье я хочу подробно описать как аппаратную, так и программную части этого проекта.
Кому этот проект может быть полезен? Наверное, только тем, кто захочет спаять эту плату сам, так как никакие варианты даже мелкосерийного производства я не рассматриваю. Это чисто хобби. На мой взгляд, плата покрывает достаточно широкий спектр задач, которые могут возникнуть в рамках небольших домашних поделок, использующих WiFi и звук.
https://habr.com/post/413101/?utm_sourc ... ign=413101Как известно, совместимость с инструментарием GNU и поддержка GDB делают практически любую популярную среду разработки пригодной для отладки широкого спектра встраиваемых платформ, чаще всего бесплатно и легально. В теории.
Съезжать с Микрочипа очень не хотелось. Однако после покупки компанией Атмела, сначала прикрыли, возможно, одно из самых перспективных семейств в портфолио компании — PIC32MM, а затем и всю линейку MIPS. Стало очевидно, что в обозримом будущем переход на ARM неизбежен, а т. к. Микрочип за два года так и не интегрировал поддержку атмеловских контроллеров в свою экосистему, никаких преимуществ «Оставайтесь с нами» не давало. Скорее наоборот — скорректированная вверх ценовая политика и традиционные организационные трудности слияния компаний сделали Атмеловские АРМы менее привлекательными. Одновременно подвернулся проект, об который PIC32MZ просто споткнулся. Критическая масса была набрана.
Почему STM: широкий охват рынка, бюджетная отладка, бесплатная полнофункциональная среда SW4STM32 на базе опенсорса, ну и политический аспект — ST Microelectronics поддерживается правительством Франции как стратегический ресурс, поэтому внезапный уход с рынка или поглощение, вроде бы, не грозят.
Код: Выделить всё
#include "stm32f0xx.h"
#include "lcd.h"
#define CS_LOW GPIOA->BSRR = GPIO_BSRR_BR_4 // Сбросили бит.
#define CS_HIGH GPIOA->BSRR = GPIO_BSRR_BS_4 // Установили бит.
uint8_t dataRele = 0;
uint8_t dataLCD = 0;
const char MENUTXT[2][20] =
{
{"\x50\x61\x63\xC1\xB8\x70\x65\xBD\xB8\x65\x20\xBE\x6F\x70\xBF\x6F\xB3"}, // Расширение портов
{"\xBE\x70\xB8\xB3\x65\xBF\x20\x50\x61\xE3\xB8\x6F\xBA\x6F\xBF\x20"} // привет Радиокот
};
void Configure_GPIO_SPI1(void);
void Configure_SPI1(void);
extern void SpiWriteData(uint16_t data16);
void SpiWriteData(uint16_t data16)
{
//отправляем данные
SPI1->DR = data16;
//ждём пока опустошится Tx буфер
while ((SPI1->SR & SPI_SR_BSY)==SPI_SR_BSY)
;
while ((SPI1->SR & SPI_SR_TXE)==0)
;
CS_HIGH;
delay_us(2);
CS_LOW;
}
int main(void)
{
Configure_GPIO_SPI1();
Configure_SPI1();
LCD_SetUp();
LCD_Init(2, 20);
LCD_Clear();
LCD_DisplayString(MENUTXT[0]);
LCD_GoToLine(1);
LCD_DisplayString(MENUTXT[1]);
while (1)
{
}
}
__INLINE void Configure_GPIO_SPI1(void)
{
/* Enable the peripheral clock of GPIOA */
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
/* (1) Select AF mode (10) on PA7, PA5 */
/* (2) AF0 for SPI1 signals */
GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER5 | GPIO_MODER_MODER7)) | (GPIO_MODER_MODER5_1 | GPIO_MODER_MODER7_1); /* (1) */
GPIOA->AFR[0] = (GPIOA->AFR[0] & ~(GPIO_AFRL_AFRL5 | GPIO_AFRL_AFRL7)); /* (2) */
GPIOA->MODER |= (GPIO_MODER_MODER4_0); // make bits PA4 an output
}
__INLINE void Configure_SPI1(void)
{
/* Enable the peripheral clock SPI1 */
RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;
/* Configure SPI1 in master */
/* (1) Master selection, BR: Fpclk/256 (due SPI_CLK is set to the minimum)
CPOL and CPHA at zero (rising first edge) */
/* (2) Master enabled, 16-bit */
/* (3) Enable SPI1 */
SPI1->CR1 = SPI_CR1_MSTR | SPI_CR1_BR | SPI_CR1_SSM; /* (1) */
SPI1->CR2 = SPI_CR2_SSOE | SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0; /* (2) */
SPI1->CR1 |= SPI_CR1_SPE; /* (3) */
}