nojtag.rs 897 B

123456789101112131415161718192021222324252627282930313233343536
  1. //! Disables the JTAG ports to give access to pb3, pb4 and PA15
  2. #![deny(unsafe_code)]
  3. #![no_main]
  4. #![no_std]
  5. use panic_halt as _;
  6. use stm32f1xx_hal::{
  7. prelude::*,
  8. pac,
  9. };
  10. use cortex_m_rt::entry;
  11. #[entry]
  12. fn main() -> ! {
  13. let p = pac::Peripherals::take().unwrap();
  14. let mut rcc = p.RCC.constrain();
  15. let mut gpioa = p.GPIOA.split(&mut rcc.apb2);
  16. let mut gpiob = p.GPIOB.split(&mut rcc.apb2);
  17. let mut afio = p.AFIO.constrain(&mut rcc.apb2);
  18. let (pa15, pb3, pb4) = afio.mapr.disable_jtag(gpioa.pa15, gpiob.pb3, gpiob.pb4);
  19. let mut pa15 = pa15.into_push_pull_output(&mut gpioa.crh);
  20. let mut pb3 = pb3.into_push_pull_output(&mut gpiob.crl);
  21. let mut pb4 = pb4.into_push_pull_output(&mut gpiob.crl);
  22. loop {
  23. pa15.toggle().unwrap();
  24. pb3.toggle().unwrap();
  25. pb4.toggle().unwrap();
  26. cortex_m::asm::delay(8_000_000);
  27. }
  28. }