Первое, из-за чего возникло желание более подробно разобраться с flash-памятью, явилось то, что в своих проектах хотелось иметь энергонезависимую память, но к сожалению серия микроконтроллеров STM32f1xx не имеет встроенной eeprom. Во вторых, без знания работы flash было бы проблематично написать собственный bootloader.

Кроме, собственно, встроенной flash-памяти, я также немного расскажу и о оперативной памяти. Как обычно, основным источником для статьи является родное руководство от компании STMicroelectronics (Reference Manual), а также обобщенная информация из различных форумов и статей в интернете, ну и на основе своего опыта.

Один из немаловажных аспектов работы CAN шины является обработка прерываний bxCan. Их не так уж и много, но при правильной их настройке и обработке мы сможем обеспечить максимальную работоспособность и высокую отказоустойчивость нашего устройства. Поэтому следует обратить наше внимание на то, как это сделать правильно - создать необходимый минимум.

Настройка таймингов работы CAN шины является одним из наиболее важных моментов в настройке bxCan. Если ошибиться, то устройство может оказаться полностью работоспособным в режиме отладки и отказаться работать при подключении к рабочей шине CAN.

Наверное больше всего возникает вопросов в том, что же это такое и как правильно эти тайминги настроить.

Микроконтроллеры серии STM32 обрабатывают входящие сообщения на уровне железа. И только те сообщения, которые прошли фильтр, попадают в почтовые ящике. Это  позволяет уменьшить нагрузку на процессор и не отвлекать его на лишнюю обработку прерываний.

Попробуем разобраться, как это происходит и вообще, что же такое почтовые ящики.

По реализации работы CAN протокола на МК STM32 публикаций в интернете достаточно много. Но довольно тяжело настроить готовый код под свое устройство, особенно если пытаемся это сделать впервые.

В рамках данной статьи я постараюсь максимально подробно разобрать программный код и подробно описать "подводные камни", с которыми может впервые столкнуться новичок.