Beschreibung :
Auf dem Discovery Board gibt es einen (blauen) Button der vom User benutzt werden kann. Mit dieser Library kann der Status vom Button abgefragt werden.
Module :
1 | stm32_ub_button.h, stm32_ub_button.c |
Includes :
1 2 | #include "stm32_ub_system.h" #include "stdbool.h"; |
Enumerationen und Defines:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | //-------------------------------------------------------------- // Liste aller Buttons // (keine Nummer doppelt und von 0 beginnend) //-------------------------------------------------------------- typedef enum { BTN_USER = 0 // BTN auf dem STM32F746-Discovery }BUTTON_NAME_t; //-------------------------------------------------------------- // Status eines Buttons //-------------------------------------------------------------- typedef enum { BTN_RELEASED = 0, // Button losgelassen BTN_PRESSED // Button gedrueckt }BUTTON_STATUS_t; //-------------------------------------------------------------- // Struktur eines Buttons //-------------------------------------------------------------- typedef struct { BUTTON_NAME_t BUTTON_NAME; // Name GPIO_TypeDef* BUTTON_PORT; // Port const uint16_t BUTTON_PIN; // Pin const uint32_t BUTTON_R; // Widerstand uint8_t BUTTON_AKT; // Istwert uint32_t BUTTON_TIC; // Timerwert }BUTTON_t; //-------------------------------------------------------------- #define BUTTON_INTERVALL 50 // 50ms zum entprellen |
Funktionen :
1 2 3 4 5 | void UB_Button_Init(void); // zum init der Buttons BUTTON_STATUS_t UB_Button_Read(BUTTON_NAME_t btn_name); // um einen Button auszulesen (nicht entprellt) bool UB_Button_OnPressed(BUTTON_NAME_t btn_name); // true, wenn der Button betätigt ist (entprellt) bool UB_Button_OnClick(BUTTON_NAME_t btn_name); // true, beim drücken vom Button (entprellt) bool UB_Button_OnRelease(BUTTON_NAME_t btn_name); // true, beim loslassen vom Button (entprellt) |
Beispiel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | //-------------------------------------------------------------- // File : main.c // Datum : 12.07.2015 // Version : 1.0 // Autor : UB // EMail : mc-4u(@)t-online.de // Web : www.mikrocontroller-4u.de // CPU : STM32F746 // Board : STM32F746-Discovery-Board // IDE : OpenSTM32 // GCC : 4.9 2015q2 // Module : CubeHAL // Funktion : Hauptprogramm //-------------------------------------------------------------- #include "stm32_ub_system.h" #include "stm32_ub_led.h" #include "stm32_ub_button.h" int main(void) { // init vom System UB_System_Init(); // init der LED UB_Led_Init(); // init vom Button UB_Button_Init(); while(1) { HAL_Delay(100); // Test ob Button gedrückt ist if(UB_Button_Read(BTN_USER)==BTN_PRESSED) { UB_Led_On(LED_GREEN); // gruene LED einschalten } else { UB_Led_Off(LED_GREEN); // gruene LED ausschalten } } } |
Hier die Library zum Download :
02 = Button : f746_button_v100