CDC+MSC USB Composite Device на STM32 HAL

image


Мне хотелось бы верить, что хотя бы половина читателей может расшифровать хотя бы половину названия статьи 🙂 Кто не в курсе — поясню. Мое устройство должно реализовывать сразу две USB функции:

  • Mass Storage Device (он же Mass Storage Class — MSC). Я хочу, чтобы мой девайс прикидывался обычной флешкой и отдавал файлики с данными, которые лежат на SD карте.
  • Другая функция это виртуальный COM порт (он же в терминологии USB называется Communication Device Class — CDC). Через этот канал у меня идет всякий дебажный вывод, который удобно смотреть обычным терминалом.


В большинстве примеров по работе с USB реализуется только один тип устройства — флешка, мышка, кастомное HID устройство или виртуальный COM порт. А вот найти вменяемое объяснение как реализовать хотя бы две функции одновременно оказалось не так просто. В своей статье я хотел бы восполнить этот пробел.


Я буду описывать создание композитного USB устройства на базе микроконтроллера STM32, но сам подход будет также применим и для других микроконтроллеров. В статье я детально разберу каждый из классов по отдельности, так и принцип построения композитных устройств. Но обо все по порядку.


Итак, поехали!
Читать дальше →
CDC+MSC USB Composite Device на STM32 HAL
Source: habrahabr

Пост №3196315

Автор: killallhumans


ЯблочноеИ бонусная в комменах, искусители




Развернуть



{
«@context»: «http://schema.org»,
«@type»: «BlogPosting»,
«mainEntityOfPage»:{
«@type»:»WebPage»,
«@id»:»/post/3196315″
},
«headline»: «Яблочное / cynic mansion :: адам :: ева :: яблоко :: Эдем :: Смешные комиксы (веб-комиксы с юмором и их переводы)»,
«image»: {
«@type»: «ImageObject»,
«url»: «http://img0.joyreactor.cc/pics/post/full/cynic-mansion-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-%D0%B0%D0%B4%D0%B0%D0%BC-%D0%B5%D0%B2%D0%B0-3992396.png»,
«height»: 1752,
«width»: 306 },
«datePublished»: «2017-08-06T23:41:07+03:00»,
«dateModified»: «2017-08-06T23:41:07+03:00»,
«author»: {
«@type»: «Person»,
«name»: «killallhumans»
},
«publisher»: {
«@type»: «Organization»,
«name»: «JoyReactor.cc»,
«logo»: {
«@type»: «ImageObject»,
«url»: «http://joyreactor.cc/images/joyreactor_ie6.png»,
«width»: 207,
«height»: 54
}
},
«description»: «И бонусная в комменах, искусители»
}

Комментировать 
Пост №3196315
Source: Joyreactor

TDD React.js приложений

image

Hetzel edition of 20000 Lieues Sous les Mers


Заметка о том, насколько мы “реаниматоры” по части тестов (кто знаком с творчеством Говарда Филлипса Лавкрафта, тот поймет).


В продолжение темы тестирования и тестов, хотелось бы немного написать о нашем подходе, как он выглядит на наших Single Page Applications (SPA), написанных на React.js, как нам помогал в этом Test-Driven Development (TDD) и почему мы пришли к тому, что редукторы и API-сервисы покрывать тестами тоже нужно.


Сразу скажу, что если вы ожидаете тут увидеть jest, snapshot testing или storyshots, то сразу закрывайте эту заметку. Если вы ожидаете найти тут что-то из свежих библиотек или подходов, то тоже немедленно закрывайте. Ничего из названного мы не использовали. Возможно, в новый проект мы войдем с этими инструментами, а пока получилось так, как получилось.


К тому, как наши тесты выглядят сейчас, мы пришли сами, хотя многие из этих техник описаны на различных сайтах и форумах. Как дополнение, я приведу эти ссылки ниже.

Читать дальше →
TDD React.js приложений
Source: habrahabr

Пост №3196309

Автор: rominator

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3196309″ }, «headline»: «дети :: детдом», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D0%B4%D0%B5%D1%82%D0%B8-%D0%B4%D0%B5%D1%82%D0%B4%D0%BE%D0%BC-3992391.jpeg», «height»: 935, «width»: 1080 }, «datePublished»: «2017-08-06T23:31:29+03:00», «dateModified»: «2017-08-06T23:31:29+03:00», «author»: { «@type»: «Person», «name»: «rominator» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3196309
Source: Joyreactor

Пост №3196297

Автор: uni-snake

Хай-резы арта http://blizzard.reactor.cc/post/3189391Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»http://blizzard.reactor.cc/post/3196297″ }, «headline»: «Хай-резы арта http://blizzard. / Tracer :: Widowmaker :: Overwatch Ero :: Overwatch :: Blizzard (Blizzard Entertainment) :: Dandonfuga (Dandon-fuga) :: artist :: фэндомы», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/Blizzard-%D1%84%D1%8D%D0%BD%D0%B4%D0%BE%D0%BC%D1%8B-Overwatch-Ero-Overwatch-3992372.jpeg», «height»: 4961, «width»: 3482 }, «datePublished»: «2017-08-06T23:14:03+03:00», «dateModified»: «2017-08-06T23:14:03+03:00», «author»: { «@type»: «Person», «name»: «uni-snake» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «reactor.cc/post/3189391» }
Комментировать 
Пост №3196297
Source: Joyreactor

Пост №3196282

Автор: LYVrus

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3196282″ }, «headline»: «Gudim :: загар :: полотенце :: Смешные комиксы (веб-комиксы с юмором и их переводы)», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/Gudim-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-%D0%BF%D0%BE%D0%BB%D0%BE%D1%82%D0%B5%D0%BD%D1%86%D0%B5-%D0%B7%D0%B0%D0%B3%D0%B0%D1%80-3992321.jpeg», «height»: 540, «width»: 720 }, «datePublished»: «2017-08-06T23:01:15+03:00», «dateModified»: «2017-08-06T23:01:15+03:00», «author»: { «@type»: «Person», «name»: «LYVrus» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3196282
Source: Joyreactor

Пост №3196281

Автор: JetCat







Развернуть



{
«@context»: «http://schema.org»,
«@type»: «BlogPosting»,
«mainEntityOfPage»:{
«@type»:»WebPage»,
«@id»:»/post/3196281″
},
«headline»: «обнимашки :: котэ (прикольные картинки с кошками)»,
«image»: {
«@type»: «ImageObject»,
«url»: «http://img0.joyreactor.cc/pics/post/full/%D0%BA%D0%BE%D1%82%D1%8D-%D0%BE%D0%B1%D0%BD%D0%B8%D0%BC%D0%B0%D1%88%D0%BA%D0%B8-3992320.jpeg»,
«height»: 450,
«width»: 600 },
«datePublished»: «2017-08-06T23:01:06+03:00»,
«dateModified»: «2017-08-06T23:01:06+03:00»,
«author»: {
«@type»: «Person»,
«name»: «JetCat»
},
«publisher»: {
«@type»: «Organization»,
«name»: «JoyReactor.cc»,
«logo»: {
«@type»: «ImageObject»,
«url»: «http://joyreactor.cc/images/joyreactor_ie6.png»,
«width»: 207,
«height»: 54
}
},
«description»: «»
}

Комментировать 
Пост №3196281
Source: Joyreactor

Пост №3196274

Автор: Mr.Exclusive

ссылка на гифкуredditРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3196274″ }, «headline»: «Сиськи :: эротические гифки (gif эротика) :: Эротика (красивые фото обнаженных, совсем голых девушек, арт-ню)», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D1%8D%D1%80%D0%BE%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5-%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-%D0%AD%D1%80%D0%BE%D1%82%D0%B8%D0%BA%D0%B0-%D0%A1%D0%B8%D1%81%D1%8C%D0%BA%D0%B8-3992313.gif», «height»: 404, «width»: 720 }, «datePublished»: «2017-08-06T22:51:22+03:00», «dateModified»: «2017-08-06T22:51:22+03:00», «author»: { «@type»: «Person», «name»: «Mr.Exclusive» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «reddit» }
Комментировать 
Пост №3196274
Source: Joyreactor

[Из песочницы] Пишем ИИ для Виндиниума на одноплатных компьютерах. Часть 1: подбор кандидатов

Иногда возникает желание отвлечься от мирской суеты и заняться чем-нибудь интересным. В моем случае это был Виндиниум — соревнование ИИ, в котором четыре рыцаря сражаются за славу, богатство и яства.


И приготовим себе задачу — попасть в таблицу лидеров. Однако задача будет решаться еще интереснее, если поставим жесткое ограничение — ресурсы искусственный интеллект будет черпать не от нашего, несомненно, мощного компьютера, а от одноплатника на архитектуре ARM! Заодно получим не только опыт работы с портативными устройствами, но и возможность держать бота включенным 24/7 без какого-либо ущерба для основного компьютера!


Приступим! Читать дальше →
[Из песочницы] Пишем ИИ для Виндиниума на одноплатных компьютерах. Часть 1: подбор кандидатов
Source: geektimes

Пост №3196234

Автор: Циркуль

ссылка на гифкуРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3196234″ }, «headline»: «гифка :: что то пошло не так :: котэ (прикольные картинки с кошками)», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D0%BA%D0%BE%D1%82%D1%8D-%D0%B3%D0%B8%D1%84%D0%BA%D0%B0-%D1%87%D1%82%D0%BE-%D1%82%D0%BE-%D0%BF%D0%BE%D1%88%D0%BB%D0%BE-%D0%BD%D0%B5-%D1%82%D0%B0%D0%BA-3992263.gif», «height»: 344, «width»: 195 }, «datePublished»: «2017-08-06T22:02:41+03:00», «dateModified»: «2017-08-06T22:02:41+03:00», «author»: { «@type»: «Person», «name»: «Циркуль» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3196234
Source: Joyreactor