-
-void start(void) {
-#ifdef AO_BOOT_APPLICATION_PIN
- uint16_t v;
-
- if (ao_boot_application == AO_BOOT_APPLICATION &&
- ao_boot_application_check == AO_BOOT_APPLICATION_CHECK) {
- ao_boot_application = 0;
- ao_boot_application_check = 0;
- ao_boot_chain();
- }
- /* Enable power interface clock */
- stm_rcc.apb1enr |= (1 << STM_RCC_APB1ENR_PWREN);
-
- /* Enable the input pin */
- ao_enable_input(&AO_BOOT_APPLICATION_GPIO, AO_BOOT_APPLICATION_PIN,
- AO_BOOT_APPLICATION_MODE);
-
- /* Read the value */
- v = stm_gpio_get(&AO_BOOT_APPLICATION_GPIO, AO_BOOT_APPLICATION_PIN);
-
- /* Reset the chip to turn off the port and the power interface clock */
- ao_gpio_set_mode(&AO_BOOT_APPLICATION_GPIO, AO_BOOT_APPLICATION_PIN, 0);
- ao_disable_port(&AO_BOOT_APPLICATION_GPIO);
- stm_rcc.apb1enr &= ~(1 << STM_RCC_APB1ENR_PWREN);
- if (v == AO_BOOT_APPLICATION_VALUE)
- ao_boot_chain();