{"id":423,"date":"2017-11-24T23:15:53","date_gmt":"2017-11-24T22:15:53","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=423"},"modified":"2018-01-04T19:20:56","modified_gmt":"2018-01-04T18:20:56","slug":"48-usb_hid-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/48-usb_hid-library-stm32f4\/","title":{"rendered":"48-USB_HID-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/47-mp45dt02-library-stm32f4\/\" title=\"47-MP45DT02-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 47-MP45DT02-Library (STM32F4)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/49-inputcapture_frq-library-stm32f4\/\" title=\"49-InputCapture_Frq-Library (STM32F4)\">49-InputCapture_Frq-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Mit dieser Library meldet sich die CPU (per USB) am PC als HID-Device an.<\/p>\n<p>Zum Datenaustausch zwischen dem PC und der CPU ist kein spezieller Treiber notwendig (der ist bei Windows schon dabei)<\/p>\n<p>Es wird der Interrupt-Mode benutzt, der PC fragt also zyklisch die CPU nach Daten ab. Die Geschwindigkeit (von 1ms bis 255ms) kann im H-File eingestellt werden.<\/p>\n<p>Die Gr\u00f6\u00dfe vom sende und empfangs Puffer (der pro Zeiteinheit \u00fcbertragen wird) kann auch im H-File eingestellt werden. Hier sind Werte von 1Byte bis 64Bytes m\u00f6glich.<\/p>\n<p>Die Einstellung 64Bytes pro Block und eine Abfragerate von 1ms ergibt 64kByte\/sec . Das entspricht dem Maximum Wert f\u00fcr USB-FullSpeed.<\/p>\n<p>Die VID und PID steht auch in einem H-File genauso die Beschreibung Strings f\u00fcr das Device (\u201cSTM32 HID-Device\u201d) mit der Ser.Nr. 0\u00d70100<\/p>\n<p>Auf der PC-Seite gibt es fertige Programme (z.B. von STM den USB HID-Demonstrator) oder, was ich auch benutzt habe das \u201cSimple HID-Write\u201d von dieser Seite :<br \/>\n<a href=\"http:\/\/www.lvr.com\/hidpage.htm\">http:\/\/www.lvr.com\/hidpage.htm<\/a><\/p>\n<p>Ich habe f\u00fcr die PC-Seite ein mini HID-Terminal geschrieben der auf der USB-DLL von Silicon-Labs aufbaut. Um die Library zu testen reicht es, man kann Daten senden und empfangen.<\/p>\n<p>Die Funktionen der Library sind identisch mit der von USB-CDC. Es gibt eine Funktion zum initialisieren, eine zum abfragen vom USB-Status und je eine Funktion zum senden und empfangen von Daten. Es werden hier aber keine Strings \u00fcbertragen sondern ein Array von Bytes.<\/p>\n<p>Im Demo wird nach dem empfang von Daten der Block als Echo wieder zur\u00fcckgesendet.<br \/>\nDer PC muss auf der Report-ID Nr. 0\u00d700 senden und empfangen wird auch \u00fcber 0\u00d700.<\/p>\n<p>Es wird ein USB-Kabel mit Micro-USB-Stecker ben\u00f6tigt. (gibts bei EBay oder Amazon)<\/p>\n<p><em>Hinweis : im File \u201cusbd_hid_core.c\u201d wird beim compilieren in der Funktion \u201cUSBD_HID_DataOut\u201d eine Warning angezeigt. Ich habe leider keinen Workaround daf\u00fcr gefunden\u2026vlt. kennt sich jemand besser damit aus und kann sich hier melden.<\/em><\/p>\n<p><strong>Beispielbild :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/usb_hid.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2000\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/usb_hid-300x279.jpg\" alt=\"usb_hid\" width=\"300\" height=\"279\" \/><\/a><\/p>\n<p><strong>Benutzte Pins :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">PA8   -&gt; USB_OTG_SOF (wird nicht benutzt)\r\nPA9   -&gt; USB_OTG_VBUS\r\nPA10  -&gt; USB_OTG_ID\r\nPA11  -&gt; USB_OTG_DM\r\nPA12  -&gt; USB_OTG_DP<\/pre>\n<p><strong>Voraussetzungen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Benutzte Module der CooCox-IDE : GPIO, MISC\r\nBenutzte Librarys : keine<\/pre>\n<p><strong>Enumerationen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  USB_HID_NO_INIT =0, \/\/ USB-Schnittstelle noch nicht initialisiert\r\n  USB_HID_DETACHED,   \/\/ USB-Verbindung getrennt\r\n  USB_HID_CONNECTED   \/\/ USB-Verbindung hergestellt\r\n}USB_HID_STATUS_t;<\/pre>\n<p><strong>:<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  RX_USB_ERR =0, \/\/ keine USB Verbindung\r\n  RX_EMPTY,      \/\/ nichts empfangen\r\n  RX_READY       \/\/ es steht was im Empfangspuffer\r\n}USB_HID_RXSTATUS_t;<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_USB_HID_Init(void);                                 \/\/ zum init der USB-Schnittstelle\r\nUSB_HID_STATUS_t UB_USB_HID_GetStatus(void);                \/\/ USB Status abpr\u00fcfen\r\nErrorStatus UB_USB_HID_SendData(uint8_t *ptr, uint8_t len); \/\/ zum senden von Daten per USB\r\nUSB_HID_RXSTATUS_t UB_USB_HID_ReceiveData(uint8_t *ptr);    \/\/ zum empfangen von Daten per USB<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 23.06.2013\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F4\r\n\/\/ IDE      : CooCox CoIDE 1.7.0\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der USB-HID-Library\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_usb_hid.h\"\r\n\r\nint main(void)\r\n{\r\n  uint8_t buf[HID_OUT_BUFFER_SIZE]; \/\/ puffer f\u00fcr Datenempfang\r\n  USB_HID_RXSTATUS_t check=RX_EMPTY;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ Init vom USB-OTG-Port als HID-Device\r\n  UB_USB_HID_Init();\r\n\r\n  while(1)\r\n  {\r\n    \/\/ Test ob USB-Verbindung zum PC besteht\r\n    if(UB_USB_HID_GetStatus()==USB_HID_CONNECTED) {\r\n      \/\/ Ceck ob Daten per USB empfangen wurden\r\n      check=UB_USB_HID_ReceiveData(buf);\r\n      if(check==RX_READY) {\r\n        \/\/ wenn Daten empfangen wurden\r\n        \/\/ als Echo wieder zur\u00fccksenden\r\n        UB_USB_HID_SendData(buf,HID_OUT_BUFFER_SIZE);\r\n      }\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/ub_stm32f4_usb_hid_v100.zip\">ub_stm32f4_usb_hid_v100<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/06\/Demo_48_USB_HID.zip\">Demo_48_USB_HID<\/a><\/p>\n<p>Hier der Link zu dem PC-Programm :<\/p>\n<p><a title=\"PC-Programme von mir\" href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=140\">PC-Programme<\/a><\/p>\n<h3 id=\"comments-title\">19 Antworten auf <em>48-USB_HID-Library (STM32F4)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-555\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-555\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/306c865b1604856e094a936a4183f88f?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Peter<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">25. Juni 2013 um 17:25<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo,<br \/>\ndanke f\u00fcr ein weiteres Demo!<\/p>\n<p>Zur Warning in USBD_HID_DataOut ein paar Infos:<br \/>\nder * bei *USB_HID_OUT_BUF in Zeile 345 macht keinen Sinn. Mit dem * \u00fcbergibst du das erste Zeichen des USB_HID_OUT_BUF als dessen Adresse. So kopiert USB_OTG_ReadPacket die Daten in\u2019s Nirvana. Wenn man den * weg l\u00e4sst, gibt es keine Warning, daf\u00fcr funktioniert das Demo nicht mehr. Kommentiert man die Zeile 345 aus, funktionert es wieder.<br \/>\nTiefer bin ich nicht eingestiegen.<\/p>\n<p>Das erfreulich ist, dass der Treiber hier nicht so \u2018zickt\u2019 wie beim CDC. Hier kann man einen Reset beim Discovery ausf\u00fchren, auch wenn das PC Programm noch Verbindung hat. Eine neue Verbindung kann dann ohne Neustart des PC Programms erfolgen.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-687\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-687\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a529f6d9b60be457442e15eb3be2dca2?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Hannes<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">16. Juli 2013 um 09:37<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo,<br \/>\nich habe vermutlich zeitgleich mit dir an einer USB HID L\u00f6sung gebastelt und bin leider erst jetzt auf deine tolle Seite und USB Lib gesto\u00dfen! Wirklich eine gute Arbeit.<br \/>\nDein Terminalprogramm ist auch spitze, hatte noch keine Probleme damit!!<br \/>\n(fr\u00fcher habe ich auch den SimpleHidWrite verwendet).<\/p>\n<p>Nun noch meine Fragen an dich:<br \/>\n&#8211; Ist es m\u00f6glich eine zus\u00e4tzliche Funktion bei dem Terminalprog einzubauen, dass die Bufferanzeige wahlweise als HEX oder ASCII dargestellt wird??<br \/>\n&#8211; Hast du bei deiner Suche zum USB HID eine L\u00f6sung oder Beispielprog gefunden wo der USB mit DMA arbeitet oder wei\u00dft du wie man die USB Lib von ST auf DMA umstellen kann?<\/p>\n<p>Vielen Dank!<br \/>\nSG Hannes<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-688\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-2\">\n<div id=\"comment-688\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">16. Juli 2013 um 18:32<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>kein Problem, ich kann das PC-Programm \u00e4ndern. USB und DMA hab ich noch nicht gesehen (hab aber auch nicht danach gesucht)<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-690\" class=\"comment odd alt depth-3\">\n<div id=\"comment-690\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a529f6d9b60be457442e15eb3be2dca2?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Hannes<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">17. Juli 2013 um 09:12<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Super, das w\u00e4re klasse! Vielen Dank im Voraus!<\/p>\n<p>Du hast Recht, habe bei der USB Lib teilweise DMA gelesen und bin davon ausgegangen das es funktionieren m\u00fcsste.<br \/>\nLeider gibt es diese Funktion aber nur f\u00fcr USB HS.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-693\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-4\">\n<div id=\"comment-693\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">17. Juli 2013 um 17:51<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>habe gerade die Version 1.1 hochgeladen, probier die mal aus und sag bescheid ob das so ok ist.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-696\" class=\"comment odd alt depth-5\">\n<div id=\"comment-696\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/a529f6d9b60be457442e15eb3be2dca2?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Hannes<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">19. Juli 2013 um 12:39<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Vielen Dank f\u00fcr die \u00c4nderung am Programm!<br \/>\nEs funktioniert einwandfrei!! <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_smile.gif\" alt=\":-)\" \/><\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-899\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-899\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/f2a486b023105076e21c93d5af7b0307?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">karl<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">23. Oktober 2013 um 09:42<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>hi,<br \/>\nich beziehe mich auf deine Aussage<br \/>\n\u201cDie Einstellung 64Bytes pro Block und eine Abfragerate von 1ms ergibt 64kByte\/sec. Das entspricht dem Maximum Wert f\u00fcr USB-FullSpeed.\u201d<\/p>\n<p>USB-Fullspeed hat doch eine Rate von 1500kByte\/sec.<\/p>\n<p>Gru\u00df<br \/>\nKarl<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-904\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-904\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">23. Oktober 2013 um 19:13<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Bei USB-HID wird der Interrupt-Transfer benutzt \u2026da ist bei 64kByte\/sec schluss. Im Bulk-Transfer (z.B. USB-CDC) geht es theoretisch bis 1,5MByte\/sec. (siehe WIKI)<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-1842\" class=\"comment even thread-odd thread-alt depth-1\">\n<div id=\"comment-1842\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/4b304519d78e86b03159e8332be9f2b8?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Karl^<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">6. Juni 2014 um 15:15<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>hi Uwe,<br \/>\nkannst du mir erkl\u00e4ren wieso du den Report Deskriptor so geschrieben hast!?<br \/>\n\/\/ USB HID Device Report Descriptor<br \/>\n\/\/\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013<br \/>\n__ALIGN_BEGIN static uint8_t CustomHID_ReportDescriptor[CUSTOMHID_SIZ_REPORT_DESC] __ALIGN_END =<br \/>\n{<br \/>\n0\u00d706, 0xFF, 0xFF,<br \/>\n0\u00d709, 0\u00d701,<br \/>\n0xA1, 0\u00d701,<\/p>\n<p>\/\/ IN (CPU \u2013&gt; PC)<br \/>\n0\u00d709, 0\u00d702,<br \/>\n0\u00d709, 0\u00d703,<br \/>\n0\u00d715, 0\u00d700,<br \/>\n0\u00d726, 0xff, 0\u00d700,<br \/>\n0\u00d775, 0\u00d708,<br \/>\n0\u00d795, HID_IN_BUFFER_SIZE,<br \/>\n0\u00d781, 0\u00d702,<\/p>\n<p>diese zwei Zeilen verstehe ich nicht so ganz<br \/>\n0\u00d709, 0\u00d702,<br \/>\n0\u00d709, 0\u00d703,<\/p>\n<p>und weiter bei der \u00dcbertragung vom PC zur CPU verwendest du<br \/>\n0\u00d709, 0\u00d704,<br \/>\n0\u00d709, 0\u00d705,<br \/>\nund Feature<br \/>\n0\u00d709, 0\u00d706,<br \/>\n0\u00d709, 0\u00d707,<\/p>\n<p>damit wird doch jedesmal ein Usage erzeugt und dann auch jedesmal ein anderes und diese hier ist eigentlich auch reserviert: 0\u00d709, 0\u00d703,<br \/>\nwieso? wozu?<\/p>\n<p>Ich will eigentlich nur eine HID-Verbindung zum Rechner haben und h\u00e4nge an diesen Report Deskriptor, da ich keine Standard-Verbindung, sprich Maus, Tastatur, etc. machen m\u00f6chte, sondern nur Daten als Interrupt-Transfer an den PC senden und diese dort mit eigener Software weiter verarbeiten. Wie m\u00fcsste dann der Report Deskriptor aussehen??<\/p>\n<p>Gr\u00fc\u00dfe<br \/>\nKarl<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1848\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-1848\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">7. Juni 2014 um 09:55<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>ich habe den Report-Descriptor von einem Atmel Beispiel \u00fcbernommen. Um ehrlich zu sein kenne ich mit USB zu wenig aus um da etwas \u201cfalsches\u201d zu erkennen.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-1901\" class=\"comment even depth-3\">\n<div id=\"comment-1901\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/4b304519d78e86b03159e8332be9f2b8?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Karl<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">23. Juni 2014 um 08:27<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>ok, danke. Ich werds mal ausprobieren.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-2382\" class=\"comment odd alt thread-even depth-1\">\n<div id=\"comment-2382\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/5fe3fef9caa9553cb4397b310199ab2f?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\"><a class=\"url\" href=\"http:\/\/keine\/\" rel=\"external nofollow\">OASH<\/a><\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">22. Oktober 2014 um 22:40<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hallo,<\/p>\n<p>Danke f\u00fcr diese Seiten und Informationen.<\/p>\n<p>Wo kann ich den Code des HID\u00dfTerminal Programme finden? Ich hab viel gesucht aber kein Code\u2026<\/p>\n<p>Danke<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2392\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-2\">\n<div id=\"comment-2392\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">25. Oktober 2014 um 09:32<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Wenn du mein PC-Programm \u201cHID-Terminal-UB\u201d meinst, davon gibt es keinen Quellcode hier. Werde ich auch nicht hochladen.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-2401\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-2401\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/5fe3fef9caa9553cb4397b310199ab2f?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\"><a class=\"url\" href=\"http:\/\/keine\/\" rel=\"external nofollow\">OASH<\/a><\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">26. Oktober 2014 um 17:06<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>warum?<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2405\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-2\">\n<div id=\"comment-2405\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">27. Oktober 2014 um 21:33<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>darum<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-4229\" class=\"comment odd alt thread-even depth-1\">\n<div id=\"comment-4229\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/ae41b7d6f73d0ce8d1a374d9f6589c91?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Helge<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">12. Oktober 2015 um 14:02<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Moin,<br \/>\nbin wirklich beeindruckt von deiner lib-Samlung!<br \/>\nK\u00f6nntest du mir sagen, ob der virtuelle COM-Port mit dem STM auch auf einem Linux system wie zB. ubuntu funktioniert ?<\/p>\n<p>Beste Gr\u00fc\u00dfe<br \/>\nHelge<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-4230\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-2\">\n<div id=\"comment-4230\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">12. Oktober 2015 um 17:40<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>falls du einen VCP-Treiber f\u00fcr Linux findest m\u00fcsste das funktionieren.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-4351\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-4351\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/8e23f4267882577f4991607879e16d77?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Alirio Oliveira<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">18. November 2015 um 23:46<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hello!<\/p>\n<p>You can send this lib in keil? I tried compile this on COIDE and got a lot erros, but i\u2019m not understand this IDE. new on STM32.<br \/>\nPlease help-me.<\/p>\n<p>Thankfull!<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-4359\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-2\">\n<div id=\"comment-4359\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">21. November 2015 um 11:32<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>i dont use KEIL, so i cant help.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Mit dieser Library meldet sich die CPU (per USB) am PC als HID-Device an. Zum Datenaustausch zwischen dem PC und der CPU ist kein spezieller Treiber notwendig (der ist bei Windows schon dabei) Es wird der Interrupt-Mode benutzt, der PC &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/48-usb_hid-library-stm32f4\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":48,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[157,9,7,95],"class_list":["post-423","page","type-page","status-publish","hentry","category-stm32f4","tag-hid","tag-library","tag-stm32f4","tag-usb"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/comments?post=423"}],"version-history":[{"count":4,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/423\/revisions"}],"predecessor-version":[{"id":1839,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/423\/revisions\/1839"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/144"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/media?parent=423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}