49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|  * Copyright (c) 2021 Raspberry Pi (Trading) Ltd.
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-3-Clause
 | |
|  */
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include "pico/stdlib.h"
 | |
| #include "hardware/clocks.h"
 | |
| #include "hardware/pll.h"
 | |
| 
 | |
| volatile bool seen_resus;
 | |
| 
 | |
| void resus_callback(void) {
 | |
|     // Reconfigure PLL sys back to the default state of 1500 / 6 / 2 = 125MHz
 | |
|     pll_init(pll_sys, 1, 1500 * MHZ, 6, 2);
 | |
| 
 | |
|     // CLK SYS = PLL SYS (125MHz) / 1 = 125MHz
 | |
|     clock_configure(clk_sys,
 | |
|                     CLOCKS_CLK_SYS_CTRL_SRC_VALUE_CLKSRC_CLK_SYS_AUX,
 | |
|                     CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS,
 | |
|                     125 * MHZ,
 | |
|                     125 * MHZ);
 | |
| 
 | |
|     // Reconfigure uart as clocks have changed
 | |
|     stdio_init_all();
 | |
|     printf("Resus event fired\n");
 | |
| 
 | |
|     // Wait for uart output to finish
 | |
|     uart_default_tx_wait_blocking();
 | |
| 
 | |
|     seen_resus = true;
 | |
| }
 | |
| 
 | |
| int main() {
 | |
|     stdio_init_all();
 | |
|     printf("Hello resus\n");
 | |
| 
 | |
|     seen_resus = false;
 | |
| 
 | |
|     clocks_enable_resus(&resus_callback);
 | |
|     // Break PLL sys
 | |
|     pll_deinit(pll_sys);
 | |
| 
 | |
|     while(!seen_resus);
 | |
| 
 | |
|     return 0;
 | |
| }
 |