Seongbin Lim
/
sb_first_project
This is a very simple guide, reviewing the steps required to get Blinky working on an Mbed OS platform.
main.cpp@109:5274dd9bebe1, 2020-04-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |