{"id":203,"date":"2017-11-22T23:45:05","date_gmt":"2017-11-22T22:45:05","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=203"},"modified":"2023-03-04T17:09:43","modified_gmt":"2023-03-04T16:09:43","slug":"02-button-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=203","title":{"rendered":"02-Button-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=196\" title=\"01-LED-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 01-LED-Library (STM32F4)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=205\" title=\"03-DigOut-Library (STM32F4)\">03-DigOut-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Auf dem Discovery Board gibt es einen Button der vom User benutzt werden kann.<br \/>\nMit dieser Library kann der Status vom Button abgefragt werden.<\/p>\n<p>Durch erweitern der Tabelle im C-File k\u00f6nnen auch mehrere Buttons abgefragt werden.<\/p>\n<p>Ab der Version 1.1 kann im H-File eingestellt werden ob auch die entprellten Funktionen per Timer benutzt werden sollen. Dann k\u00f6nnen die Funktionen \u201cOnPressed\u201d , \u201cOnClick\u201d und \u201cOnReleased\u201d benutzt werden.<\/p>\n<p>Diese Funktionen liefern ein \u201ctrue\u201d wenn das Ereignis eingetreten ist.<\/p>\n<pre lang=\"c\" line=\"1\">User-Button an PA0<\/pre>\n<p><strong>Voraussetzungen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Benutzte Module der CooCox-IDE : GPIO, (TIM, MISC)\r\nBenutzte Librarys : keine<\/pre>\n<p><strong>Enumerationen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum  {\r\n  BTN_USER = 0    \/\/ BTN1 auf dem STM32F4-Discovery\r\n}BUTTON_NAME_t;<\/pre>\n<p><strong>:<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  BTN_RELEASED = 0,  \/\/ Button losgelassen\r\n  BTN_PRESSED        \/\/ Button gedrueckt\r\n}BUTTON_STATUS_t;<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_Button_Init(void);                               \/\/ zum init der Buttons\r\nBUTTON_STATUS_t UB_Button_Read(BUTTON_NAME_t btn_name);  \/\/ um einen Button auszulesen (nicht entprellt)\r\nbool UB_Button_OnPressed(BUTTON_NAME_t btn_name);        \/\/ true, wenn der Button bet\u00e4tigt ist (entprellt)\r\nbool UB_Button_OnClick(BUTTON_NAME_t btn_name);          \/\/ true, beim dr\u00fccken vom Button (entprellt)\r\nbool UB_Button_OnRelease(BUTTON_NAME_t btn_name);        \/\/ true, beim loslassen vom Button (entprellt)<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 07.10.2013\r\n\/\/ Version  : 1.1\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 Button-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_button.h\"\r\n#include \"stm32_ub_led.h\"\r\n\r\nint main(void)\r\n{\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  UB_Button_Init(); \/\/ Init der Buttons\r\n  UB_Led_Init();    \/\/ Init der LEDs\r\n\r\n  UB_Led_On(LED_GREEN); \/\/ gruene LED einschalten\r\n\r\n  while(1)\r\n  {\r\n    \/\/ Test ob Button gedr\u00fcckt ist\r\n    if(UB_Button_Read(BTN_USER)==BTN_PRESSED) {\r\n      UB_Led_On(LED_RED);  \/\/ rote LED einschalten\r\n    }\r\n    else {\r\n      UB_Led_Off(LED_RED); \/\/ rote LED ausschalten\r\n    }\r\n\r\n    \/\/ Test auf OnClick vom Button\r\n    if(UB_Button_OnClick(BTN_USER)==true) {\r\n      UB_Led_Toggle(LED_BLUE); \/\/ blaue LED toggeln\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p><strong>Beschreibung :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Funktion :\r\n-gr\u00fcne LED wird dauerhaft eingeschaltet\r\n-rote leuchtet, solange der Button gedr\u00fcckt ist\r\n-blaue LED toggelt jedesmal, wenn der Button bet\u00e4tigt wurde\r\n\r\nLibrarys die f\u00fcr das Beispiel benutzt werden :\r\n-stm32_ub_button\r\n-stm32_ub_led<\/pre>\n<p><strong>Library um eigene Buttons erweitern :<\/strong><\/p>\n<p>Falls noch mehr Buttons benutzt werden sollen, dann muss folgendes gemacht werden :<\/p>\n<p>1. Im H-File m\u00fcssen alle Buttons in der Enumeration \u201cBUTTON_NAME_t\u201d aufgelistet werden und die Anzahl im Define \u201cBUTTON_ANZ\u201d muss entsprechend angepasst werden.<\/p>\n<p>2. Im C-File m\u00fcssen in der Struktur \u201cBUTTON_t\u201d alleButtons eingetragen und den entsprechenen Ports und Port-Pins zugewiesen werden.<\/p>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/10\/ub_stm32f4_button_v101.zip\">ub_stm32f4_button_v101<\/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\/10\/Demo_02_Button.zip\">Demo_02_Button<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Auf dem Discovery Board gibt es einen Button der vom User benutzt werden kann. Mit dieser Library kann der Status vom Button abgefragt werden. Durch erweitern der Tabelle im C-File k\u00f6nnen auch mehrere Buttons abgefragt werden. Ab der Version 1.1 &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=203\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":2,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[91,9,7],"class_list":["post-203","page","type-page","status-publish","hentry","category-stm32f4","tag-button","tag-library","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/203","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=203"}],"version-history":[{"count":4,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/203\/revisions"}],"predecessor-version":[{"id":3650,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/203\/revisions\/3650"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/pages\/144"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=203"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}