diff --git a/cfg/mcuconf.h b/cfg/mcuconf.h index 96e9080..dc36c84 100644 --- a/cfg/mcuconf.h +++ b/cfg/mcuconf.h @@ -39,7 +39,7 @@ * HAL driver system settings. */ #define STM32_NO_INIT FALSE -#define STM32_VOS STM32_VOS_1P2 +#define STM32_VOS STM32_VOS_1P5 #define STM32_PVD_ENABLE TRUE #define STM32_PLS STM32_PLS_LEV4 #define STM32_HSI16_ENABLED TRUE @@ -50,9 +50,9 @@ #define STM32_ADC_CLOCK_ENABLED TRUE #define STM32_MSIRANGE STM32_MSIRANGE_4M #define STM32_SW STM32_SW_MSI -#define STM32_PLLSRC STM32_PLLSRC_NONE -#define STM32_PLLMUL_VALUE 1 -#define STM32_PLLDIV_VALUE 8 +#define STM32_PLLSRC STM32_PLLSRC_HSI16 +#define STM32_PLLMUL_VALUE 3 +#define STM32_PLLDIV_VALUE 3 #define STM32_HPRE STM32_HPRE_DIV1 #define STM32_PPRE1 STM32_PPRE1_DIV1 #define STM32_PPRE2 STM32_PPRE2_DIV1 diff --git a/openocd.sh b/openocd.sh index 1ce7e72..28d46ca 100755 --- a/openocd.sh +++ b/openocd.sh @@ -1 +1 @@ -openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/local/share/openocd/scripts/target/stm32l0.cfg -c "init; program build/ch.hex verify reset exit" +openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32l0.cfg -c "init; program build/ch.hex verify reset exit" diff --git a/source/flapbird.c b/source/flapbird.c index f2dd2cf..800e892 100644 --- a/source/flapbird.c +++ b/source/flapbird.c @@ -1,5 +1,8 @@ #include "buttons.h" #include "dogs.h" +#include "hal.h" + +#include static const unsigned char bird[] = { 8, 8, @@ -20,11 +23,23 @@ static int py; static int vy; static int counter; +static uint32_t next = 31415926; + +int rand() +{ + uint32_t tr = RTC->TR; + uint32_t dr = RTC->DR; + next = next * (0x197244 + dr) + tr; + return (unsigned int)(next / 65536) % 32768; +} + +#define NEW_BAR() (rand() % 50 + 5) + void flapbird_init() { score = 0; - t1x = DISP_WIDTH / 2, t1o = 15; - t2x = DISP_WIDTH, t2o = 49; + t1x = DISP_WIDTH / 2, t1o = NEW_BAR(); + t2x = DISP_WIDTH, t2o = NEW_BAR(); py = DISP_HEIGHT / 2 - 4; vy = 0; counter = 0; @@ -69,11 +84,16 @@ int flapbird_loop() score = (py + 2 > t2o - 10 && py + 6 < t2o + 10) ? score + 1 : 0; t1x -= 2; - if (t1x <= -5) + if (t1x <= -5) { t1x = DISP_WIDTH; + t1o = NEW_BAR(); + } + t2x -= 2; - if (t2x <= -5) + if (t2x <= -5) { t2x = DISP_WIDTH; + t2o = NEW_BAR(); + } return 100; } diff --git a/source/main.c b/source/main.c index fd753ea..89f3cf0 100644 --- a/source/main.c +++ b/source/main.c @@ -67,6 +67,9 @@ static void alarm_callback(RTCDriver *rtcp, rtcevent_t event) int main(void) { halInit(); + + RCC->CR &= ~(RCC_CR_PLLON); // Ensure that the PLL is off (unused). + //chSysInit(); buttons_init();