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
- 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; }