diff --git a/main.c b/main.c index e4594e6..148f053 100644 --- a/main.c +++ b/main.c @@ -13,8 +13,14 @@ extern void delay(uint32_t count); * - got to 40MHz clock */ +void pulse(uint8_t byte); + int main(void) { + // prepare flash latency for 40MHz operation + FLASH->ACR &= ~(FLASH_ACR_LATENCY); + FLASH->ACR |= FLASH_ACR_LATENCY_2WS; + // turn on HSI RCC->CR |= RCC_CR_HSION; while ((RCC->CR & RCC_CR_HSIRDY) != RCC_CR_HSIRDY); @@ -49,15 +55,28 @@ int main(void) GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPD5 | GPIO_PUPDR_PUPD0); GPIOA->PUPDR |= GPIO_PUPDR_PUPD5_0 | GPIO_PUPDR_PUPD0_1; // pd for button - while (1) { + pulse(*((uint8_t *)0x08080000)); // 0b00100101 + + while (1);/* { delay(500); //if (GPIOA->IDR & 0x01) GPIOA->BSRR |= 1 << 5; delay(500); //else GPIOA->BRR |= 1 << 5; - } + }*/ } void _exit(int code) { for (;;); } + +void pulse(uint8_t byte) +{ + int8_t i = 7; + do { + GPIOA->BSRR |= 1 << 5; + delay((byte & (1 << i)) ? 400 : 100); + GPIOA->BRR |= 1 << 5; + delay((byte & (1 << i)) ? 100 : 400); + } while (--i >= 0); +}