Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Main code of firmware
- */
- #include "stm32f10x.h"
- #include "core_cm3.h"
- /* General defines */
- #define LED_PORT GPIOC
- #define IO_PORT GPIOA
- #define BUTTON (1 << 0)
- #define LED_BLUE (1 << 8)
- #define LED_GREEN (1 << 9)
- /* user status flag */
- volatile unsigned char status_flag;
- void main();
- /* Simple delay function */
- void delay_ms(unsigned int delay) {
- volatile unsigned int delay_tick = delay * 2000;
- while (delay_tick--);
- }
- /* chage user flag */
- void change_flag(void) {
- status_flag ^= 1;
- delay_ms(100);
- }
- /* Main function */
- void main(void) {
- //status_flag = 0;
- /* setup i/o port c */
- RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
- LED_PORT->CRH |= GPIO_CRH_MODE8_0 | GPIO_CRH_MODE9_0;
- LED_PORT->CRH &= ~(GPIO_CRH_CNF8 | GPIO_CRH_CNF9);
- /* setup i/o port a */
- RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN;
- /* setup AFIO andEXTI */
- AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI0_PA;
- EXTI->IMR |= (1 << 0);
- EXTI->FTSR |= (1 << 0);
- /* enable EXTI0 interrupt */
- NVIC_EnableIRQ(EXTI0_IRQn);
- /* enable leds */
- LED_PORT->ODR = LED_BLUE;// | LED_GREEN;
- /* infinity loop */
- //while (1);
- while (1) {
- if (status_flag & 1) {
- /* disable leds */
- LED_PORT->ODR &= ~LED_BLUE;
- LED_PORT->ODR |= LED_GREEN;
- /* delay ~500ms */
- delay_ms(500);
- /* enable leds */
- LED_PORT->ODR |= LED_BLUE;
- LED_PORT->ODR &= ~LED_GREEN;
- /* delay ~500ms */
- delay_ms(500);
- }
- else {
- /* disable leds */
- LED_PORT->ODR &= ~(LED_BLUE | LED_GREEN);
- /* delay ~500ms */
- delay_ms(500);
- /* enable leds */
- LED_PORT->ODR |= LED_BLUE | LED_GREEN;
- /* delay ~500ms */
- delay_ms(500);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement