{"id":221,"date":"2017-11-22T23:58:36","date_gmt":"2017-11-22T22:58:36","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=221"},"modified":"2023-03-04T17:19:32","modified_gmt":"2023-03-04T16:19:32","slug":"11-rng-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/11-rng-library-stm32f4\/","title":{"rendered":"11-RNG-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\/10-systick-library-stm32f4\/\" title=\"10-Systick-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 10-Systick-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\/12-uart-library-stm32f4\/\" title=\"12-UART-Library (STM32F4)\">12-UART-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>-mit dieser Library k\u00f6nnen Zufallszahlen erzeugt werden. Dazu wird das RNG-Modul der CPU benutzt.<\/p>\n<p>-der Funktion zum erzeugen der Zufallszahl kann ein Wertebereich \u00fcbergeben werden damit z.B. eine Zahl zwischen 50 und 100 ermittelt wird.<\/p>\n<p><strong>Beispielbild :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/03\/rng.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-665\" src=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/03\/rng-179x300.jpg\" alt=\"rng\" width=\"179\" height=\"300\" \/><\/a><\/p>\n<p><strong><strong>Voraussetzungen :<\/strong><\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Benutzte Module der CooCox-IDE : RNG\r\nBenutzte Librarys : keine<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_Rng_Init(void);                                         \/\/ zum init des RNG-Moduls\r\nuint32_t UB_Rng_makeZufall(uint32_t minwert, uint32_t maxwert); \/\/ zum erzeugen einer Zufallszahl zwischen min und max<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 23.02.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 RNG-Library (Zufallszahlen)\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_led.h\"\r\n#include \"stm32_ub_rng.h\"\r\n\r\nvoid Delay(volatile uint32_t nCount)\r\n{\r\n  while(nCount--)\r\n  {\r\n  }\r\n}\r\n\r\nint main(void)\r\n{\r\n  uint32_t zufall;\r\n  uint32_t n;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  UB_Rng_Init(); \/\/ Init der Zufallszahlen\r\n  UB_Led_Init(); \/\/ Init der LEDs\r\n\r\n  while(1)\r\n  {\r\n    \/\/ sucht eine Zufallszahl zwischen 3 und 8\r\n    zufall=UB_Rng_makeZufall(3,8);\r\n    \/\/ l\u00e4sst die LED entsprechen oft blinken\r\n    for(n=0;n&lt;zufall;n++) {\r\n      UB_Led_On(LED_GREEN);\r\n      Delay(2500000);\r\n      UB_Led_Off(LED_GREEN);\r\n      Delay(5000000);\r\n    }\r\n    Delay(10000000);\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/02\/ub_stm32f4_rng_v100.zip\">ub_stm32f4_rng_v100<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/02\/Demo_11_RNG.zip\">Demo_11_RNG<\/a><\/p>\n<h3 id=\"comments-title\">6 Antworten auf <em>11-RNG-Library (STM32F4)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-2278\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-2278\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/fdc13536c4a3c5418b547054429ec31b?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\">Chaoskind<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">8. Oktober 2014 um 16:55<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>MoinMoin,<\/p>\n<p>ich versuche grad, deine RNG-lib zu benutzen, laufe dabei aber laufend in ein Problem rein. An und f\u00fcr sich l\u00e4uft alles wie es soll, jedoch werden in gef\u00fchlten drei von f\u00fcnf F\u00e4llen die Grenzen nicht beachtet, er gibt mir statt dessen 4.2949673E9 (maxwert f\u00fcr ein uint32???) aus.<\/p>\n<p>In meiner main f\u00fchre ich UB_Rng_Init(); aus, um dann in meiner Funktion eine Variable mittels Wind = UB_Rng_makeZufall(0, 200) \u2013 100; auf eine Zufallszahl zwischen -100\u2026100 zu setzen. Meistens schafft er einen Durchlauf, manchmal auch zwei-drei w\u00e4hrend der er mir Werte innerhalb der Grenzen ausgibt. Danach gibt er dann den oben erw\u00e4hnten Wert aus und bleibt h\u00e4ngen. Ab und an gibt er auch direkt als erstes den Wert aus und bleibt h\u00e4ngen. Ich hab jetzt schon ein paar mal versucht, alles einzeln durchzusteppen im Debugmodus, um einzugrenzen wo der Fehler auftritt, jedoch trat er so bisher nicht auf???<\/p>\n<p>F\u00e4llt dir dazu irgendein hilfreicher Tip ein?<\/p>\n<p>MfG Chaos<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-2279\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-2279\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/fdc13536c4a3c5418b547054429ec31b?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\">Chaoskind<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">8. Oktober 2014 um 19:10<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Ich konnte den Fehler nun etwas eingrenzen. In der ub_rng l\u00e4uft alles richtig, bis zum return(ret_wert); ist die Zahl innerhalb der Grenzen, aber nach dem Return steht meine Variable Wind dann auf den omin\u00f6sen 4.2949673E9<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-2280\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-2280\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/fdc13536c4a3c5418b547054429ec31b?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\">Chaoskind<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">8. Oktober 2014 um 20:23<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Fehler gefunden, es muss statt \u201cWind = UB_Rng_makeZufall(0, 200) \u2013 100;\u201d \u201cWind = UB_Rng_makeZufall(0, 200) \u2013 100.0;\u201d hei\u00dfen.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-2285\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-2285\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/af5be9fa3f95b3ec9c424ed130b7f2d3?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\">Cortex-Einsteiger<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">9. Oktober 2014 um 08:06<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Bist du dir sicher? Na Hauptsache es funktioniert.<\/p>\n<p>Du hast geschrieben, deine Variable \u201cWind\u201d ist vom Typ uint32, also unsigned.<br \/>\nWas passiert nun bei deinem Zufallsgenerator (0 bis 200) wenn eine Zahl kleiner 100 raus kommt und du dann noch -100 rechnest?<br \/>\nKommt mir komisch vor. Das w\u00fcrde dein extrem hohen Ausgabewert erk\u00e4ren, fast max. von 32 Bit.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<li id=\"li-comment-2299\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-2299\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/fdc13536c4a3c5418b547054429ec31b?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\">Chaoskind<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">9. Oktober 2014 um 18:53<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Nein nicht sicher <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_biggrin.gif\" alt=\":D\" \/> , der Fhellertuefle (Fehlerteufel) hat sich eingeschlichen.<br \/>\nDa fehlt noch der typecast, richtig muss es hei\u00dfen:<br \/>\n\u201c\u201cWind = (float)UB_Rng_makeZufall(0, 200) \u2013 100.0;\u201d<br \/>\ndann klappts auch mit zuf\u00e4lligem Wind <img decoding=\"async\" class=\"wp-smiley\" src=\"wp-includes\/images\/smilies\/icon_wink.gif\" alt=\";-)\" \/><\/p>\n<p>MfG Chaos<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2300\" class=\"comment byuser comment-author-admin_ub bypostauthor odd alt depth-2\">\n<div id=\"comment-2300\">\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\">9. Oktober 2014 um 19:04<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>\u201cfloat\u201d ist an der Stelle aber etwas overkill ein cast auf \u201cint16_t\u201d w\u00fcrde es genauso tun.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>-mit dieser Library k\u00f6nnen Zufallszahlen erzeugt werden. Dazu wird das RNG-Modul der CPU benutzt. -der Funktion zum erzeugen der Zufallszahl kann ein Wertebereich \u00fcbergeben werden damit z.B. eine Zahl zwischen 50 und 100 ermittelt wird. Beispielbild : Voraussetzungen : Benutzte &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/11-rng-library-stm32f4\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":11,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[9,146,7],"class_list":["post-221","page","type-page","status-publish","hentry","category-stm32f4","tag-library","tag-rng","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/221","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=221"}],"version-history":[{"count":5,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/221\/revisions"}],"predecessor-version":[{"id":3660,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/221\/revisions\/3660"}],"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=221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}