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

Dependencies:   RemoteIR

Committer:
sb8718
Date:
Tue Apr 07 09:28:30 2020 +0000
Revision:
109:5274dd9bebe1
Parent:
108:0fd7ff91ac95
Child:
110:6a67af628913
lab1-6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sb8718 109:5274dd9bebe1 1 #include "mbed.h"
sb8718 109:5274dd9bebe1 2
sb8718 109:5274dd9bebe1 3 void led2_init(void);
sb8718 109:5274dd9bebe1 4 void button_init(void);
sb8718 109:5274dd9bebe1 5 uint32_t button_input(void);
sb8718 109:5274dd9bebe1 6 void led2_toggle(void);
sb8718 109:5274dd9bebe1 7
sb8718 109:5274dd9bebe1 8 bool isOn;
sb8718 109:5274dd9bebe1 9
sb8718 109:5274dd9bebe1 10 int main() {
sb8718 109:5274dd9bebe1 11 int interval = 500;
sb8718 109:5274dd9bebe1 12 uint32_t val;
sb8718 109:5274dd9bebe1 13
sb8718 109:5274dd9bebe1 14 led2_init();
sb8718 109:5274dd9bebe1 15 button_init();
sb8718 109:5274dd9bebe1 16
sb8718 109:5274dd9bebe1 17
sb8718 109:5274dd9bebe1 18
sb8718 109:5274dd9bebe1 19 // led on
sb8718 109:5274dd9bebe1 20
mbed_official 82:abf1b1785bd7 21
sb8718 109:5274dd9bebe1 22 while(true) {
sb8718 109:5274dd9bebe1 23
sb8718 109:5274dd9bebe1 24
sb8718 109:5274dd9bebe1 25 val = button_input();
sb8718 109:5274dd9bebe1 26
sb8718 109:5274dd9bebe1 27 if(val == 0) {
sb8718 109:5274dd9bebe1 28 interval = interval <<1;
sb8718 109:5274dd9bebe1 29 if(interval > 2000)
sb8718 109:5274dd9bebe1 30 interval = 500;
sb8718 109:5274dd9bebe1 31 }
sb8718 109:5274dd9bebe1 32 //
sb8718 109:5274dd9bebe1 33 led2_toggle();
sb8718 109:5274dd9bebe1 34 //
sb8718 109:5274dd9bebe1 35 ThisThread::sleep_for(interval);
sb8718 109:5274dd9bebe1 36 }
sb8718 109:5274dd9bebe1 37 }
sb8718 109:5274dd9bebe1 38 void led2_init(void) {
sb8718 109:5274dd9bebe1 39 __HAL_RCC_GPIOA_CLK_ENABLE();
sb8718 109:5274dd9bebe1 40 GPIOA->MODER &= ~(0b11<< (5 * 2)); // reset PA5 mode
sb8718 109:5274dd9bebe1 41 GPIOA->MODER |= 0b01<< (5 * 2); // 01 - write mode
sb8718 109:5274dd9bebe1 42 isOn = true;
sb8718 109:5274dd9bebe1 43 }
Jonathan Austin 0:2757d7abb7d9 44
Jonathan Austin 0:2757d7abb7d9 45
sb8718 109:5274dd9bebe1 46 void led2_toggle(void){
sb8718 107:ba39981af538 47
sb8718 109:5274dd9bebe1 48 if(isOn) {
sb8718 109:5274dd9bebe1 49
sb8718 109:5274dd9bebe1 50 GPIOA->BSRR &= ~(0b1 << 5); //set 0 on PA_5_5
sb8718 109:5274dd9bebe1 51 GPIOA->BSRR |= 0b1<< (5 + 16); // set 1 on PA5_21
sb8718 109:5274dd9bebe1 52
sb8718 109:5274dd9bebe1 53 } else {
sb8718 108:0fd7ff91ac95 54
sb8718 109:5274dd9bebe1 55 GPIOA->BSRR |= 0b1 << 5; // set 1 on PA5_5
sb8718 109:5274dd9bebe1 56 GPIOA->BSRR &= ~(0b1 << (5 + 16)); // set 0 on PA5_21
Jonathan Austin 0:2757d7abb7d9 57 }
sb8718 109:5274dd9bebe1 58 isOn = !isOn;
Jonathan Austin 0:2757d7abb7d9 59 }
sb8718 109:5274dd9bebe1 60
sb8718 109:5274dd9bebe1 61
sb8718 109:5274dd9bebe1 62 void button_init(void) {
sb8718 109:5274dd9bebe1 63 __HAL_RCC_GPIOC_CLK_ENABLE();
sb8718 109:5274dd9bebe1 64 GPIOC->MODER &= ~(0b11<< (13 * 2)); // reset PC13 mode
sb8718 109:5274dd9bebe1 65 GPIOC->MODER |= 0b00<< (13 * 2); // 01 - read mode
sb8718 109:5274dd9bebe1 66 }
sb8718 109:5274dd9bebe1 67 uint32_t button_input(void) {
sb8718 109:5274dd9bebe1 68
sb8718 109:5274dd9bebe1 69 uint32_t val;
sb8718 109:5274dd9bebe1 70
sb8718 109:5274dd9bebe1 71 val = GPIOC->IDR & (0b1<<13);
sb8718 109:5274dd9bebe1 72
sb8718 109:5274dd9bebe1 73 return val;
sb8718 109:5274dd9bebe1 74 }