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:33:40 2020 +0000
Revision:
110:6a67af628913
Parent:
109:5274dd9bebe1
Child:
111:15fa6baff793
lab1-6 (Better)

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 int main() {
sb8718 109:5274dd9bebe1 9 int interval = 500;
sb8718 109:5274dd9bebe1 10 uint32_t val;
sb8718 109:5274dd9bebe1 11
sb8718 109:5274dd9bebe1 12 led2_init();
sb8718 109:5274dd9bebe1 13 button_init();
sb8718 109:5274dd9bebe1 14
sb8718 109:5274dd9bebe1 15 while(true) {
sb8718 109:5274dd9bebe1 16
sb8718 109:5274dd9bebe1 17 val = button_input();
sb8718 109:5274dd9bebe1 18
sb8718 109:5274dd9bebe1 19 if(val == 0) {
sb8718 109:5274dd9bebe1 20 interval = interval <<1;
sb8718 109:5274dd9bebe1 21 if(interval > 2000)
sb8718 109:5274dd9bebe1 22 interval = 500;
sb8718 109:5274dd9bebe1 23 }
sb8718 109:5274dd9bebe1 24 led2_toggle();
sb8718 109:5274dd9bebe1 25 ThisThread::sleep_for(interval);
sb8718 109:5274dd9bebe1 26 }
sb8718 109:5274dd9bebe1 27 }
sb8718 109:5274dd9bebe1 28 void led2_init(void) {
sb8718 109:5274dd9bebe1 29 __HAL_RCC_GPIOA_CLK_ENABLE();
sb8718 109:5274dd9bebe1 30 GPIOA->MODER &= ~(0b11<< (5 * 2)); // reset PA5 mode
sb8718 109:5274dd9bebe1 31 GPIOA->MODER |= 0b01<< (5 * 2); // 01 - write mode
sb8718 109:5274dd9bebe1 32 }
Jonathan Austin 0:2757d7abb7d9 33
Jonathan Austin 0:2757d7abb7d9 34
sb8718 109:5274dd9bebe1 35 void led2_toggle(void){
sb8718 107:ba39981af538 36
sb8718 110:6a67af628913 37 uint32_t isOn;
sb8718 110:6a67af628913 38
sb8718 110:6a67af628913 39 isOn = GPIOA->IDR & (0b1 << 5); //recent write value
sb8718 110:6a67af628913 40
sb8718 110:6a67af628913 41 if(isOn > 0) {
sb8718 109:5274dd9bebe1 42
sb8718 109:5274dd9bebe1 43 GPIOA->BSRR &= ~(0b1 << 5); //set 0 on PA_5_5
sb8718 109:5274dd9bebe1 44 GPIOA->BSRR |= 0b1<< (5 + 16); // set 1 on PA5_21
sb8718 109:5274dd9bebe1 45
sb8718 109:5274dd9bebe1 46 } else {
sb8718 108:0fd7ff91ac95 47
sb8718 109:5274dd9bebe1 48 GPIOA->BSRR |= 0b1 << 5; // set 1 on PA5_5
sb8718 109:5274dd9bebe1 49 GPIOA->BSRR &= ~(0b1 << (5 + 16)); // set 0 on PA5_21
Jonathan Austin 0:2757d7abb7d9 50 }
Jonathan Austin 0:2757d7abb7d9 51 }
sb8718 109:5274dd9bebe1 52
sb8718 109:5274dd9bebe1 53
sb8718 109:5274dd9bebe1 54 void button_init(void) {
sb8718 109:5274dd9bebe1 55 __HAL_RCC_GPIOC_CLK_ENABLE();
sb8718 109:5274dd9bebe1 56 GPIOC->MODER &= ~(0b11<< (13 * 2)); // reset PC13 mode
sb8718 109:5274dd9bebe1 57 GPIOC->MODER |= 0b00<< (13 * 2); // 01 - read mode
sb8718 109:5274dd9bebe1 58 }
sb8718 109:5274dd9bebe1 59 uint32_t button_input(void) {
sb8718 109:5274dd9bebe1 60
sb8718 110:6a67af628913 61 uint32_t val = GPIOC->IDR & (0b1<<13);
sb8718 109:5274dd9bebe1 62
sb8718 109:5274dd9bebe1 63 return val;
sb8718 109:5274dd9bebe1 64 }