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-09
- Revision:
- 111:15fa6baff793
- Parent:
- 110:6a67af628913
- Child:
- 112:5a7629ace1c4
File content as of revision 111:15fa6baff793:
#include "mbed.h" int interval; void led2_init(void); void button_init(void); void led2_toggle(void); void button_Handler(void); int main() { led2_init(); button_init(); NVIC_SetVector(EXTI15_10_IRQn,(uint32_t)button_Handler); interval = 500; while(true) { 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 } void led2_toggle(void){ uint32_t isOn; isOn = GPIOA->IDR & (0b1 << 5); //recent write value if(isOn > 0) { 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 } } void button_init(void) { __HAL_RCC_GPIOC_CLK_ENABLE(); GPIOC->MODER &= ~(0b11<< (5 * 2)); // reset PA5 mode GPIOC->MODER |= 0b00<< (5 * 2); // 00 - read mode SYSCFG->EXTICR[3] &= ~(0b1111 << 4); SYSCFG->EXTICR[3] |= (0b0010 << 4); EXTI->IMR |= (0b1 << 13); EXTI->FTSR |= (0b1 << 13); } void button_Handler(void){ if(interval < 2000) { interval *= 2; } else { interval = 500; } EXTI->PR |= (0b1 << 13); }