Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. async fn raise_system_frequency(
  2. flash_acr: reg::flash::Acr<Srt>,
  3. rcc_cier: reg::rcc::Cier<Srt>,
  4. rcc_cicr: reg::rcc::Cicr<Srt>,
  5. rcc_cifr: reg::rcc::Cifr<Srt>,
  6. rcc_cr: reg::rcc::Cr<Srt>,
  7. rcc_cfgr: reg::rcc::Cfgr<Srt>,
  8. thr_rcc: thr::Rcc,
  9. ) {
  10. thr_rcc.enable_int();
  11. rcc_cier.modify(|r| r.set_hserdyie());
  12.  
  13. // We need to move ownership of `hserdyc` and `hserdyf` into the fiber.
  14. let reg::rcc::Cifr {
  15. hserdyf, ..
  16. } = rcc_cifr;
  17. let reg::rcc::Cicr {
  18. hserdyc, ..
  19. } = rcc_cicr;
  20.  
  21. // Attach a listener that will notify us when RCC_CIFR_HSERDYF is asserted.
  22. let hserdy = thr_rcc.add_future(fib::new_fn(move || {
  23. if hserdyf.read_bit() {
  24. hserdyc.set_bit();
  25. fib::Complete(())
  26. } else {
  27. fib::Yielded(())
  28. }
  29. }));
  30. // Enable the HSE clock.
  31. rcc_cr.modify(|r| r.set_hseon());
  32. // Sleep until RCC_CIR_HSERDYF is asserted.
  33. hserdy.await;
  34.  
  35. // Two wait states, if 0 MHz < SYS_CLK <= 16 Mhz.
  36. flash_acr.modify(|r| r.write_latency(0));
  37. rcc_cfgr.modify(|r| r.write_sw(0b10)); // HSE selected as system clock
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement