This is a very simple guide, reviewing the steps required to get Blinky working on an Mbed OS platform.

Dependencies:   RemoteIR

main.cpp

Committer:
sb8718
Date:
2020-04-07
Revision:
109:5274dd9bebe1
Parent:
108:0fd7ff91ac95
Child:
110:6a67af628913

File content as of revision 109:5274dd9bebe1:

#include "mbed.h"

void led2_init(void);
void button_init(void);
uint32_t button_input(void);
void led2_toggle(void);

bool isOn;

int main() {
    int interval = 500;
    uint32_t val;

    led2_init();
    button_init();

    

    // led on
    

    while(true) {
        
        
        val = button_input();
        
        if(val == 0) {
            interval = interval <<1;
            if(interval > 2000)
                interval = 500;
        }
//
        led2_toggle();
//
        ThisThread::sleep_for(interval);
    }
}
void led2_init(void) {
    __HAL_RCC_GPIOA_CLK_ENABLE();
    GPIOA->MODER &= ~(0b11<< (5 * 2)); // reset PA5 mode
    GPIOA->MODER |= 0b01<< (5 * 2); // 01 - write mode
    isOn = true;
}


void led2_toggle(void){
    
    if(isOn) {
        
        GPIOA->BSRR &= ~(0b1 << 5); //set 0 on PA_5_5
        GPIOA->BSRR |= 0b1<< (5 + 16); // set 1 on PA5_21
        
    } else {
        
        GPIOA->BSRR |= 0b1 << 5; // set 1 on PA5_5
        GPIOA->BSRR &= ~(0b1 << (5 + 16)); // set 0 on PA5_21
    }
    isOn = !isOn;
}


void button_init(void) {
    __HAL_RCC_GPIOC_CLK_ENABLE();
    GPIOC->MODER &= ~(0b11<< (13 * 2)); // reset PC13 mode
    GPIOC->MODER |= 0b00<< (13 * 2); // 01 - read mode
}
uint32_t button_input(void) {
    
    uint32_t val;
    
    val = GPIOC->IDR & (0b1<<13);
    
    return val;
}