aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/gen.py4
-rw-r--r--embassy-stm32/src/chip/stm32f401cb.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f401cc.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f401cd.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f401ce.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f401rb.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f401rc.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f401rd.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f401re.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f401vb.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f401vc.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f401vd.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f401ve.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f405oe.rs8
-rw-r--r--embassy-stm32/src/chip/stm32f405og.rs8
-rw-r--r--embassy-stm32/src/chip/stm32f405rg.rs8
-rw-r--r--embassy-stm32/src/chip/stm32f405vg.rs8
-rw-r--r--embassy-stm32/src/chip/stm32f405zg.rs8
-rw-r--r--embassy-stm32/src/chip/stm32f407ie.rs10
-rw-r--r--embassy-stm32/src/chip/stm32f407ig.rs10
-rw-r--r--embassy-stm32/src/chip/stm32f407ve.rs10
-rw-r--r--embassy-stm32/src/chip/stm32f407vg.rs10
-rw-r--r--embassy-stm32/src/chip/stm32f407ze.rs10
-rw-r--r--embassy-stm32/src/chip/stm32f407zg.rs10
-rw-r--r--embassy-stm32/src/chip/stm32f410c8.rs14
-rw-r--r--embassy-stm32/src/chip/stm32f410cb.rs14
-rw-r--r--embassy-stm32/src/chip/stm32f410r8.rs14
-rw-r--r--embassy-stm32/src/chip/stm32f410rb.rs14
-rw-r--r--embassy-stm32/src/chip/stm32f410t8.rs14
-rw-r--r--embassy-stm32/src/chip/stm32f410tb.rs14
-rw-r--r--embassy-stm32/src/chip/stm32f411cc.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f411ce.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f411rc.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f411re.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f411vc.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f411ve.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f412ce.rs16
-rw-r--r--embassy-stm32/src/chip/stm32f412cg.rs16
-rw-r--r--embassy-stm32/src/chip/stm32f412re.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f412rg.rs18
-rw-r--r--embassy-stm32/src/chip/stm32f412ve.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f412vg.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f412ze.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f412zg.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f413cg.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f413ch.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f413mg.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f413mh.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f413rg.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f413rh.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f413vg.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f413vh.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f413zg.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f413zh.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f415og.rs22
-rw-r--r--embassy-stm32/src/chip/stm32f415rg.rs22
-rw-r--r--embassy-stm32/src/chip/stm32f415vg.rs22
-rw-r--r--embassy-stm32/src/chip/stm32f415zg.rs22
-rw-r--r--embassy-stm32/src/chip/stm32f417ie.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f417ig.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f417ve.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f417vg.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f417ze.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f417zg.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f423ch.rs10
-rw-r--r--embassy-stm32/src/chip/stm32f423mh.rs10
-rw-r--r--embassy-stm32/src/chip/stm32f423rh.rs10
-rw-r--r--embassy-stm32/src/chip/stm32f423vh.rs10
-rw-r--r--embassy-stm32/src/chip/stm32f423zh.rs10
-rw-r--r--embassy-stm32/src/chip/stm32f427ag.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f427ai.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f427ig.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f427ii.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f427vg.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f427vi.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f427zg.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f427zi.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429ag.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429ai.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429be.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429bg.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429bi.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429ie.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429ig.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429ii.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429ne.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429ng.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429ni.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429ve.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429vg.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429vi.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429ze.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429zg.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f429zi.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f437ai.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f437ig.rs31
-rw-r--r--embassy-stm32/src/chip/stm32f437ii.rs31
-rw-r--r--embassy-stm32/src/chip/stm32f437vg.rs28
-rw-r--r--embassy-stm32/src/chip/stm32f437vi.rs28
-rw-r--r--embassy-stm32/src/chip/stm32f437zg.rs31
-rw-r--r--embassy-stm32/src/chip/stm32f437zi.rs31
-rw-r--r--embassy-stm32/src/chip/stm32f439ai.rs31
-rw-r--r--embassy-stm32/src/chip/stm32f439bg.rs32
-rw-r--r--embassy-stm32/src/chip/stm32f439bi.rs32
-rw-r--r--embassy-stm32/src/chip/stm32f439ig.rs32
-rw-r--r--embassy-stm32/src/chip/stm32f439ii.rs32
-rw-r--r--embassy-stm32/src/chip/stm32f439ng.rs32
-rw-r--r--embassy-stm32/src/chip/stm32f439ni.rs32
-rw-r--r--embassy-stm32/src/chip/stm32f439vg.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f439vi.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f439zg.rs32
-rw-r--r--embassy-stm32/src/chip/stm32f439zi.rs32
-rw-r--r--embassy-stm32/src/chip/stm32f446mc.rs25
-rw-r--r--embassy-stm32/src/chip/stm32f446me.rs25
-rw-r--r--embassy-stm32/src/chip/stm32f446rc.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f446re.rs24
-rw-r--r--embassy-stm32/src/chip/stm32f446vc.rs25
-rw-r--r--embassy-stm32/src/chip/stm32f446ve.rs25
-rw-r--r--embassy-stm32/src/chip/stm32f446zc.rs25
-rw-r--r--embassy-stm32/src/chip/stm32f446ze.rs25
-rw-r--r--embassy-stm32/src/chip/stm32f469ae.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f469ag.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f469ai.rs26
-rw-r--r--embassy-stm32/src/chip/stm32f469be.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f469bg.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f469bi.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f469ie.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f469ig.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f469ii.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f469ne.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f469ng.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f469ni.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f469ve.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f469vg.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f469vi.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f469ze.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f469zg.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f469zi.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f479ag.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f479ai.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f479bg.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f479bi.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f479ig.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f479ii.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f479ng.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f479ni.rs30
-rw-r--r--embassy-stm32/src/chip/stm32f479vg.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f479vi.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f479zg.rs12
-rw-r--r--embassy-stm32/src/chip/stm32f479zi.rs12
-rw-r--r--embassy-stm32/src/chip/stm32l412c8.rs338
-rw-r--r--embassy-stm32/src/chip/stm32l412cb.rs338
-rw-r--r--embassy-stm32/src/chip/stm32l412k8.rs337
-rw-r--r--embassy-stm32/src/chip/stm32l412kb.rs337
-rw-r--r--embassy-stm32/src/chip/stm32l412r8.rs338
-rw-r--r--embassy-stm32/src/chip/stm32l412rb.rs338
-rw-r--r--embassy-stm32/src/chip/stm32l412t8.rs337
-rw-r--r--embassy-stm32/src/chip/stm32l412tb.rs337
-rw-r--r--embassy-stm32/src/chip/stm32l422cb.rs330
-rw-r--r--embassy-stm32/src/chip/stm32l422kb.rs330
-rw-r--r--embassy-stm32/src/chip/stm32l422rb.rs330
-rw-r--r--embassy-stm32/src/chip/stm32l422tb.rs330
-rw-r--r--embassy-stm32/src/chip/stm32l431cb.rs363
-rw-r--r--embassy-stm32/src/chip/stm32l431cc.rs363
-rw-r--r--embassy-stm32/src/chip/stm32l431kb.rs364
-rw-r--r--embassy-stm32/src/chip/stm32l431kc.rs364
-rw-r--r--embassy-stm32/src/chip/stm32l431rb.rs363
-rw-r--r--embassy-stm32/src/chip/stm32l431rc.rs363
-rw-r--r--embassy-stm32/src/chip/stm32l431vc.rs363
-rw-r--r--embassy-stm32/src/chip/stm32l432kb.rs347
-rw-r--r--embassy-stm32/src/chip/stm32l432kc.rs347
-rw-r--r--embassy-stm32/src/chip/stm32l433cb.rs371
-rw-r--r--embassy-stm32/src/chip/stm32l433cc.rs371
-rw-r--r--embassy-stm32/src/chip/stm32l433rb.rs371
-rw-r--r--embassy-stm32/src/chip/stm32l433rc.rs371
-rw-r--r--embassy-stm32/src/chip/stm32l433vc.rs371
-rw-r--r--embassy-stm32/src/chip/stm32l442kc.rs352
-rw-r--r--embassy-stm32/src/chip/stm32l443cc.rs374
-rw-r--r--embassy-stm32/src/chip/stm32l443rc.rs374
-rw-r--r--embassy-stm32/src/chip/stm32l443vc.rs374
-rw-r--r--embassy-stm32/src/chip/stm32l451cc.rs383
-rw-r--r--embassy-stm32/src/chip/stm32l451ce.rs383
-rw-r--r--embassy-stm32/src/chip/stm32l451rc.rs383
-rw-r--r--embassy-stm32/src/chip/stm32l451re.rs383
-rw-r--r--embassy-stm32/src/chip/stm32l451vc.rs383
-rw-r--r--embassy-stm32/src/chip/stm32l451ve.rs383
-rw-r--r--embassy-stm32/src/chip/stm32l452cc.rs386
-rw-r--r--embassy-stm32/src/chip/stm32l452ce.rs386
-rw-r--r--embassy-stm32/src/chip/stm32l452rc.rs386
-rw-r--r--embassy-stm32/src/chip/stm32l452re.rs386
-rw-r--r--embassy-stm32/src/chip/stm32l452vc.rs386
-rw-r--r--embassy-stm32/src/chip/stm32l452ve.rs386
-rw-r--r--embassy-stm32/src/chip/stm32l462ce.rs389
-rw-r--r--embassy-stm32/src/chip/stm32l462re.rs389
-rw-r--r--embassy-stm32/src/chip/stm32l462ve.rs389
-rw-r--r--embassy-stm32/src/chip/stm32l471qe.rs409
-rw-r--r--embassy-stm32/src/chip/stm32l471qg.rs409
-rw-r--r--embassy-stm32/src/chip/stm32l471re.rs409
-rw-r--r--embassy-stm32/src/chip/stm32l471rg.rs409
-rw-r--r--embassy-stm32/src/chip/stm32l471ve.rs409
-rw-r--r--embassy-stm32/src/chip/stm32l471vg.rs409
-rw-r--r--embassy-stm32/src/chip/stm32l471ze.rs409
-rw-r--r--embassy-stm32/src/chip/stm32l471zg.rs409
-rw-r--r--embassy-stm32/src/chip/stm32l475rc.rs412
-rw-r--r--embassy-stm32/src/chip/stm32l475re.rs412
-rw-r--r--embassy-stm32/src/chip/stm32l475rg.rs412
-rw-r--r--embassy-stm32/src/chip/stm32l475vc.rs412
-rw-r--r--embassy-stm32/src/chip/stm32l475ve.rs412
-rw-r--r--embassy-stm32/src/chip/stm32l475vg.rs412
-rw-r--r--embassy-stm32/src/chip/stm32l476je.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476jg.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476me.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476mg.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476qe.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476qg.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476rc.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476re.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476rg.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476vc.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476ve.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476vg.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476ze.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l476zg.rs415
-rw-r--r--embassy-stm32/src/chip/stm32l485jc.rs431
-rw-r--r--embassy-stm32/src/chip/stm32l485je.rs431
-rw-r--r--embassy-stm32/src/chip/stm32l486jg.rs434
-rw-r--r--embassy-stm32/src/chip/stm32l486qg.rs434
-rw-r--r--embassy-stm32/src/chip/stm32l486rg.rs434
-rw-r--r--embassy-stm32/src/chip/stm32l486vg.rs434
-rw-r--r--embassy-stm32/src/chip/stm32l486zg.rs434
-rw-r--r--embassy-stm32/src/chip/stm32l496ae.rs455
-rw-r--r--embassy-stm32/src/chip/stm32l496ag.rs455
-rw-r--r--embassy-stm32/src/chip/stm32l496qe.rs455
-rw-r--r--embassy-stm32/src/chip/stm32l496qg.rs455
-rw-r--r--embassy-stm32/src/chip/stm32l496re.rs455
-rw-r--r--embassy-stm32/src/chip/stm32l496rg.rs455
-rw-r--r--embassy-stm32/src/chip/stm32l496ve.rs455
-rw-r--r--embassy-stm32/src/chip/stm32l496vg.rs455
-rw-r--r--embassy-stm32/src/chip/stm32l496wg.rs455
-rw-r--r--embassy-stm32/src/chip/stm32l496ze.rs455
-rw-r--r--embassy-stm32/src/chip/stm32l496zg.rs455
-rw-r--r--embassy-stm32/src/chip/stm32l4a6ag.rs468
-rw-r--r--embassy-stm32/src/chip/stm32l4a6qg.rs468
-rw-r--r--embassy-stm32/src/chip/stm32l4a6rg.rs468
-rw-r--r--embassy-stm32/src/chip/stm32l4a6vg.rs468
-rw-r--r--embassy-stm32/src/chip/stm32l4a6zg.rs468
-rw-r--r--embassy-stm32/src/chip/stm32l4p5ae.rs461
-rw-r--r--embassy-stm32/src/chip/stm32l4p5ag.rs461
-rw-r--r--embassy-stm32/src/chip/stm32l4p5ce.rs443
-rw-r--r--embassy-stm32/src/chip/stm32l4p5cg.rs443
-rw-r--r--embassy-stm32/src/chip/stm32l4p5qe.rs461
-rw-r--r--embassy-stm32/src/chip/stm32l4p5qg.rs461
-rw-r--r--embassy-stm32/src/chip/stm32l4p5re.rs461
-rw-r--r--embassy-stm32/src/chip/stm32l4p5rg.rs461
-rw-r--r--embassy-stm32/src/chip/stm32l4p5ve.rs461
-rw-r--r--embassy-stm32/src/chip/stm32l4p5vg.rs461
-rw-r--r--embassy-stm32/src/chip/stm32l4p5ze.rs461
-rw-r--r--embassy-stm32/src/chip/stm32l4p5zg.rs461
-rw-r--r--embassy-stm32/src/chip/stm32l4q5ag.rs451
-rw-r--r--embassy-stm32/src/chip/stm32l4q5cg.rs467
-rw-r--r--embassy-stm32/src/chip/stm32l4q5qg.rs451
-rw-r--r--embassy-stm32/src/chip/stm32l4q5rg.rs451
-rw-r--r--embassy-stm32/src/chip/stm32l4q5vg.rs451
-rw-r--r--embassy-stm32/src/chip/stm32l4q5zg.rs451
-rw-r--r--embassy-stm32/src/chip/stm32l4r5ag.rs442
-rw-r--r--embassy-stm32/src/chip/stm32l4r5ai.rs442
-rw-r--r--embassy-stm32/src/chip/stm32l4r5qg.rs442
-rw-r--r--embassy-stm32/src/chip/stm32l4r5qi.rs442
-rw-r--r--embassy-stm32/src/chip/stm32l4r5vg.rs442
-rw-r--r--embassy-stm32/src/chip/stm32l4r5vi.rs442
-rw-r--r--embassy-stm32/src/chip/stm32l4r5zg.rs442
-rw-r--r--embassy-stm32/src/chip/stm32l4r5zi.rs442
-rw-r--r--embassy-stm32/src/chip/stm32l4r7ai.rs453
-rw-r--r--embassy-stm32/src/chip/stm32l4r7vi.rs453
-rw-r--r--embassy-stm32/src/chip/stm32l4r7zi.rs453
-rw-r--r--embassy-stm32/src/chip/stm32l4r9ag.rs456
-rw-r--r--embassy-stm32/src/chip/stm32l4r9ai.rs456
-rw-r--r--embassy-stm32/src/chip/stm32l4r9vg.rs456
-rw-r--r--embassy-stm32/src/chip/stm32l4r9vi.rs456
-rw-r--r--embassy-stm32/src/chip/stm32l4r9zg.rs456
-rw-r--r--embassy-stm32/src/chip/stm32l4r9zi.rs456
-rw-r--r--embassy-stm32/src/chip/stm32l4s5ai.rs457
-rw-r--r--embassy-stm32/src/chip/stm32l4s5qi.rs457
-rw-r--r--embassy-stm32/src/chip/stm32l4s5vi.rs457
-rw-r--r--embassy-stm32/src/chip/stm32l4s5zi.rs457
-rw-r--r--embassy-stm32/src/chip/stm32l4s7ai.rs466
-rw-r--r--embassy-stm32/src/chip/stm32l4s7vi.rs466
-rw-r--r--embassy-stm32/src/chip/stm32l4s7zi.rs466
-rw-r--r--embassy-stm32/src/chip/stm32l4s9ai.rs469
-rw-r--r--embassy-stm32/src/chip/stm32l4s9vi.rs469
-rw-r--r--embassy-stm32/src/chip/stm32l4s9zi.rs469
291 files changed, 59366 insertions, 2305 deletions
diff --git a/embassy-stm32/gen.py b/embassy-stm32/gen.py
index cf04cc158..714ead373 100644
--- a/embassy-stm32/gen.py
+++ b/embassy-stm32/gen.py
@@ -67,6 +67,8 @@ for chip in chips.values():
67 # We don't want to hardcode the EXTI peripheral addr 67 # We don't want to hardcode the EXTI peripheral addr
68 peripherals.extend((f'EXTI{x}' for x in range(16))) 68 peripherals.extend((f'EXTI{x}' for x in range(16)))
69 69
70 exti_base = chip['peripherals']['EXTI']['address']
71 syscfg_base = chip['peripherals']['SYSCFG']['address']
70 gpio_base = chip['peripherals']['GPIOA']['address'] 72 gpio_base = chip['peripherals']['GPIOA']['address']
71 gpio_stride = 0x400 73 gpio_stride = 0x400
72 74
@@ -129,6 +131,8 @@ for chip in chips.values():
129 f.write(f""" 131 f.write(f"""
130 use embassy_extras::peripherals; 132 use embassy_extras::peripherals;
131 peripherals!({','.join(peripherals)}); 133 peripherals!({','.join(peripherals)});
134 pub const SYSCFG_BASE: usize = 0x{syscfg_base:x};
135 pub const EXTI_BASE: usize = 0x{exti_base:x};
132 pub const GPIO_BASE: usize = 0x{gpio_base:x}; 136 pub const GPIO_BASE: usize = 0x{gpio_base:x};
133 pub const GPIO_STRIDE: usize = 0x{gpio_stride:x}; 137 pub const GPIO_STRIDE: usize = 0x{gpio_stride:x};
134 138
diff --git a/embassy-stm32/src/chip/stm32f401cb.rs b/embassy-stm32/src/chip/stm32f401cb.rs
index 654c39bdd..027fef5a2 100644
--- a/embassy-stm32/src/chip/stm32f401cb.rs
+++ b/embassy-stm32/src/chip/stm32f401cb.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, TIM4, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3,
11 TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f401cc.rs b/embassy-stm32/src/chip/stm32f401cc.rs
index 654c39bdd..027fef5a2 100644
--- a/embassy-stm32/src/chip/stm32f401cc.rs
+++ b/embassy-stm32/src/chip/stm32f401cc.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, TIM4, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3,
11 TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f401cd.rs b/embassy-stm32/src/chip/stm32f401cd.rs
index 654c39bdd..027fef5a2 100644
--- a/embassy-stm32/src/chip/stm32f401cd.rs
+++ b/embassy-stm32/src/chip/stm32f401cd.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, TIM4, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3,
11 TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f401ce.rs b/embassy-stm32/src/chip/stm32f401ce.rs
index 654c39bdd..027fef5a2 100644
--- a/embassy-stm32/src/chip/stm32f401ce.rs
+++ b/embassy-stm32/src/chip/stm32f401ce.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, TIM4, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3,
11 TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f401rb.rs b/embassy-stm32/src/chip/stm32f401rb.rs
index 5c413734a..163900e93 100644
--- a/embassy-stm32/src/chip/stm32f401rb.rs
+++ b/embassy-stm32/src/chip/stm32f401rb.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2,
11 TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f401rc.rs b/embassy-stm32/src/chip/stm32f401rc.rs
index 5c413734a..163900e93 100644
--- a/embassy-stm32/src/chip/stm32f401rc.rs
+++ b/embassy-stm32/src/chip/stm32f401rc.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2,
11 TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f401rd.rs b/embassy-stm32/src/chip/stm32f401rd.rs
index 5c413734a..163900e93 100644
--- a/embassy-stm32/src/chip/stm32f401rd.rs
+++ b/embassy-stm32/src/chip/stm32f401rd.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2,
11 TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f401re.rs b/embassy-stm32/src/chip/stm32f401re.rs
index 5c413734a..163900e93 100644
--- a/embassy-stm32/src/chip/stm32f401re.rs
+++ b/embassy-stm32/src/chip/stm32f401re.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2,
11 TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f401vb.rs b/embassy-stm32/src/chip/stm32f401vb.rs
index f9911116c..8976fb754 100644
--- a/embassy-stm32/src/chip/stm32f401vb.rs
+++ b/embassy-stm32/src/chip/stm32f401vb.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM2, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11,
11 TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f401vc.rs b/embassy-stm32/src/chip/stm32f401vc.rs
index f9911116c..8976fb754 100644
--- a/embassy-stm32/src/chip/stm32f401vc.rs
+++ b/embassy-stm32/src/chip/stm32f401vc.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM2, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11,
11 TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f401vd.rs b/embassy-stm32/src/chip/stm32f401vd.rs
index f9911116c..8976fb754 100644
--- a/embassy-stm32/src/chip/stm32f401vd.rs
+++ b/embassy-stm32/src/chip/stm32f401vd.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM2, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11,
11 TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f401ve.rs b/embassy-stm32/src/chip/stm32f401ve.rs
index f9911116c..8976fb754 100644
--- a/embassy-stm32/src/chip/stm32f401ve.rs
+++ b/embassy-stm32/src/chip/stm32f401ve.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM2, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11,
11 TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f405oe.rs b/embassy-stm32/src/chip/stm32f405oe.rs
index dcc229ce4..8cffccd9b 100644
--- a/embassy-stm32/src/chip/stm32f405oe.rs
+++ b/embassy-stm32/src/chip/stm32f405oe.rs
@@ -1,9 +1,9 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, 14 TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1,
15 USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f405og.rs b/embassy-stm32/src/chip/stm32f405og.rs
index dcc229ce4..8cffccd9b 100644
--- a/embassy-stm32/src/chip/stm32f405og.rs
+++ b/embassy-stm32/src/chip/stm32f405og.rs
@@ -1,9 +1,9 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, 14 TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1,
15 USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f405rg.rs b/embassy-stm32/src/chip/stm32f405rg.rs
index dcc229ce4..8cffccd9b 100644
--- a/embassy-stm32/src/chip/stm32f405rg.rs
+++ b/embassy-stm32/src/chip/stm32f405rg.rs
@@ -1,9 +1,9 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, 14 TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1,
15 USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f405vg.rs b/embassy-stm32/src/chip/stm32f405vg.rs
index dcc229ce4..8cffccd9b 100644
--- a/embassy-stm32/src/chip/stm32f405vg.rs
+++ b/embassy-stm32/src/chip/stm32f405vg.rs
@@ -1,9 +1,9 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, 14 TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1,
15 USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f405zg.rs b/embassy-stm32/src/chip/stm32f405zg.rs
index dcc229ce4..8cffccd9b 100644
--- a/embassy-stm32/src/chip/stm32f405zg.rs
+++ b/embassy-stm32/src/chip/stm32f405zg.rs
@@ -1,9 +1,9 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, 14 TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1,
15 USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f407ie.rs b/embassy-stm32/src/chip/stm32f407ie.rs
index ac19c9844..f86038e1e 100644
--- a/embassy-stm32/src/chip/stm32f407ie.rs
+++ b/embassy-stm32/src/chip/stm32f407ie.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f407ig.rs b/embassy-stm32/src/chip/stm32f407ig.rs
index ac19c9844..f86038e1e 100644
--- a/embassy-stm32/src/chip/stm32f407ig.rs
+++ b/embassy-stm32/src/chip/stm32f407ig.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f407ve.rs b/embassy-stm32/src/chip/stm32f407ve.rs
index ac19c9844..f86038e1e 100644
--- a/embassy-stm32/src/chip/stm32f407ve.rs
+++ b/embassy-stm32/src/chip/stm32f407ve.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f407vg.rs b/embassy-stm32/src/chip/stm32f407vg.rs
index ac19c9844..f86038e1e 100644
--- a/embassy-stm32/src/chip/stm32f407vg.rs
+++ b/embassy-stm32/src/chip/stm32f407vg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f407ze.rs b/embassy-stm32/src/chip/stm32f407ze.rs
index ac19c9844..f86038e1e 100644
--- a/embassy-stm32/src/chip/stm32f407ze.rs
+++ b/embassy-stm32/src/chip/stm32f407ze.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f407zg.rs b/embassy-stm32/src/chip/stm32f407zg.rs
index ac19c9844..f86038e1e 100644
--- a/embassy-stm32/src/chip/stm32f407zg.rs
+++ b/embassy-stm32/src/chip/stm32f407zg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f410c8.rs b/embassy-stm32/src/chip/stm32f410c8.rs
index 8015e97a7..3b7a40d35 100644
--- a/embassy-stm32/src/chip/stm32f410c8.rs
+++ b/embassy-stm32/src/chip/stm32f410c8.rs
@@ -1,13 +1,15 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 7 PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
8 PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, TIM1, 8 PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG,
9 TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG 9 TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG
10); 10);
11pub const SYSCFG_BASE: usize = 0x40013800;
12pub const EXTI_BASE: usize = 0x40013c00;
11pub const GPIO_BASE: usize = 0x40020000; 13pub const GPIO_BASE: usize = 0x40020000;
12pub const GPIO_STRIDE: usize = 0x400; 14pub const GPIO_STRIDE: usize = 0x400;
13 15
diff --git a/embassy-stm32/src/chip/stm32f410cb.rs b/embassy-stm32/src/chip/stm32f410cb.rs
index 8015e97a7..3b7a40d35 100644
--- a/embassy-stm32/src/chip/stm32f410cb.rs
+++ b/embassy-stm32/src/chip/stm32f410cb.rs
@@ -1,13 +1,15 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 7 PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
8 PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, TIM1, 8 PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG,
9 TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG 9 TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG
10); 10);
11pub const SYSCFG_BASE: usize = 0x40013800;
12pub const EXTI_BASE: usize = 0x40013c00;
11pub const GPIO_BASE: usize = 0x40020000; 13pub const GPIO_BASE: usize = 0x40020000;
12pub const GPIO_STRIDE: usize = 0x400; 14pub const GPIO_STRIDE: usize = 0x400;
13 15
diff --git a/embassy-stm32/src/chip/stm32f410r8.rs b/embassy-stm32/src/chip/stm32f410r8.rs
index 8015e97a7..3b7a40d35 100644
--- a/embassy-stm32/src/chip/stm32f410r8.rs
+++ b/embassy-stm32/src/chip/stm32f410r8.rs
@@ -1,13 +1,15 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 7 PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
8 PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, TIM1, 8 PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG,
9 TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG 9 TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG
10); 10);
11pub const SYSCFG_BASE: usize = 0x40013800;
12pub const EXTI_BASE: usize = 0x40013c00;
11pub const GPIO_BASE: usize = 0x40020000; 13pub const GPIO_BASE: usize = 0x40020000;
12pub const GPIO_STRIDE: usize = 0x400; 14pub const GPIO_STRIDE: usize = 0x400;
13 15
diff --git a/embassy-stm32/src/chip/stm32f410rb.rs b/embassy-stm32/src/chip/stm32f410rb.rs
index 8015e97a7..3b7a40d35 100644
--- a/embassy-stm32/src/chip/stm32f410rb.rs
+++ b/embassy-stm32/src/chip/stm32f410rb.rs
@@ -1,13 +1,15 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 7 PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
8 PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, TIM1, 8 PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG,
9 TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG 9 TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG
10); 10);
11pub const SYSCFG_BASE: usize = 0x40013800;
12pub const EXTI_BASE: usize = 0x40013c00;
11pub const GPIO_BASE: usize = 0x40020000; 13pub const GPIO_BASE: usize = 0x40020000;
12pub const GPIO_STRIDE: usize = 0x400; 14pub const GPIO_STRIDE: usize = 0x400;
13 15
diff --git a/embassy-stm32/src/chip/stm32f410t8.rs b/embassy-stm32/src/chip/stm32f410t8.rs
index e34973843..e9035f1a3 100644
--- a/embassy-stm32/src/chip/stm32f410t8.rs
+++ b/embassy-stm32/src/chip/stm32f410t8.rs
@@ -1,13 +1,15 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 7 PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
8 PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SYSCFG, TIM1, TIM11, TIM5, 8 PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SYSCFG, TIM1, TIM11,
9 TIM6, TIM9, USART1, USART2, WWDG 9 TIM5, TIM6, TIM9, USART1, USART2, WWDG
10); 10);
11pub const SYSCFG_BASE: usize = 0x40013800;
12pub const EXTI_BASE: usize = 0x40013c00;
11pub const GPIO_BASE: usize = 0x40020000; 13pub const GPIO_BASE: usize = 0x40020000;
12pub const GPIO_STRIDE: usize = 0x400; 14pub const GPIO_STRIDE: usize = 0x400;
13 15
diff --git a/embassy-stm32/src/chip/stm32f410tb.rs b/embassy-stm32/src/chip/stm32f410tb.rs
index e34973843..e9035f1a3 100644
--- a/embassy-stm32/src/chip/stm32f410tb.rs
+++ b/embassy-stm32/src/chip/stm32f410tb.rs
@@ -1,13 +1,15 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 7 PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
8 PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SYSCFG, TIM1, TIM11, TIM5, 8 PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SYSCFG, TIM1, TIM11,
9 TIM6, TIM9, USART1, USART2, WWDG 9 TIM5, TIM6, TIM9, USART1, USART2, WWDG
10); 10);
11pub const SYSCFG_BASE: usize = 0x40013800;
12pub const EXTI_BASE: usize = 0x40013c00;
11pub const GPIO_BASE: usize = 0x40020000; 13pub const GPIO_BASE: usize = 0x40020000;
12pub const GPIO_STRIDE: usize = 0x400; 14pub const GPIO_STRIDE: usize = 0x400;
13 15
diff --git a/embassy-stm32/src/chip/stm32f411cc.rs b/embassy-stm32/src/chip/stm32f411cc.rs
index 5f0dbec63..1cad69bae 100644
--- a/embassy-stm32/src/chip/stm32f411cc.rs
+++ b/embassy-stm32/src/chip/stm32f411cc.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10,
11 TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f411ce.rs b/embassy-stm32/src/chip/stm32f411ce.rs
index 5f0dbec63..1cad69bae 100644
--- a/embassy-stm32/src/chip/stm32f411ce.rs
+++ b/embassy-stm32/src/chip/stm32f411ce.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10,
11 TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f411rc.rs b/embassy-stm32/src/chip/stm32f411rc.rs
index 5f0dbec63..1cad69bae 100644
--- a/embassy-stm32/src/chip/stm32f411rc.rs
+++ b/embassy-stm32/src/chip/stm32f411rc.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10,
11 TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f411re.rs b/embassy-stm32/src/chip/stm32f411re.rs
index 5f0dbec63..1cad69bae 100644
--- a/embassy-stm32/src/chip/stm32f411re.rs
+++ b/embassy-stm32/src/chip/stm32f411re.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10,
11 TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f411vc.rs b/embassy-stm32/src/chip/stm32f411vc.rs
index 5f0dbec63..1cad69bae 100644
--- a/embassy-stm32/src/chip/stm32f411vc.rs
+++ b/embassy-stm32/src/chip/stm32f411vc.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10,
11 TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f411ve.rs b/embassy-stm32/src/chip/stm32f411ve.rs
index 5f0dbec63..1cad69bae 100644
--- a/embassy-stm32/src/chip/stm32f411ve.rs
+++ b/embassy-stm32/src/chip/stm32f411ve.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, 4 EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10,
5 PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, 5 PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11,
6 PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, 6 PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12,
7 PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, 7 PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13,
8 PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, 8 PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14,
9 PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, I2C1, 9 PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15,
10 I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, 10 I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10,
11 TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG 11 TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f412ce.rs b/embassy-stm32/src/chip/stm32f412ce.rs
index f6749d135..5943ee391 100644
--- a/embassy-stm32/src/chip/stm32f412ce.rs
+++ b/embassy-stm32/src/chip/stm32f412ce.rs
@@ -1,14 +1,16 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10,
8 PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, 8 PH11, PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3,
9 SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 9 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
10 TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 10 TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
11); 11);
12pub const SYSCFG_BASE: usize = 0x40013800;
13pub const EXTI_BASE: usize = 0x40013c00;
12pub const GPIO_BASE: usize = 0x40020000; 14pub const GPIO_BASE: usize = 0x40020000;
13pub const GPIO_STRIDE: usize = 0x400; 15pub const GPIO_STRIDE: usize = 0x400;
14 16
diff --git a/embassy-stm32/src/chip/stm32f412cg.rs b/embassy-stm32/src/chip/stm32f412cg.rs
index f6749d135..5943ee391 100644
--- a/embassy-stm32/src/chip/stm32f412cg.rs
+++ b/embassy-stm32/src/chip/stm32f412cg.rs
@@ -1,14 +1,16 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10,
8 PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, 8 PH11, PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3,
9 SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 9 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
10 TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 10 TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
11); 11);
12pub const SYSCFG_BASE: usize = 0x40013800;
13pub const EXTI_BASE: usize = 0x40013c00;
12pub const GPIO_BASE: usize = 0x40020000; 14pub const GPIO_BASE: usize = 0x40020000;
13pub const GPIO_STRIDE: usize = 0x400; 15pub const GPIO_STRIDE: usize = 0x400;
14 16
diff --git a/embassy-stm32/src/chip/stm32f412re.rs b/embassy-stm32/src/chip/stm32f412re.rs
index 4fda48d4a..b668b84e8 100644
--- a/embassy-stm32/src/chip/stm32f412re.rs
+++ b/embassy-stm32/src/chip/stm32f412re.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 8 PD11, PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
9 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, 9 PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3,
10 SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 10 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
11 TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 11 TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f412rg.rs b/embassy-stm32/src/chip/stm32f412rg.rs
index 4fda48d4a..b668b84e8 100644
--- a/embassy-stm32/src/chip/stm32f412rg.rs
+++ b/embassy-stm32/src/chip/stm32f412rg.rs
@@ -1,15 +1,17 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 8 PD11, PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
9 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, 9 PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3,
10 SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 10 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
11 TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 11 TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40013800;
14pub const EXTI_BASE: usize = 0x40013c00;
13pub const GPIO_BASE: usize = 0x40020000; 15pub const GPIO_BASE: usize = 0x40020000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
15 17
diff --git a/embassy-stm32/src/chip/stm32f412ve.rs b/embassy-stm32/src/chip/stm32f412ve.rs
index 798ca7f41..2c3dda1c8 100644
--- a/embassy-stm32/src/chip/stm32f412ve.rs
+++ b/embassy-stm32/src/chip/stm32f412ve.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, 9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12,
10 PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, 10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13,
11 PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, 11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14,
12 I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, 12 PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5,
13 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, 13 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
14 USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 14 TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f412vg.rs b/embassy-stm32/src/chip/stm32f412vg.rs
index 798ca7f41..2c3dda1c8 100644
--- a/embassy-stm32/src/chip/stm32f412vg.rs
+++ b/embassy-stm32/src/chip/stm32f412vg.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, 9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12,
10 PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, 10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13,
11 PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, 11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14,
12 I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, 12 PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5,
13 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, 13 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
14 USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 14 TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f412ze.rs b/embassy-stm32/src/chip/stm32f412ze.rs
index 798ca7f41..2c3dda1c8 100644
--- a/embassy-stm32/src/chip/stm32f412ze.rs
+++ b/embassy-stm32/src/chip/stm32f412ze.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, 9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12,
10 PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, 10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13,
11 PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, 11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14,
12 I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, 12 PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5,
13 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, 13 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
14 USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 14 TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f412zg.rs b/embassy-stm32/src/chip/stm32f412zg.rs
index 798ca7f41..2c3dda1c8 100644
--- a/embassy-stm32/src/chip/stm32f412zg.rs
+++ b/embassy-stm32/src/chip/stm32f412zg.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, 9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12,
10 PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, 10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13,
11 PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, 11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14,
12 I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, 12 PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5,
13 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, 13 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
14 USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 14 TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f413cg.rs b/embassy-stm32/src/chip/stm32f413cg.rs
index 485fce7b9..f15f2ed3c 100644
--- a/embassy-stm32/src/chip/stm32f413cg.rs
+++ b/embassy-stm32/src/chip/stm32f413cg.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, 12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
13 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 13 SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7,
14 TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG 14 TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f413ch.rs b/embassy-stm32/src/chip/stm32f413ch.rs
index 485fce7b9..f15f2ed3c 100644
--- a/embassy-stm32/src/chip/stm32f413ch.rs
+++ b/embassy-stm32/src/chip/stm32f413ch.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, 12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
13 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 13 SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7,
14 TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG 14 TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f413mg.rs b/embassy-stm32/src/chip/stm32f413mg.rs
index d0a83492e..7ea6dd58f 100644
--- a/embassy-stm32/src/chip/stm32f413mg.rs
+++ b/embassy-stm32/src/chip/stm32f413mg.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, 12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2,
13 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f413mh.rs b/embassy-stm32/src/chip/stm32f413mh.rs
index d0a83492e..7ea6dd58f 100644
--- a/embassy-stm32/src/chip/stm32f413mh.rs
+++ b/embassy-stm32/src/chip/stm32f413mh.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, 12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2,
13 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f413rg.rs b/embassy-stm32/src/chip/stm32f413rg.rs
index d0a83492e..7ea6dd58f 100644
--- a/embassy-stm32/src/chip/stm32f413rg.rs
+++ b/embassy-stm32/src/chip/stm32f413rg.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, 12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2,
13 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f413rh.rs b/embassy-stm32/src/chip/stm32f413rh.rs
index d0a83492e..7ea6dd58f 100644
--- a/embassy-stm32/src/chip/stm32f413rh.rs
+++ b/embassy-stm32/src/chip/stm32f413rh.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, 12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2,
13 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f413vg.rs b/embassy-stm32/src/chip/stm32f413vg.rs
index e2d6a981b..1894feacb 100644
--- a/embassy-stm32/src/chip/stm32f413vg.rs
+++ b/embassy-stm32/src/chip/stm32f413vg.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, 12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2,
13 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, USART6, 14 TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USART6, USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f413vh.rs b/embassy-stm32/src/chip/stm32f413vh.rs
index e2d6a981b..1894feacb 100644
--- a/embassy-stm32/src/chip/stm32f413vh.rs
+++ b/embassy-stm32/src/chip/stm32f413vh.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, 12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2,
13 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, USART6, 14 TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USART6, USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f413zg.rs b/embassy-stm32/src/chip/stm32f413zg.rs
index e2d6a981b..1894feacb 100644
--- a/embassy-stm32/src/chip/stm32f413zg.rs
+++ b/embassy-stm32/src/chip/stm32f413zg.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, 12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2,
13 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, USART6, 14 TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USART6, USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f413zh.rs b/embassy-stm32/src/chip/stm32f413zh.rs
index e2d6a981b..1894feacb 100644
--- a/embassy-stm32/src/chip/stm32f413zh.rs
+++ b/embassy-stm32/src/chip/stm32f413zh.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, 12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2,
13 SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, USART6, 14 TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USART6, USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f415og.rs b/embassy-stm32/src/chip/stm32f415og.rs
index cd801d6cd..1c3243ed1 100644
--- a/embassy-stm32/src/chip/stm32f415og.rs
+++ b/embassy-stm32/src/chip/stm32f415og.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, 12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14,
13 HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, 13 PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10,
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f415rg.rs b/embassy-stm32/src/chip/stm32f415rg.rs
index cd801d6cd..1c3243ed1 100644
--- a/embassy-stm32/src/chip/stm32f415rg.rs
+++ b/embassy-stm32/src/chip/stm32f415rg.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, 12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14,
13 HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, 13 PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10,
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f415vg.rs b/embassy-stm32/src/chip/stm32f415vg.rs
index cd801d6cd..1c3243ed1 100644
--- a/embassy-stm32/src/chip/stm32f415vg.rs
+++ b/embassy-stm32/src/chip/stm32f415vg.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, 12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14,
13 HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, 13 PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10,
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f415zg.rs b/embassy-stm32/src/chip/stm32f415zg.rs
index cd801d6cd..1c3243ed1 100644
--- a/embassy-stm32/src/chip/stm32f415zg.rs
+++ b/embassy-stm32/src/chip/stm32f415zg.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, PA0, PA1, PA2, PA3, PA4, PA5, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4,
5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
11 PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, 11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13,
12 PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, 12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14,
13 HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, 13 PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10,
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f417ie.rs b/embassy-stm32/src/chip/stm32f417ie.rs
index 034543078..f99ca7b1b 100644
--- a/embassy-stm32/src/chip/stm32f417ie.rs
+++ b/embassy-stm32/src/chip/stm32f417ie.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1,
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f417ig.rs b/embassy-stm32/src/chip/stm32f417ig.rs
index 034543078..f99ca7b1b 100644
--- a/embassy-stm32/src/chip/stm32f417ig.rs
+++ b/embassy-stm32/src/chip/stm32f417ig.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1,
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f417ve.rs b/embassy-stm32/src/chip/stm32f417ve.rs
index 034543078..f99ca7b1b 100644
--- a/embassy-stm32/src/chip/stm32f417ve.rs
+++ b/embassy-stm32/src/chip/stm32f417ve.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1,
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f417vg.rs b/embassy-stm32/src/chip/stm32f417vg.rs
index 034543078..f99ca7b1b 100644
--- a/embassy-stm32/src/chip/stm32f417vg.rs
+++ b/embassy-stm32/src/chip/stm32f417vg.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1,
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f417ze.rs b/embassy-stm32/src/chip/stm32f417ze.rs
index 034543078..f99ca7b1b 100644
--- a/embassy-stm32/src/chip/stm32f417ze.rs
+++ b/embassy-stm32/src/chip/stm32f417ze.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1,
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f417zg.rs b/embassy-stm32/src/chip/stm32f417zg.rs
index 034543078..f99ca7b1b 100644
--- a/embassy-stm32/src/chip/stm32f417zg.rs
+++ b/embassy-stm32/src/chip/stm32f417zg.rs
@@ -1,19 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1,
14 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 14 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
15 USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 15 UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f423ch.rs b/embassy-stm32/src/chip/stm32f423ch.rs
index ddb9ee0f5..54d5dbae6 100644
--- a/embassy-stm32/src/chip/stm32f423ch.rs
+++ b/embassy-stm32/src/chip/stm32f423ch.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -13,6 +13,8 @@ peripherals!(
13 SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 13 SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7,
14 TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG 14 TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f423mh.rs b/embassy-stm32/src/chip/stm32f423mh.rs
index adedcbc23..a033c03ba 100644
--- a/embassy-stm32/src/chip/stm32f423mh.rs
+++ b/embassy-stm32/src/chip/stm32f423mh.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -13,6 +13,8 @@ peripherals!(
13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, 13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f423rh.rs b/embassy-stm32/src/chip/stm32f423rh.rs
index adedcbc23..a033c03ba 100644
--- a/embassy-stm32/src/chip/stm32f423rh.rs
+++ b/embassy-stm32/src/chip/stm32f423rh.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -13,6 +13,8 @@ peripherals!(
13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, 13 SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f423vh.rs b/embassy-stm32/src/chip/stm32f423vh.rs
index 6c531d7f2..6f0c5bd6e 100644
--- a/embassy-stm32/src/chip/stm32f423vh.rs
+++ b/embassy-stm32/src/chip/stm32f423vh.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, 14 TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3,
15 USART6, USB_OTG_FS, WWDG 15 USART6, USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f423zh.rs b/embassy-stm32/src/chip/stm32f423zh.rs
index 6c531d7f2..6f0c5bd6e 100644
--- a/embassy-stm32/src/chip/stm32f423zh.rs
+++ b/embassy-stm32/src/chip/stm32f423zh.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, FMPI2C1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,6 +14,8 @@ peripherals!(
14 TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, 14 TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3,
15 USART6, USB_OTG_FS, WWDG 15 USART6, USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
17pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
19 21
diff --git a/embassy-stm32/src/chip/stm32f427ag.rs b/embassy-stm32/src/chip/stm32f427ag.rs
index 0251a0bca..9d2e19b80 100644
--- a/embassy-stm32/src/chip/stm32f427ag.rs
+++ b/embassy-stm32/src/chip/stm32f427ag.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f427ai.rs b/embassy-stm32/src/chip/stm32f427ai.rs
index 0251a0bca..9d2e19b80 100644
--- a/embassy-stm32/src/chip/stm32f427ai.rs
+++ b/embassy-stm32/src/chip/stm32f427ai.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f427ig.rs b/embassy-stm32/src/chip/stm32f427ig.rs
index 9111a78cc..2e18827e7 100644
--- a/embassy-stm32/src/chip/stm32f427ig.rs
+++ b/embassy-stm32/src/chip/stm32f427ig.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f427ii.rs b/embassy-stm32/src/chip/stm32f427ii.rs
index 9111a78cc..2e18827e7 100644
--- a/embassy-stm32/src/chip/stm32f427ii.rs
+++ b/embassy-stm32/src/chip/stm32f427ii.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f427vg.rs b/embassy-stm32/src/chip/stm32f427vg.rs
index fdebb3b98..67ee554a0 100644
--- a/embassy-stm32/src/chip/stm32f427vg.rs
+++ b/embassy-stm32/src/chip/stm32f427vg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 16 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
17 UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f427vi.rs b/embassy-stm32/src/chip/stm32f427vi.rs
index fdebb3b98..67ee554a0 100644
--- a/embassy-stm32/src/chip/stm32f427vi.rs
+++ b/embassy-stm32/src/chip/stm32f427vi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, 16 TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5,
17 UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f427zg.rs b/embassy-stm32/src/chip/stm32f427zg.rs
index 9111a78cc..2e18827e7 100644
--- a/embassy-stm32/src/chip/stm32f427zg.rs
+++ b/embassy-stm32/src/chip/stm32f427zg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f427zi.rs b/embassy-stm32/src/chip/stm32f427zi.rs
index 9111a78cc..2e18827e7 100644
--- a/embassy-stm32/src/chip/stm32f427zi.rs
+++ b/embassy-stm32/src/chip/stm32f427zi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429ag.rs b/embassy-stm32/src/chip/stm32f429ag.rs
index 408655851..8ae247ad1 100644
--- a/embassy-stm32/src/chip/stm32f429ag.rs
+++ b/embassy-stm32/src/chip/stm32f429ag.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429ai.rs b/embassy-stm32/src/chip/stm32f429ai.rs
index 408655851..8ae247ad1 100644
--- a/embassy-stm32/src/chip/stm32f429ai.rs
+++ b/embassy-stm32/src/chip/stm32f429ai.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429be.rs b/embassy-stm32/src/chip/stm32f429be.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429be.rs
+++ b/embassy-stm32/src/chip/stm32f429be.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429bg.rs b/embassy-stm32/src/chip/stm32f429bg.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429bg.rs
+++ b/embassy-stm32/src/chip/stm32f429bg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429bi.rs b/embassy-stm32/src/chip/stm32f429bi.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429bi.rs
+++ b/embassy-stm32/src/chip/stm32f429bi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429ie.rs b/embassy-stm32/src/chip/stm32f429ie.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429ie.rs
+++ b/embassy-stm32/src/chip/stm32f429ie.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429ig.rs b/embassy-stm32/src/chip/stm32f429ig.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429ig.rs
+++ b/embassy-stm32/src/chip/stm32f429ig.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429ii.rs b/embassy-stm32/src/chip/stm32f429ii.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429ii.rs
+++ b/embassy-stm32/src/chip/stm32f429ii.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429ne.rs b/embassy-stm32/src/chip/stm32f429ne.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429ne.rs
+++ b/embassy-stm32/src/chip/stm32f429ne.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429ng.rs b/embassy-stm32/src/chip/stm32f429ng.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429ng.rs
+++ b/embassy-stm32/src/chip/stm32f429ng.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429ni.rs b/embassy-stm32/src/chip/stm32f429ni.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429ni.rs
+++ b/embassy-stm32/src/chip/stm32f429ni.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429ve.rs b/embassy-stm32/src/chip/stm32f429ve.rs
index f9532b2d1..4b609740f 100644
--- a/embassy-stm32/src/chip/stm32f429ve.rs
+++ b/embassy-stm32/src/chip/stm32f429ve.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429vg.rs b/embassy-stm32/src/chip/stm32f429vg.rs
index f9532b2d1..4b609740f 100644
--- a/embassy-stm32/src/chip/stm32f429vg.rs
+++ b/embassy-stm32/src/chip/stm32f429vg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429vi.rs b/embassy-stm32/src/chip/stm32f429vi.rs
index f9532b2d1..4b609740f 100644
--- a/embassy-stm32/src/chip/stm32f429vi.rs
+++ b/embassy-stm32/src/chip/stm32f429vi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429ze.rs b/embassy-stm32/src/chip/stm32f429ze.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429ze.rs
+++ b/embassy-stm32/src/chip/stm32f429ze.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429zg.rs b/embassy-stm32/src/chip/stm32f429zg.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429zg.rs
+++ b/embassy-stm32/src/chip/stm32f429zg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f429zi.rs b/embassy-stm32/src/chip/stm32f429zi.rs
index 1a285e03a..a1c7ae71b 100644
--- a/embassy-stm32/src/chip/stm32f429zi.rs
+++ b/embassy-stm32/src/chip/stm32f429zi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f437ai.rs b/embassy-stm32/src/chip/stm32f437ai.rs
index 14d3863ed..8b1eb9e33 100644
--- a/embassy-stm32/src/chip/stm32f437ai.rs
+++ b/embassy-stm32/src/chip/stm32f437ai.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5,
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f437ig.rs b/embassy-stm32/src/chip/stm32f437ig.rs
index e7eec4f5b..198585d78 100644
--- a/embassy-stm32/src/chip/stm32f437ig.rs
+++ b/embassy-stm32/src/chip/stm32f437ig.rs
@@ -1,21 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5,
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG
18); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
21 24
diff --git a/embassy-stm32/src/chip/stm32f437ii.rs b/embassy-stm32/src/chip/stm32f437ii.rs
index e7eec4f5b..198585d78 100644
--- a/embassy-stm32/src/chip/stm32f437ii.rs
+++ b/embassy-stm32/src/chip/stm32f437ii.rs
@@ -1,21 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5,
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG
18); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
21 24
diff --git a/embassy-stm32/src/chip/stm32f437vg.rs b/embassy-stm32/src/chip/stm32f437vg.rs
index a570e9608..b1d2e290f 100644
--- a/embassy-stm32/src/chip/stm32f437vg.rs
+++ b/embassy-stm32/src/chip/stm32f437vg.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG,
16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f437vi.rs b/embassy-stm32/src/chip/stm32f437vi.rs
index a570e9608..b1d2e290f 100644
--- a/embassy-stm32/src/chip/stm32f437vi.rs
+++ b/embassy-stm32/src/chip/stm32f437vi.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG,
16 TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f437zg.rs b/embassy-stm32/src/chip/stm32f437zg.rs
index e7eec4f5b..198585d78 100644
--- a/embassy-stm32/src/chip/stm32f437zg.rs
+++ b/embassy-stm32/src/chip/stm32f437zg.rs
@@ -1,21 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5,
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG
18); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
21 24
diff --git a/embassy-stm32/src/chip/stm32f437zi.rs b/embassy-stm32/src/chip/stm32f437zi.rs
index e7eec4f5b..198585d78 100644
--- a/embassy-stm32/src/chip/stm32f437zi.rs
+++ b/embassy-stm32/src/chip/stm32f437zi.rs
@@ -1,21 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5,
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG
18); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
21 24
diff --git a/embassy-stm32/src/chip/stm32f439ai.rs b/embassy-stm32/src/chip/stm32f439ai.rs
index 6475617fe..b0ff8fa35 100644
--- a/embassy-stm32/src/chip/stm32f439ai.rs
+++ b/embassy-stm32/src/chip/stm32f439ai.rs
@@ -1,21 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG
18); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
21 24
diff --git a/embassy-stm32/src/chip/stm32f439bg.rs b/embassy-stm32/src/chip/stm32f439bg.rs
index 11fbc8adc..eec3a3f65 100644
--- a/embassy-stm32/src/chip/stm32f439bg.rs
+++ b/embassy-stm32/src/chip/stm32f439bg.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f439bi.rs b/embassy-stm32/src/chip/stm32f439bi.rs
index 11fbc8adc..eec3a3f65 100644
--- a/embassy-stm32/src/chip/stm32f439bi.rs
+++ b/embassy-stm32/src/chip/stm32f439bi.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f439ig.rs b/embassy-stm32/src/chip/stm32f439ig.rs
index 11fbc8adc..eec3a3f65 100644
--- a/embassy-stm32/src/chip/stm32f439ig.rs
+++ b/embassy-stm32/src/chip/stm32f439ig.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f439ii.rs b/embassy-stm32/src/chip/stm32f439ii.rs
index 11fbc8adc..eec3a3f65 100644
--- a/embassy-stm32/src/chip/stm32f439ii.rs
+++ b/embassy-stm32/src/chip/stm32f439ii.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f439ng.rs b/embassy-stm32/src/chip/stm32f439ng.rs
index 11fbc8adc..eec3a3f65 100644
--- a/embassy-stm32/src/chip/stm32f439ng.rs
+++ b/embassy-stm32/src/chip/stm32f439ng.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f439ni.rs b/embassy-stm32/src/chip/stm32f439ni.rs
index 11fbc8adc..eec3a3f65 100644
--- a/embassy-stm32/src/chip/stm32f439ni.rs
+++ b/embassy-stm32/src/chip/stm32f439ni.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f439vg.rs b/embassy-stm32/src/chip/stm32f439vg.rs
index b195f3ac6..8dfb7bdbc 100644
--- a/embassy-stm32/src/chip/stm32f439vg.rs
+++ b/embassy-stm32/src/chip/stm32f439vg.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f439vi.rs b/embassy-stm32/src/chip/stm32f439vi.rs
index b195f3ac6..8dfb7bdbc 100644
--- a/embassy-stm32/src/chip/stm32f439vi.rs
+++ b/embassy-stm32/src/chip/stm32f439vi.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f439zg.rs b/embassy-stm32/src/chip/stm32f439zg.rs
index 11fbc8adc..eec3a3f65 100644
--- a/embassy-stm32/src/chip/stm32f439zg.rs
+++ b/embassy-stm32/src/chip/stm32f439zg.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f439zi.rs b/embassy-stm32/src/chip/stm32f439zi.rs
index 11fbc8adc..eec3a3f65 100644
--- a/embassy-stm32/src/chip/stm32f439zi.rs
+++ b/embassy-stm32/src/chip/stm32f439zi.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, 16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6,
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f446mc.rs b/embassy-stm32/src/chip/stm32f446mc.rs
index acf4a3968..b4f048cab 100644
--- a/embassy-stm32/src/chip/stm32f446mc.rs
+++ b/embassy-stm32/src/chip/stm32f446mc.rs
@@ -1,18 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1,
13 SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
15 WWDG
15); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
18 21
diff --git a/embassy-stm32/src/chip/stm32f446me.rs b/embassy-stm32/src/chip/stm32f446me.rs
index acf4a3968..b4f048cab 100644
--- a/embassy-stm32/src/chip/stm32f446me.rs
+++ b/embassy-stm32/src/chip/stm32f446me.rs
@@ -1,18 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1,
13 SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
15 WWDG
15); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
18 21
diff --git a/embassy-stm32/src/chip/stm32f446rc.rs b/embassy-stm32/src/chip/stm32f446rc.rs
index 6392b7681..222dcfb80 100644
--- a/embassy-stm32/src/chip/stm32f446rc.rs
+++ b/embassy-stm32/src/chip/stm32f446rc.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SDIO, SPDIFRX, SPI1, SPI2, SPI3, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SDIO, SPDIFRX, SPI1, SPI2,
13 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 13 SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7,
14 TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 14 TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f446re.rs b/embassy-stm32/src/chip/stm32f446re.rs
index 6392b7681..222dcfb80 100644
--- a/embassy-stm32/src/chip/stm32f446re.rs
+++ b/embassy-stm32/src/chip/stm32f446re.rs
@@ -1,18 +1,20 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SDIO, SPDIFRX, SPI1, SPI2, SPI3, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SDIO, SPDIFRX, SPI1, SPI2,
13 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 13 SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7,
14 TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 14 TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40013800;
17pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 18pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
18 20
diff --git a/embassy-stm32/src/chip/stm32f446vc.rs b/embassy-stm32/src/chip/stm32f446vc.rs
index acf4a3968..b4f048cab 100644
--- a/embassy-stm32/src/chip/stm32f446vc.rs
+++ b/embassy-stm32/src/chip/stm32f446vc.rs
@@ -1,18 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1,
13 SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
15 WWDG
15); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
18 21
diff --git a/embassy-stm32/src/chip/stm32f446ve.rs b/embassy-stm32/src/chip/stm32f446ve.rs
index acf4a3968..b4f048cab 100644
--- a/embassy-stm32/src/chip/stm32f446ve.rs
+++ b/embassy-stm32/src/chip/stm32f446ve.rs
@@ -1,18 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1,
13 SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
15 WWDG
15); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
18 21
diff --git a/embassy-stm32/src/chip/stm32f446zc.rs b/embassy-stm32/src/chip/stm32f446zc.rs
index acf4a3968..b4f048cab 100644
--- a/embassy-stm32/src/chip/stm32f446zc.rs
+++ b/embassy-stm32/src/chip/stm32f446zc.rs
@@ -1,18 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1,
13 SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
15 WWDG
15); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
18 21
diff --git a/embassy-stm32/src/chip/stm32f446ze.rs b/embassy-stm32/src/chip/stm32f446ze.rs
index acf4a3968..b4f048cab 100644
--- a/embassy-stm32/src/chip/stm32f446ze.rs
+++ b/embassy-stm32/src/chip/stm32f446ze.rs
@@ -1,18 +1,21 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, FMPI2C1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, SPI2, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1,
13 SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 13 SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
14 TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 14 TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
15 WWDG
15); 16);
17pub const SYSCFG_BASE: usize = 0x40013800;
18pub const EXTI_BASE: usize = 0x40013c00;
16pub const GPIO_BASE: usize = 0x40020000; 19pub const GPIO_BASE: usize = 0x40020000;
17pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
18 21
diff --git a/embassy-stm32/src/chip/stm32f469ae.rs b/embassy-stm32/src/chip/stm32f469ae.rs
index a9503f67d..94e2689fc 100644
--- a/embassy-stm32/src/chip/stm32f469ae.rs
+++ b/embassy-stm32/src/chip/stm32f469ae.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, 13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14,
14 PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, 14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15,
15 I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, 15 I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6,
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f469ag.rs b/embassy-stm32/src/chip/stm32f469ag.rs
index a9503f67d..94e2689fc 100644
--- a/embassy-stm32/src/chip/stm32f469ag.rs
+++ b/embassy-stm32/src/chip/stm32f469ag.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, 13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14,
14 PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, 14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15,
15 I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, 15 I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6,
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f469ai.rs b/embassy-stm32/src/chip/stm32f469ai.rs
index a9503f67d..94e2689fc 100644
--- a/embassy-stm32/src/chip/stm32f469ai.rs
+++ b/embassy-stm32/src/chip/stm32f469ai.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, 13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14,
14 PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, 14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15,
15 I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, 15 I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6,
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f469be.rs b/embassy-stm32/src/chip/stm32f469be.rs
index 53bd9fd98..ccfe25ded 100644
--- a/embassy-stm32/src/chip/stm32f469be.rs
+++ b/embassy-stm32/src/chip/stm32f469be.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -17,6 +17,8 @@ peripherals!(
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG 18 WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f469bg.rs b/embassy-stm32/src/chip/stm32f469bg.rs
index 53bd9fd98..ccfe25ded 100644
--- a/embassy-stm32/src/chip/stm32f469bg.rs
+++ b/embassy-stm32/src/chip/stm32f469bg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -17,6 +17,8 @@ peripherals!(
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG 18 WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f469bi.rs b/embassy-stm32/src/chip/stm32f469bi.rs
index 53bd9fd98..ccfe25ded 100644
--- a/embassy-stm32/src/chip/stm32f469bi.rs
+++ b/embassy-stm32/src/chip/stm32f469bi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -17,6 +17,8 @@ peripherals!(
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG 18 WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f469ie.rs b/embassy-stm32/src/chip/stm32f469ie.rs
index 53bd9fd98..ccfe25ded 100644
--- a/embassy-stm32/src/chip/stm32f469ie.rs
+++ b/embassy-stm32/src/chip/stm32f469ie.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -17,6 +17,8 @@ peripherals!(
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG 18 WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f469ig.rs b/embassy-stm32/src/chip/stm32f469ig.rs
index 53bd9fd98..ccfe25ded 100644
--- a/embassy-stm32/src/chip/stm32f469ig.rs
+++ b/embassy-stm32/src/chip/stm32f469ig.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -17,6 +17,8 @@ peripherals!(
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG 18 WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f469ii.rs b/embassy-stm32/src/chip/stm32f469ii.rs
index 53bd9fd98..ccfe25ded 100644
--- a/embassy-stm32/src/chip/stm32f469ii.rs
+++ b/embassy-stm32/src/chip/stm32f469ii.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -17,6 +17,8 @@ peripherals!(
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG 18 WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f469ne.rs b/embassy-stm32/src/chip/stm32f469ne.rs
index 53bd9fd98..ccfe25ded 100644
--- a/embassy-stm32/src/chip/stm32f469ne.rs
+++ b/embassy-stm32/src/chip/stm32f469ne.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -17,6 +17,8 @@ peripherals!(
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG 18 WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f469ng.rs b/embassy-stm32/src/chip/stm32f469ng.rs
index 53bd9fd98..ccfe25ded 100644
--- a/embassy-stm32/src/chip/stm32f469ng.rs
+++ b/embassy-stm32/src/chip/stm32f469ng.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -17,6 +17,8 @@ peripherals!(
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG 18 WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f469ni.rs b/embassy-stm32/src/chip/stm32f469ni.rs
index 53bd9fd98..ccfe25ded 100644
--- a/embassy-stm32/src/chip/stm32f469ni.rs
+++ b/embassy-stm32/src/chip/stm32f469ni.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -17,6 +17,8 @@ peripherals!(
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG 18 WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f469ve.rs b/embassy-stm32/src/chip/stm32f469ve.rs
index 0d2dc9c93..ef61f2bde 100644
--- a/embassy-stm32/src/chip/stm32f469ve.rs
+++ b/embassy-stm32/src/chip/stm32f469ve.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, 13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14,
14 PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, 14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15,
15 I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, 15 I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f469vg.rs b/embassy-stm32/src/chip/stm32f469vg.rs
index 0d2dc9c93..ef61f2bde 100644
--- a/embassy-stm32/src/chip/stm32f469vg.rs
+++ b/embassy-stm32/src/chip/stm32f469vg.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, 13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14,
14 PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, 14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15,
15 I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, 15 I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f469vi.rs b/embassy-stm32/src/chip/stm32f469vi.rs
index 0d2dc9c93..ef61f2bde 100644
--- a/embassy-stm32/src/chip/stm32f469vi.rs
+++ b/embassy-stm32/src/chip/stm32f469vi.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, 13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14,
14 PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, 14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15,
15 I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, 15 I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f469ze.rs b/embassy-stm32/src/chip/stm32f469ze.rs
index aaeefbeb9..569912a38 100644
--- a/embassy-stm32/src/chip/stm32f469ze.rs
+++ b/embassy-stm32/src/chip/stm32f469ze.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, 13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14,
14 PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, 14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15,
15 I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, 15 I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f469zg.rs b/embassy-stm32/src/chip/stm32f469zg.rs
index aaeefbeb9..569912a38 100644
--- a/embassy-stm32/src/chip/stm32f469zg.rs
+++ b/embassy-stm32/src/chip/stm32f469zg.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, 13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14,
14 PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, 14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15,
15 I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, 15 I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f469zi.rs b/embassy-stm32/src/chip/stm32f469zi.rs
index aaeefbeb9..569912a38 100644
--- a/embassy-stm32/src/chip/stm32f469zi.rs
+++ b/embassy-stm32/src/chip/stm32f469zi.rs
@@ -1,21 +1,23 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, 13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14,
14 PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, I2C1, 14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15,
15 I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, 15 I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4,
16 TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f479ag.rs b/embassy-stm32/src/chip/stm32f479ag.rs
index 110026c82..6cea1e1df 100644
--- a/embassy-stm32/src/chip/stm32f479ag.rs
+++ b/embassy-stm32/src/chip/stm32f479ag.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -17,6 +17,8 @@ peripherals!(
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG 18 WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f479ai.rs b/embassy-stm32/src/chip/stm32f479ai.rs
index 110026c82..6cea1e1df 100644
--- a/embassy-stm32/src/chip/stm32f479ai.rs
+++ b/embassy-stm32/src/chip/stm32f479ai.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -17,6 +17,8 @@ peripherals!(
17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, 17 TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS,
18 WWDG 18 WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f479bg.rs b/embassy-stm32/src/chip/stm32f479bg.rs
index d5133d313..40a58618b 100644
--- a/embassy-stm32/src/chip/stm32f479bg.rs
+++ b/embassy-stm32/src/chip/stm32f479bg.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3,
16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 16 SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, 17 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 USB_OTG_HS, WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f479bi.rs b/embassy-stm32/src/chip/stm32f479bi.rs
index d5133d313..40a58618b 100644
--- a/embassy-stm32/src/chip/stm32f479bi.rs
+++ b/embassy-stm32/src/chip/stm32f479bi.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3,
16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 16 SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, 17 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 USB_OTG_HS, WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f479ig.rs b/embassy-stm32/src/chip/stm32f479ig.rs
index d5133d313..40a58618b 100644
--- a/embassy-stm32/src/chip/stm32f479ig.rs
+++ b/embassy-stm32/src/chip/stm32f479ig.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3,
16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 16 SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, 17 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 USB_OTG_HS, WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f479ii.rs b/embassy-stm32/src/chip/stm32f479ii.rs
index d5133d313..40a58618b 100644
--- a/embassy-stm32/src/chip/stm32f479ii.rs
+++ b/embassy-stm32/src/chip/stm32f479ii.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3,
16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 16 SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, 17 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 USB_OTG_HS, WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f479ng.rs b/embassy-stm32/src/chip/stm32f479ng.rs
index d5133d313..40a58618b 100644
--- a/embassy-stm32/src/chip/stm32f479ng.rs
+++ b/embassy-stm32/src/chip/stm32f479ng.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3,
16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 16 SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, 17 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 USB_OTG_HS, WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f479ni.rs b/embassy-stm32/src/chip/stm32f479ni.rs
index d5133d313..40a58618b 100644
--- a/embassy-stm32/src/chip/stm32f479ni.rs
+++ b/embassy-stm32/src/chip/stm32f479ni.rs
@@ -1,22 +1,24 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, 13 PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13,
14 PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, 14 PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14,
15 HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, 15 PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3,
16 SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, 16 SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5,
17 TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, 17 TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS,
18 USB_OTG_HS, WWDG 18 USB_OTG_HS, WWDG
19); 19);
20pub const SYSCFG_BASE: usize = 0x40013800;
21pub const EXTI_BASE: usize = 0x40013c00;
20pub const GPIO_BASE: usize = 0x40020000; 22pub const GPIO_BASE: usize = 0x40020000;
21pub const GPIO_STRIDE: usize = 0x400; 23pub const GPIO_STRIDE: usize = 0x400;
22 24
diff --git a/embassy-stm32/src/chip/stm32f479vg.rs b/embassy-stm32/src/chip/stm32f479vg.rs
index d5f37360a..25c960a4a 100644
--- a/embassy-stm32/src/chip/stm32f479vg.rs
+++ b/embassy-stm32/src/chip/stm32f479vg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f479vi.rs b/embassy-stm32/src/chip/stm32f479vi.rs
index d5f37360a..25c960a4a 100644
--- a/embassy-stm32/src/chip/stm32f479vi.rs
+++ b/embassy-stm32/src/chip/stm32f479vi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f479zg.rs b/embassy-stm32/src/chip/stm32f479zg.rs
index 76134afa5..7e5ee3245 100644
--- a/embassy-stm32/src/chip/stm32f479zg.rs
+++ b/embassy-stm32/src/chip/stm32f479zg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32f479zi.rs b/embassy-stm32/src/chip/stm32f479zi.rs
index 76134afa5..7e5ee3245 100644
--- a/embassy-stm32/src/chip/stm32f479zi.rs
+++ b/embassy-stm32/src/chip/stm32f479zi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -16,6 +16,8 @@ peripherals!(
16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, 16 SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8,
17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG 17 TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG
18); 18);
19pub const SYSCFG_BASE: usize = 0x40013800;
20pub const EXTI_BASE: usize = 0x40013c00;
19pub const GPIO_BASE: usize = 0x40020000; 21pub const GPIO_BASE: usize = 0x40020000;
20pub const GPIO_STRIDE: usize = 0x400; 22pub const GPIO_STRIDE: usize = 0x400;
21 23
diff --git a/embassy-stm32/src/chip/stm32l412c8.rs b/embassy-stm32/src/chip/stm32l412c8.rs
index c20a8a60a..e319e06a7 100644
--- a/embassy-stm32/src/chip/stm32l412c8.rs
+++ b/embassy-stm32/src/chip/stm32l412c8.rs
@@ -1,16 +1,340 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
9 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, 9 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG,
10 SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, WWDG 10 RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB,
11 WWDG
11); 12);
13pub const SYSCFG_BASE: usize = 0x40010000;
14pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 15pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
17
18pub mod interrupt {
19 pub use cortex_m::interrupt::{CriticalSection, Mutex};
20 pub use embassy::interrupt::{declare, take, Interrupt};
21 pub use embassy_extras::interrupt::Priority4 as Priority;
22
23 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
24 #[allow(non_camel_case_types)]
25 enum InterruptEnum {
26 ADC1_2 = 18,
27 COMP = 64,
28 CRS = 82,
29 DMA1_Channel1 = 11,
30 DMA1_Channel2 = 12,
31 DMA1_Channel3 = 13,
32 DMA1_Channel4 = 14,
33 DMA1_Channel5 = 15,
34 DMA1_Channel6 = 16,
35 DMA1_Channel7 = 17,
36 DMA2_Channel1 = 56,
37 DMA2_Channel2 = 57,
38 DMA2_Channel3 = 58,
39 DMA2_Channel4 = 59,
40 DMA2_Channel5 = 60,
41 DMA2_Channel6 = 68,
42 DMA2_Channel7 = 69,
43 EXTI0 = 6,
44 EXTI1 = 7,
45 EXTI15_10 = 40,
46 EXTI2 = 8,
47 EXTI3 = 9,
48 EXTI4 = 10,
49 EXTI9_5 = 23,
50 FLASH = 4,
51 FPU = 81,
52 I2C1_ER = 32,
53 I2C1_EV = 31,
54 I2C2_ER = 34,
55 I2C2_EV = 33,
56 I2C3_ER = 73,
57 I2C3_EV = 72,
58 LPTIM1 = 65,
59 LPTIM2 = 66,
60 LPUART1 = 70,
61 PVD_PVM = 1,
62 QUADSPI = 71,
63 RCC = 5,
64 RNG = 80,
65 RTC_Alarm = 41,
66 RTC_WKUP = 3,
67 SPI1 = 35,
68 SPI2 = 36,
69 TAMP_STAMP = 2,
70 TIM1_BRK_TIM15 = 24,
71 TIM1_CC = 27,
72 TIM1_TRG_COM = 26,
73 TIM1_UP_TIM16 = 25,
74 TIM2 = 28,
75 TIM6 = 54,
76 TSC = 77,
77 USART1 = 37,
78 USART2 = 38,
79 USART3 = 39,
80 USB = 67,
81 WWDG = 0,
82 }
83 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
84 #[inline(always)]
85 fn number(self) -> u16 {
86 self as u16
87 }
88 }
89
90 declare!(ADC1_2);
91 declare!(COMP);
92 declare!(CRS);
93 declare!(DMA1_Channel1);
94 declare!(DMA1_Channel2);
95 declare!(DMA1_Channel3);
96 declare!(DMA1_Channel4);
97 declare!(DMA1_Channel5);
98 declare!(DMA1_Channel6);
99 declare!(DMA1_Channel7);
100 declare!(DMA2_Channel1);
101 declare!(DMA2_Channel2);
102 declare!(DMA2_Channel3);
103 declare!(DMA2_Channel4);
104 declare!(DMA2_Channel5);
105 declare!(DMA2_Channel6);
106 declare!(DMA2_Channel7);
107 declare!(EXTI0);
108 declare!(EXTI1);
109 declare!(EXTI15_10);
110 declare!(EXTI2);
111 declare!(EXTI3);
112 declare!(EXTI4);
113 declare!(EXTI9_5);
114 declare!(FLASH);
115 declare!(FPU);
116 declare!(I2C1_ER);
117 declare!(I2C1_EV);
118 declare!(I2C2_ER);
119 declare!(I2C2_EV);
120 declare!(I2C3_ER);
121 declare!(I2C3_EV);
122 declare!(LPTIM1);
123 declare!(LPTIM2);
124 declare!(LPUART1);
125 declare!(PVD_PVM);
126 declare!(QUADSPI);
127 declare!(RCC);
128 declare!(RNG);
129 declare!(RTC_Alarm);
130 declare!(RTC_WKUP);
131 declare!(SPI1);
132 declare!(SPI2);
133 declare!(TAMP_STAMP);
134 declare!(TIM1_BRK_TIM15);
135 declare!(TIM1_CC);
136 declare!(TIM1_TRG_COM);
137 declare!(TIM1_UP_TIM16);
138 declare!(TIM2);
139 declare!(TIM6);
140 declare!(TSC);
141 declare!(USART1);
142 declare!(USART2);
143 declare!(USART3);
144 declare!(USB);
145 declare!(WWDG);
146}
147mod interrupt_vector {
148 extern "C" {
149 fn ADC1_2();
150 fn COMP();
151 fn CRS();
152 fn DMA1_Channel1();
153 fn DMA1_Channel2();
154 fn DMA1_Channel3();
155 fn DMA1_Channel4();
156 fn DMA1_Channel5();
157 fn DMA1_Channel6();
158 fn DMA1_Channel7();
159 fn DMA2_Channel1();
160 fn DMA2_Channel2();
161 fn DMA2_Channel3();
162 fn DMA2_Channel4();
163 fn DMA2_Channel5();
164 fn DMA2_Channel6();
165 fn DMA2_Channel7();
166 fn EXTI0();
167 fn EXTI1();
168 fn EXTI15_10();
169 fn EXTI2();
170 fn EXTI3();
171 fn EXTI4();
172 fn EXTI9_5();
173 fn FLASH();
174 fn FPU();
175 fn I2C1_ER();
176 fn I2C1_EV();
177 fn I2C2_ER();
178 fn I2C2_EV();
179 fn I2C3_ER();
180 fn I2C3_EV();
181 fn LPTIM1();
182 fn LPTIM2();
183 fn LPUART1();
184 fn PVD_PVM();
185 fn QUADSPI();
186 fn RCC();
187 fn RNG();
188 fn RTC_Alarm();
189 fn RTC_WKUP();
190 fn SPI1();
191 fn SPI2();
192 fn TAMP_STAMP();
193 fn TIM1_BRK_TIM15();
194 fn TIM1_CC();
195 fn TIM1_TRG_COM();
196 fn TIM1_UP_TIM16();
197 fn TIM2();
198 fn TIM6();
199 fn TSC();
200 fn USART1();
201 fn USART2();
202 fn USART3();
203 fn USB();
204 fn WWDG();
205 }
206 pub union Vector {
207 _handler: unsafe extern "C" fn(),
208 _reserved: u32,
209 }
210 #[link_section = ".vector_table.interrupts"]
211 #[no_mangle]
212 pub static __INTERRUPTS: [Vector; 83] = [
213 Vector { _handler: WWDG },
214 Vector { _handler: PVD_PVM },
215 Vector {
216 _handler: TAMP_STAMP,
217 },
218 Vector { _handler: RTC_WKUP },
219 Vector { _handler: FLASH },
220 Vector { _handler: RCC },
221 Vector { _handler: EXTI0 },
222 Vector { _handler: EXTI1 },
223 Vector { _handler: EXTI2 },
224 Vector { _handler: EXTI3 },
225 Vector { _handler: EXTI4 },
226 Vector {
227 _handler: DMA1_Channel1,
228 },
229 Vector {
230 _handler: DMA1_Channel2,
231 },
232 Vector {
233 _handler: DMA1_Channel3,
234 },
235 Vector {
236 _handler: DMA1_Channel4,
237 },
238 Vector {
239 _handler: DMA1_Channel5,
240 },
241 Vector {
242 _handler: DMA1_Channel6,
243 },
244 Vector {
245 _handler: DMA1_Channel7,
246 },
247 Vector { _handler: ADC1_2 },
248 Vector { _reserved: 0 },
249 Vector { _reserved: 0 },
250 Vector { _reserved: 0 },
251 Vector { _reserved: 0 },
252 Vector { _handler: EXTI9_5 },
253 Vector {
254 _handler: TIM1_BRK_TIM15,
255 },
256 Vector {
257 _handler: TIM1_UP_TIM16,
258 },
259 Vector {
260 _handler: TIM1_TRG_COM,
261 },
262 Vector { _handler: TIM1_CC },
263 Vector { _handler: TIM2 },
264 Vector { _reserved: 0 },
265 Vector { _reserved: 0 },
266 Vector { _handler: I2C1_EV },
267 Vector { _handler: I2C1_ER },
268 Vector { _handler: I2C2_EV },
269 Vector { _handler: I2C2_ER },
270 Vector { _handler: SPI1 },
271 Vector { _handler: SPI2 },
272 Vector { _handler: USART1 },
273 Vector { _handler: USART2 },
274 Vector { _handler: USART3 },
275 Vector {
276 _handler: EXTI15_10,
277 },
278 Vector {
279 _handler: RTC_Alarm,
280 },
281 Vector { _reserved: 0 },
282 Vector { _reserved: 0 },
283 Vector { _reserved: 0 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _reserved: 0 },
293 Vector { _handler: TIM6 },
294 Vector { _reserved: 0 },
295 Vector {
296 _handler: DMA2_Channel1,
297 },
298 Vector {
299 _handler: DMA2_Channel2,
300 },
301 Vector {
302 _handler: DMA2_Channel3,
303 },
304 Vector {
305 _handler: DMA2_Channel4,
306 },
307 Vector {
308 _handler: DMA2_Channel5,
309 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _reserved: 0 },
313 Vector { _handler: COMP },
314 Vector { _handler: LPTIM1 },
315 Vector { _handler: LPTIM2 },
316 Vector { _handler: USB },
317 Vector {
318 _handler: DMA2_Channel6,
319 },
320 Vector {
321 _handler: DMA2_Channel7,
322 },
323 Vector { _handler: LPUART1 },
324 Vector { _handler: QUADSPI },
325 Vector { _handler: I2C3_EV },
326 Vector { _handler: I2C3_ER },
327 Vector { _reserved: 0 },
328 Vector { _reserved: 0 },
329 Vector { _reserved: 0 },
330 Vector { _handler: TSC },
331 Vector { _reserved: 0 },
332 Vector { _reserved: 0 },
333 Vector { _handler: RNG },
334 Vector { _handler: FPU },
335 Vector { _handler: CRS },
336 ];
337}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 338impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 339impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 340impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l412cb.rs b/embassy-stm32/src/chip/stm32l412cb.rs
index c20a8a60a..e319e06a7 100644
--- a/embassy-stm32/src/chip/stm32l412cb.rs
+++ b/embassy-stm32/src/chip/stm32l412cb.rs
@@ -1,16 +1,340 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
9 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, 9 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG,
10 SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, WWDG 10 RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB,
11 WWDG
11); 12);
13pub const SYSCFG_BASE: usize = 0x40010000;
14pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 15pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
17
18pub mod interrupt {
19 pub use cortex_m::interrupt::{CriticalSection, Mutex};
20 pub use embassy::interrupt::{declare, take, Interrupt};
21 pub use embassy_extras::interrupt::Priority4 as Priority;
22
23 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
24 #[allow(non_camel_case_types)]
25 enum InterruptEnum {
26 ADC1_2 = 18,
27 COMP = 64,
28 CRS = 82,
29 DMA1_Channel1 = 11,
30 DMA1_Channel2 = 12,
31 DMA1_Channel3 = 13,
32 DMA1_Channel4 = 14,
33 DMA1_Channel5 = 15,
34 DMA1_Channel6 = 16,
35 DMA1_Channel7 = 17,
36 DMA2_Channel1 = 56,
37 DMA2_Channel2 = 57,
38 DMA2_Channel3 = 58,
39 DMA2_Channel4 = 59,
40 DMA2_Channel5 = 60,
41 DMA2_Channel6 = 68,
42 DMA2_Channel7 = 69,
43 EXTI0 = 6,
44 EXTI1 = 7,
45 EXTI15_10 = 40,
46 EXTI2 = 8,
47 EXTI3 = 9,
48 EXTI4 = 10,
49 EXTI9_5 = 23,
50 FLASH = 4,
51 FPU = 81,
52 I2C1_ER = 32,
53 I2C1_EV = 31,
54 I2C2_ER = 34,
55 I2C2_EV = 33,
56 I2C3_ER = 73,
57 I2C3_EV = 72,
58 LPTIM1 = 65,
59 LPTIM2 = 66,
60 LPUART1 = 70,
61 PVD_PVM = 1,
62 QUADSPI = 71,
63 RCC = 5,
64 RNG = 80,
65 RTC_Alarm = 41,
66 RTC_WKUP = 3,
67 SPI1 = 35,
68 SPI2 = 36,
69 TAMP_STAMP = 2,
70 TIM1_BRK_TIM15 = 24,
71 TIM1_CC = 27,
72 TIM1_TRG_COM = 26,
73 TIM1_UP_TIM16 = 25,
74 TIM2 = 28,
75 TIM6 = 54,
76 TSC = 77,
77 USART1 = 37,
78 USART2 = 38,
79 USART3 = 39,
80 USB = 67,
81 WWDG = 0,
82 }
83 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
84 #[inline(always)]
85 fn number(self) -> u16 {
86 self as u16
87 }
88 }
89
90 declare!(ADC1_2);
91 declare!(COMP);
92 declare!(CRS);
93 declare!(DMA1_Channel1);
94 declare!(DMA1_Channel2);
95 declare!(DMA1_Channel3);
96 declare!(DMA1_Channel4);
97 declare!(DMA1_Channel5);
98 declare!(DMA1_Channel6);
99 declare!(DMA1_Channel7);
100 declare!(DMA2_Channel1);
101 declare!(DMA2_Channel2);
102 declare!(DMA2_Channel3);
103 declare!(DMA2_Channel4);
104 declare!(DMA2_Channel5);
105 declare!(DMA2_Channel6);
106 declare!(DMA2_Channel7);
107 declare!(EXTI0);
108 declare!(EXTI1);
109 declare!(EXTI15_10);
110 declare!(EXTI2);
111 declare!(EXTI3);
112 declare!(EXTI4);
113 declare!(EXTI9_5);
114 declare!(FLASH);
115 declare!(FPU);
116 declare!(I2C1_ER);
117 declare!(I2C1_EV);
118 declare!(I2C2_ER);
119 declare!(I2C2_EV);
120 declare!(I2C3_ER);
121 declare!(I2C3_EV);
122 declare!(LPTIM1);
123 declare!(LPTIM2);
124 declare!(LPUART1);
125 declare!(PVD_PVM);
126 declare!(QUADSPI);
127 declare!(RCC);
128 declare!(RNG);
129 declare!(RTC_Alarm);
130 declare!(RTC_WKUP);
131 declare!(SPI1);
132 declare!(SPI2);
133 declare!(TAMP_STAMP);
134 declare!(TIM1_BRK_TIM15);
135 declare!(TIM1_CC);
136 declare!(TIM1_TRG_COM);
137 declare!(TIM1_UP_TIM16);
138 declare!(TIM2);
139 declare!(TIM6);
140 declare!(TSC);
141 declare!(USART1);
142 declare!(USART2);
143 declare!(USART3);
144 declare!(USB);
145 declare!(WWDG);
146}
147mod interrupt_vector {
148 extern "C" {
149 fn ADC1_2();
150 fn COMP();
151 fn CRS();
152 fn DMA1_Channel1();
153 fn DMA1_Channel2();
154 fn DMA1_Channel3();
155 fn DMA1_Channel4();
156 fn DMA1_Channel5();
157 fn DMA1_Channel6();
158 fn DMA1_Channel7();
159 fn DMA2_Channel1();
160 fn DMA2_Channel2();
161 fn DMA2_Channel3();
162 fn DMA2_Channel4();
163 fn DMA2_Channel5();
164 fn DMA2_Channel6();
165 fn DMA2_Channel7();
166 fn EXTI0();
167 fn EXTI1();
168 fn EXTI15_10();
169 fn EXTI2();
170 fn EXTI3();
171 fn EXTI4();
172 fn EXTI9_5();
173 fn FLASH();
174 fn FPU();
175 fn I2C1_ER();
176 fn I2C1_EV();
177 fn I2C2_ER();
178 fn I2C2_EV();
179 fn I2C3_ER();
180 fn I2C3_EV();
181 fn LPTIM1();
182 fn LPTIM2();
183 fn LPUART1();
184 fn PVD_PVM();
185 fn QUADSPI();
186 fn RCC();
187 fn RNG();
188 fn RTC_Alarm();
189 fn RTC_WKUP();
190 fn SPI1();
191 fn SPI2();
192 fn TAMP_STAMP();
193 fn TIM1_BRK_TIM15();
194 fn TIM1_CC();
195 fn TIM1_TRG_COM();
196 fn TIM1_UP_TIM16();
197 fn TIM2();
198 fn TIM6();
199 fn TSC();
200 fn USART1();
201 fn USART2();
202 fn USART3();
203 fn USB();
204 fn WWDG();
205 }
206 pub union Vector {
207 _handler: unsafe extern "C" fn(),
208 _reserved: u32,
209 }
210 #[link_section = ".vector_table.interrupts"]
211 #[no_mangle]
212 pub static __INTERRUPTS: [Vector; 83] = [
213 Vector { _handler: WWDG },
214 Vector { _handler: PVD_PVM },
215 Vector {
216 _handler: TAMP_STAMP,
217 },
218 Vector { _handler: RTC_WKUP },
219 Vector { _handler: FLASH },
220 Vector { _handler: RCC },
221 Vector { _handler: EXTI0 },
222 Vector { _handler: EXTI1 },
223 Vector { _handler: EXTI2 },
224 Vector { _handler: EXTI3 },
225 Vector { _handler: EXTI4 },
226 Vector {
227 _handler: DMA1_Channel1,
228 },
229 Vector {
230 _handler: DMA1_Channel2,
231 },
232 Vector {
233 _handler: DMA1_Channel3,
234 },
235 Vector {
236 _handler: DMA1_Channel4,
237 },
238 Vector {
239 _handler: DMA1_Channel5,
240 },
241 Vector {
242 _handler: DMA1_Channel6,
243 },
244 Vector {
245 _handler: DMA1_Channel7,
246 },
247 Vector { _handler: ADC1_2 },
248 Vector { _reserved: 0 },
249 Vector { _reserved: 0 },
250 Vector { _reserved: 0 },
251 Vector { _reserved: 0 },
252 Vector { _handler: EXTI9_5 },
253 Vector {
254 _handler: TIM1_BRK_TIM15,
255 },
256 Vector {
257 _handler: TIM1_UP_TIM16,
258 },
259 Vector {
260 _handler: TIM1_TRG_COM,
261 },
262 Vector { _handler: TIM1_CC },
263 Vector { _handler: TIM2 },
264 Vector { _reserved: 0 },
265 Vector { _reserved: 0 },
266 Vector { _handler: I2C1_EV },
267 Vector { _handler: I2C1_ER },
268 Vector { _handler: I2C2_EV },
269 Vector { _handler: I2C2_ER },
270 Vector { _handler: SPI1 },
271 Vector { _handler: SPI2 },
272 Vector { _handler: USART1 },
273 Vector { _handler: USART2 },
274 Vector { _handler: USART3 },
275 Vector {
276 _handler: EXTI15_10,
277 },
278 Vector {
279 _handler: RTC_Alarm,
280 },
281 Vector { _reserved: 0 },
282 Vector { _reserved: 0 },
283 Vector { _reserved: 0 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _reserved: 0 },
293 Vector { _handler: TIM6 },
294 Vector { _reserved: 0 },
295 Vector {
296 _handler: DMA2_Channel1,
297 },
298 Vector {
299 _handler: DMA2_Channel2,
300 },
301 Vector {
302 _handler: DMA2_Channel3,
303 },
304 Vector {
305 _handler: DMA2_Channel4,
306 },
307 Vector {
308 _handler: DMA2_Channel5,
309 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _reserved: 0 },
313 Vector { _handler: COMP },
314 Vector { _handler: LPTIM1 },
315 Vector { _handler: LPTIM2 },
316 Vector { _handler: USB },
317 Vector {
318 _handler: DMA2_Channel6,
319 },
320 Vector {
321 _handler: DMA2_Channel7,
322 },
323 Vector { _handler: LPUART1 },
324 Vector { _handler: QUADSPI },
325 Vector { _handler: I2C3_EV },
326 Vector { _handler: I2C3_ER },
327 Vector { _reserved: 0 },
328 Vector { _reserved: 0 },
329 Vector { _reserved: 0 },
330 Vector { _handler: TSC },
331 Vector { _reserved: 0 },
332 Vector { _reserved: 0 },
333 Vector { _handler: RNG },
334 Vector { _handler: FPU },
335 Vector { _handler: CRS },
336 ];
337}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 338impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 339impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 340impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l412k8.rs b/embassy-stm32/src/chip/stm32l412k8.rs
index c12d91a6a..88cc20b04 100644
--- a/embassy-stm32/src/chip/stm32l412k8.rs
+++ b/embassy-stm32/src/chip/stm32l412k8.rs
@@ -1,16 +1,339 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
9 PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SPI1, 9 PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC,
10 SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG 10 SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG
11); 11);
12pub const SYSCFG_BASE: usize = 0x40010000;
13pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 14pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 15pub const GPIO_STRIDE: usize = 0x400;
16
17pub mod interrupt {
18 pub use cortex_m::interrupt::{CriticalSection, Mutex};
19 pub use embassy::interrupt::{declare, take, Interrupt};
20 pub use embassy_extras::interrupt::Priority4 as Priority;
21
22 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
23 #[allow(non_camel_case_types)]
24 enum InterruptEnum {
25 ADC1_2 = 18,
26 COMP = 64,
27 CRS = 82,
28 DMA1_Channel1 = 11,
29 DMA1_Channel2 = 12,
30 DMA1_Channel3 = 13,
31 DMA1_Channel4 = 14,
32 DMA1_Channel5 = 15,
33 DMA1_Channel6 = 16,
34 DMA1_Channel7 = 17,
35 DMA2_Channel1 = 56,
36 DMA2_Channel2 = 57,
37 DMA2_Channel3 = 58,
38 DMA2_Channel4 = 59,
39 DMA2_Channel5 = 60,
40 DMA2_Channel6 = 68,
41 DMA2_Channel7 = 69,
42 EXTI0 = 6,
43 EXTI1 = 7,
44 EXTI15_10 = 40,
45 EXTI2 = 8,
46 EXTI3 = 9,
47 EXTI4 = 10,
48 EXTI9_5 = 23,
49 FLASH = 4,
50 FPU = 81,
51 I2C1_ER = 32,
52 I2C1_EV = 31,
53 I2C2_ER = 34,
54 I2C2_EV = 33,
55 I2C3_ER = 73,
56 I2C3_EV = 72,
57 LPTIM1 = 65,
58 LPTIM2 = 66,
59 LPUART1 = 70,
60 PVD_PVM = 1,
61 QUADSPI = 71,
62 RCC = 5,
63 RNG = 80,
64 RTC_Alarm = 41,
65 RTC_WKUP = 3,
66 SPI1 = 35,
67 SPI2 = 36,
68 TAMP_STAMP = 2,
69 TIM1_BRK_TIM15 = 24,
70 TIM1_CC = 27,
71 TIM1_TRG_COM = 26,
72 TIM1_UP_TIM16 = 25,
73 TIM2 = 28,
74 TIM6 = 54,
75 TSC = 77,
76 USART1 = 37,
77 USART2 = 38,
78 USART3 = 39,
79 USB = 67,
80 WWDG = 0,
81 }
82 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
83 #[inline(always)]
84 fn number(self) -> u16 {
85 self as u16
86 }
87 }
88
89 declare!(ADC1_2);
90 declare!(COMP);
91 declare!(CRS);
92 declare!(DMA1_Channel1);
93 declare!(DMA1_Channel2);
94 declare!(DMA1_Channel3);
95 declare!(DMA1_Channel4);
96 declare!(DMA1_Channel5);
97 declare!(DMA1_Channel6);
98 declare!(DMA1_Channel7);
99 declare!(DMA2_Channel1);
100 declare!(DMA2_Channel2);
101 declare!(DMA2_Channel3);
102 declare!(DMA2_Channel4);
103 declare!(DMA2_Channel5);
104 declare!(DMA2_Channel6);
105 declare!(DMA2_Channel7);
106 declare!(EXTI0);
107 declare!(EXTI1);
108 declare!(EXTI15_10);
109 declare!(EXTI2);
110 declare!(EXTI3);
111 declare!(EXTI4);
112 declare!(EXTI9_5);
113 declare!(FLASH);
114 declare!(FPU);
115 declare!(I2C1_ER);
116 declare!(I2C1_EV);
117 declare!(I2C2_ER);
118 declare!(I2C2_EV);
119 declare!(I2C3_ER);
120 declare!(I2C3_EV);
121 declare!(LPTIM1);
122 declare!(LPTIM2);
123 declare!(LPUART1);
124 declare!(PVD_PVM);
125 declare!(QUADSPI);
126 declare!(RCC);
127 declare!(RNG);
128 declare!(RTC_Alarm);
129 declare!(RTC_WKUP);
130 declare!(SPI1);
131 declare!(SPI2);
132 declare!(TAMP_STAMP);
133 declare!(TIM1_BRK_TIM15);
134 declare!(TIM1_CC);
135 declare!(TIM1_TRG_COM);
136 declare!(TIM1_UP_TIM16);
137 declare!(TIM2);
138 declare!(TIM6);
139 declare!(TSC);
140 declare!(USART1);
141 declare!(USART2);
142 declare!(USART3);
143 declare!(USB);
144 declare!(WWDG);
145}
146mod interrupt_vector {
147 extern "C" {
148 fn ADC1_2();
149 fn COMP();
150 fn CRS();
151 fn DMA1_Channel1();
152 fn DMA1_Channel2();
153 fn DMA1_Channel3();
154 fn DMA1_Channel4();
155 fn DMA1_Channel5();
156 fn DMA1_Channel6();
157 fn DMA1_Channel7();
158 fn DMA2_Channel1();
159 fn DMA2_Channel2();
160 fn DMA2_Channel3();
161 fn DMA2_Channel4();
162 fn DMA2_Channel5();
163 fn DMA2_Channel6();
164 fn DMA2_Channel7();
165 fn EXTI0();
166 fn EXTI1();
167 fn EXTI15_10();
168 fn EXTI2();
169 fn EXTI3();
170 fn EXTI4();
171 fn EXTI9_5();
172 fn FLASH();
173 fn FPU();
174 fn I2C1_ER();
175 fn I2C1_EV();
176 fn I2C2_ER();
177 fn I2C2_EV();
178 fn I2C3_ER();
179 fn I2C3_EV();
180 fn LPTIM1();
181 fn LPTIM2();
182 fn LPUART1();
183 fn PVD_PVM();
184 fn QUADSPI();
185 fn RCC();
186 fn RNG();
187 fn RTC_Alarm();
188 fn RTC_WKUP();
189 fn SPI1();
190 fn SPI2();
191 fn TAMP_STAMP();
192 fn TIM1_BRK_TIM15();
193 fn TIM1_CC();
194 fn TIM1_TRG_COM();
195 fn TIM1_UP_TIM16();
196 fn TIM2();
197 fn TIM6();
198 fn TSC();
199 fn USART1();
200 fn USART2();
201 fn USART3();
202 fn USB();
203 fn WWDG();
204 }
205 pub union Vector {
206 _handler: unsafe extern "C" fn(),
207 _reserved: u32,
208 }
209 #[link_section = ".vector_table.interrupts"]
210 #[no_mangle]
211 pub static __INTERRUPTS: [Vector; 83] = [
212 Vector { _handler: WWDG },
213 Vector { _handler: PVD_PVM },
214 Vector {
215 _handler: TAMP_STAMP,
216 },
217 Vector { _handler: RTC_WKUP },
218 Vector { _handler: FLASH },
219 Vector { _handler: RCC },
220 Vector { _handler: EXTI0 },
221 Vector { _handler: EXTI1 },
222 Vector { _handler: EXTI2 },
223 Vector { _handler: EXTI3 },
224 Vector { _handler: EXTI4 },
225 Vector {
226 _handler: DMA1_Channel1,
227 },
228 Vector {
229 _handler: DMA1_Channel2,
230 },
231 Vector {
232 _handler: DMA1_Channel3,
233 },
234 Vector {
235 _handler: DMA1_Channel4,
236 },
237 Vector {
238 _handler: DMA1_Channel5,
239 },
240 Vector {
241 _handler: DMA1_Channel6,
242 },
243 Vector {
244 _handler: DMA1_Channel7,
245 },
246 Vector { _handler: ADC1_2 },
247 Vector { _reserved: 0 },
248 Vector { _reserved: 0 },
249 Vector { _reserved: 0 },
250 Vector { _reserved: 0 },
251 Vector { _handler: EXTI9_5 },
252 Vector {
253 _handler: TIM1_BRK_TIM15,
254 },
255 Vector {
256 _handler: TIM1_UP_TIM16,
257 },
258 Vector {
259 _handler: TIM1_TRG_COM,
260 },
261 Vector { _handler: TIM1_CC },
262 Vector { _handler: TIM2 },
263 Vector { _reserved: 0 },
264 Vector { _reserved: 0 },
265 Vector { _handler: I2C1_EV },
266 Vector { _handler: I2C1_ER },
267 Vector { _handler: I2C2_EV },
268 Vector { _handler: I2C2_ER },
269 Vector { _handler: SPI1 },
270 Vector { _handler: SPI2 },
271 Vector { _handler: USART1 },
272 Vector { _handler: USART2 },
273 Vector { _handler: USART3 },
274 Vector {
275 _handler: EXTI15_10,
276 },
277 Vector {
278 _handler: RTC_Alarm,
279 },
280 Vector { _reserved: 0 },
281 Vector { _reserved: 0 },
282 Vector { _reserved: 0 },
283 Vector { _reserved: 0 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _handler: TIM6 },
293 Vector { _reserved: 0 },
294 Vector {
295 _handler: DMA2_Channel1,
296 },
297 Vector {
298 _handler: DMA2_Channel2,
299 },
300 Vector {
301 _handler: DMA2_Channel3,
302 },
303 Vector {
304 _handler: DMA2_Channel4,
305 },
306 Vector {
307 _handler: DMA2_Channel5,
308 },
309 Vector { _reserved: 0 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _handler: COMP },
313 Vector { _handler: LPTIM1 },
314 Vector { _handler: LPTIM2 },
315 Vector { _handler: USB },
316 Vector {
317 _handler: DMA2_Channel6,
318 },
319 Vector {
320 _handler: DMA2_Channel7,
321 },
322 Vector { _handler: LPUART1 },
323 Vector { _handler: QUADSPI },
324 Vector { _handler: I2C3_EV },
325 Vector { _handler: I2C3_ER },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _reserved: 0 },
329 Vector { _handler: TSC },
330 Vector { _reserved: 0 },
331 Vector { _reserved: 0 },
332 Vector { _handler: RNG },
333 Vector { _handler: FPU },
334 Vector { _handler: CRS },
335 ];
336}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 337impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 338impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 339impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l412kb.rs b/embassy-stm32/src/chip/stm32l412kb.rs
index c12d91a6a..88cc20b04 100644
--- a/embassy-stm32/src/chip/stm32l412kb.rs
+++ b/embassy-stm32/src/chip/stm32l412kb.rs
@@ -1,16 +1,339 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
9 PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SPI1, 9 PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC,
10 SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG 10 SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG
11); 11);
12pub const SYSCFG_BASE: usize = 0x40010000;
13pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 14pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 15pub const GPIO_STRIDE: usize = 0x400;
16
17pub mod interrupt {
18 pub use cortex_m::interrupt::{CriticalSection, Mutex};
19 pub use embassy::interrupt::{declare, take, Interrupt};
20 pub use embassy_extras::interrupt::Priority4 as Priority;
21
22 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
23 #[allow(non_camel_case_types)]
24 enum InterruptEnum {
25 ADC1_2 = 18,
26 COMP = 64,
27 CRS = 82,
28 DMA1_Channel1 = 11,
29 DMA1_Channel2 = 12,
30 DMA1_Channel3 = 13,
31 DMA1_Channel4 = 14,
32 DMA1_Channel5 = 15,
33 DMA1_Channel6 = 16,
34 DMA1_Channel7 = 17,
35 DMA2_Channel1 = 56,
36 DMA2_Channel2 = 57,
37 DMA2_Channel3 = 58,
38 DMA2_Channel4 = 59,
39 DMA2_Channel5 = 60,
40 DMA2_Channel6 = 68,
41 DMA2_Channel7 = 69,
42 EXTI0 = 6,
43 EXTI1 = 7,
44 EXTI15_10 = 40,
45 EXTI2 = 8,
46 EXTI3 = 9,
47 EXTI4 = 10,
48 EXTI9_5 = 23,
49 FLASH = 4,
50 FPU = 81,
51 I2C1_ER = 32,
52 I2C1_EV = 31,
53 I2C2_ER = 34,
54 I2C2_EV = 33,
55 I2C3_ER = 73,
56 I2C3_EV = 72,
57 LPTIM1 = 65,
58 LPTIM2 = 66,
59 LPUART1 = 70,
60 PVD_PVM = 1,
61 QUADSPI = 71,
62 RCC = 5,
63 RNG = 80,
64 RTC_Alarm = 41,
65 RTC_WKUP = 3,
66 SPI1 = 35,
67 SPI2 = 36,
68 TAMP_STAMP = 2,
69 TIM1_BRK_TIM15 = 24,
70 TIM1_CC = 27,
71 TIM1_TRG_COM = 26,
72 TIM1_UP_TIM16 = 25,
73 TIM2 = 28,
74 TIM6 = 54,
75 TSC = 77,
76 USART1 = 37,
77 USART2 = 38,
78 USART3 = 39,
79 USB = 67,
80 WWDG = 0,
81 }
82 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
83 #[inline(always)]
84 fn number(self) -> u16 {
85 self as u16
86 }
87 }
88
89 declare!(ADC1_2);
90 declare!(COMP);
91 declare!(CRS);
92 declare!(DMA1_Channel1);
93 declare!(DMA1_Channel2);
94 declare!(DMA1_Channel3);
95 declare!(DMA1_Channel4);
96 declare!(DMA1_Channel5);
97 declare!(DMA1_Channel6);
98 declare!(DMA1_Channel7);
99 declare!(DMA2_Channel1);
100 declare!(DMA2_Channel2);
101 declare!(DMA2_Channel3);
102 declare!(DMA2_Channel4);
103 declare!(DMA2_Channel5);
104 declare!(DMA2_Channel6);
105 declare!(DMA2_Channel7);
106 declare!(EXTI0);
107 declare!(EXTI1);
108 declare!(EXTI15_10);
109 declare!(EXTI2);
110 declare!(EXTI3);
111 declare!(EXTI4);
112 declare!(EXTI9_5);
113 declare!(FLASH);
114 declare!(FPU);
115 declare!(I2C1_ER);
116 declare!(I2C1_EV);
117 declare!(I2C2_ER);
118 declare!(I2C2_EV);
119 declare!(I2C3_ER);
120 declare!(I2C3_EV);
121 declare!(LPTIM1);
122 declare!(LPTIM2);
123 declare!(LPUART1);
124 declare!(PVD_PVM);
125 declare!(QUADSPI);
126 declare!(RCC);
127 declare!(RNG);
128 declare!(RTC_Alarm);
129 declare!(RTC_WKUP);
130 declare!(SPI1);
131 declare!(SPI2);
132 declare!(TAMP_STAMP);
133 declare!(TIM1_BRK_TIM15);
134 declare!(TIM1_CC);
135 declare!(TIM1_TRG_COM);
136 declare!(TIM1_UP_TIM16);
137 declare!(TIM2);
138 declare!(TIM6);
139 declare!(TSC);
140 declare!(USART1);
141 declare!(USART2);
142 declare!(USART3);
143 declare!(USB);
144 declare!(WWDG);
145}
146mod interrupt_vector {
147 extern "C" {
148 fn ADC1_2();
149 fn COMP();
150 fn CRS();
151 fn DMA1_Channel1();
152 fn DMA1_Channel2();
153 fn DMA1_Channel3();
154 fn DMA1_Channel4();
155 fn DMA1_Channel5();
156 fn DMA1_Channel6();
157 fn DMA1_Channel7();
158 fn DMA2_Channel1();
159 fn DMA2_Channel2();
160 fn DMA2_Channel3();
161 fn DMA2_Channel4();
162 fn DMA2_Channel5();
163 fn DMA2_Channel6();
164 fn DMA2_Channel7();
165 fn EXTI0();
166 fn EXTI1();
167 fn EXTI15_10();
168 fn EXTI2();
169 fn EXTI3();
170 fn EXTI4();
171 fn EXTI9_5();
172 fn FLASH();
173 fn FPU();
174 fn I2C1_ER();
175 fn I2C1_EV();
176 fn I2C2_ER();
177 fn I2C2_EV();
178 fn I2C3_ER();
179 fn I2C3_EV();
180 fn LPTIM1();
181 fn LPTIM2();
182 fn LPUART1();
183 fn PVD_PVM();
184 fn QUADSPI();
185 fn RCC();
186 fn RNG();
187 fn RTC_Alarm();
188 fn RTC_WKUP();
189 fn SPI1();
190 fn SPI2();
191 fn TAMP_STAMP();
192 fn TIM1_BRK_TIM15();
193 fn TIM1_CC();
194 fn TIM1_TRG_COM();
195 fn TIM1_UP_TIM16();
196 fn TIM2();
197 fn TIM6();
198 fn TSC();
199 fn USART1();
200 fn USART2();
201 fn USART3();
202 fn USB();
203 fn WWDG();
204 }
205 pub union Vector {
206 _handler: unsafe extern "C" fn(),
207 _reserved: u32,
208 }
209 #[link_section = ".vector_table.interrupts"]
210 #[no_mangle]
211 pub static __INTERRUPTS: [Vector; 83] = [
212 Vector { _handler: WWDG },
213 Vector { _handler: PVD_PVM },
214 Vector {
215 _handler: TAMP_STAMP,
216 },
217 Vector { _handler: RTC_WKUP },
218 Vector { _handler: FLASH },
219 Vector { _handler: RCC },
220 Vector { _handler: EXTI0 },
221 Vector { _handler: EXTI1 },
222 Vector { _handler: EXTI2 },
223 Vector { _handler: EXTI3 },
224 Vector { _handler: EXTI4 },
225 Vector {
226 _handler: DMA1_Channel1,
227 },
228 Vector {
229 _handler: DMA1_Channel2,
230 },
231 Vector {
232 _handler: DMA1_Channel3,
233 },
234 Vector {
235 _handler: DMA1_Channel4,
236 },
237 Vector {
238 _handler: DMA1_Channel5,
239 },
240 Vector {
241 _handler: DMA1_Channel6,
242 },
243 Vector {
244 _handler: DMA1_Channel7,
245 },
246 Vector { _handler: ADC1_2 },
247 Vector { _reserved: 0 },
248 Vector { _reserved: 0 },
249 Vector { _reserved: 0 },
250 Vector { _reserved: 0 },
251 Vector { _handler: EXTI9_5 },
252 Vector {
253 _handler: TIM1_BRK_TIM15,
254 },
255 Vector {
256 _handler: TIM1_UP_TIM16,
257 },
258 Vector {
259 _handler: TIM1_TRG_COM,
260 },
261 Vector { _handler: TIM1_CC },
262 Vector { _handler: TIM2 },
263 Vector { _reserved: 0 },
264 Vector { _reserved: 0 },
265 Vector { _handler: I2C1_EV },
266 Vector { _handler: I2C1_ER },
267 Vector { _handler: I2C2_EV },
268 Vector { _handler: I2C2_ER },
269 Vector { _handler: SPI1 },
270 Vector { _handler: SPI2 },
271 Vector { _handler: USART1 },
272 Vector { _handler: USART2 },
273 Vector { _handler: USART3 },
274 Vector {
275 _handler: EXTI15_10,
276 },
277 Vector {
278 _handler: RTC_Alarm,
279 },
280 Vector { _reserved: 0 },
281 Vector { _reserved: 0 },
282 Vector { _reserved: 0 },
283 Vector { _reserved: 0 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _handler: TIM6 },
293 Vector { _reserved: 0 },
294 Vector {
295 _handler: DMA2_Channel1,
296 },
297 Vector {
298 _handler: DMA2_Channel2,
299 },
300 Vector {
301 _handler: DMA2_Channel3,
302 },
303 Vector {
304 _handler: DMA2_Channel4,
305 },
306 Vector {
307 _handler: DMA2_Channel5,
308 },
309 Vector { _reserved: 0 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _handler: COMP },
313 Vector { _handler: LPTIM1 },
314 Vector { _handler: LPTIM2 },
315 Vector { _handler: USB },
316 Vector {
317 _handler: DMA2_Channel6,
318 },
319 Vector {
320 _handler: DMA2_Channel7,
321 },
322 Vector { _handler: LPUART1 },
323 Vector { _handler: QUADSPI },
324 Vector { _handler: I2C3_EV },
325 Vector { _handler: I2C3_ER },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _reserved: 0 },
329 Vector { _handler: TSC },
330 Vector { _reserved: 0 },
331 Vector { _reserved: 0 },
332 Vector { _handler: RNG },
333 Vector { _handler: FPU },
334 Vector { _handler: CRS },
335 ];
336}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 337impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 338impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 339impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l412r8.rs b/embassy-stm32/src/chip/stm32l412r8.rs
index c20a8a60a..e319e06a7 100644
--- a/embassy-stm32/src/chip/stm32l412r8.rs
+++ b/embassy-stm32/src/chip/stm32l412r8.rs
@@ -1,16 +1,340 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
9 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, 9 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG,
10 SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, WWDG 10 RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB,
11 WWDG
11); 12);
13pub const SYSCFG_BASE: usize = 0x40010000;
14pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 15pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
17
18pub mod interrupt {
19 pub use cortex_m::interrupt::{CriticalSection, Mutex};
20 pub use embassy::interrupt::{declare, take, Interrupt};
21 pub use embassy_extras::interrupt::Priority4 as Priority;
22
23 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
24 #[allow(non_camel_case_types)]
25 enum InterruptEnum {
26 ADC1_2 = 18,
27 COMP = 64,
28 CRS = 82,
29 DMA1_Channel1 = 11,
30 DMA1_Channel2 = 12,
31 DMA1_Channel3 = 13,
32 DMA1_Channel4 = 14,
33 DMA1_Channel5 = 15,
34 DMA1_Channel6 = 16,
35 DMA1_Channel7 = 17,
36 DMA2_Channel1 = 56,
37 DMA2_Channel2 = 57,
38 DMA2_Channel3 = 58,
39 DMA2_Channel4 = 59,
40 DMA2_Channel5 = 60,
41 DMA2_Channel6 = 68,
42 DMA2_Channel7 = 69,
43 EXTI0 = 6,
44 EXTI1 = 7,
45 EXTI15_10 = 40,
46 EXTI2 = 8,
47 EXTI3 = 9,
48 EXTI4 = 10,
49 EXTI9_5 = 23,
50 FLASH = 4,
51 FPU = 81,
52 I2C1_ER = 32,
53 I2C1_EV = 31,
54 I2C2_ER = 34,
55 I2C2_EV = 33,
56 I2C3_ER = 73,
57 I2C3_EV = 72,
58 LPTIM1 = 65,
59 LPTIM2 = 66,
60 LPUART1 = 70,
61 PVD_PVM = 1,
62 QUADSPI = 71,
63 RCC = 5,
64 RNG = 80,
65 RTC_Alarm = 41,
66 RTC_WKUP = 3,
67 SPI1 = 35,
68 SPI2 = 36,
69 TAMP_STAMP = 2,
70 TIM1_BRK_TIM15 = 24,
71 TIM1_CC = 27,
72 TIM1_TRG_COM = 26,
73 TIM1_UP_TIM16 = 25,
74 TIM2 = 28,
75 TIM6 = 54,
76 TSC = 77,
77 USART1 = 37,
78 USART2 = 38,
79 USART3 = 39,
80 USB = 67,
81 WWDG = 0,
82 }
83 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
84 #[inline(always)]
85 fn number(self) -> u16 {
86 self as u16
87 }
88 }
89
90 declare!(ADC1_2);
91 declare!(COMP);
92 declare!(CRS);
93 declare!(DMA1_Channel1);
94 declare!(DMA1_Channel2);
95 declare!(DMA1_Channel3);
96 declare!(DMA1_Channel4);
97 declare!(DMA1_Channel5);
98 declare!(DMA1_Channel6);
99 declare!(DMA1_Channel7);
100 declare!(DMA2_Channel1);
101 declare!(DMA2_Channel2);
102 declare!(DMA2_Channel3);
103 declare!(DMA2_Channel4);
104 declare!(DMA2_Channel5);
105 declare!(DMA2_Channel6);
106 declare!(DMA2_Channel7);
107 declare!(EXTI0);
108 declare!(EXTI1);
109 declare!(EXTI15_10);
110 declare!(EXTI2);
111 declare!(EXTI3);
112 declare!(EXTI4);
113 declare!(EXTI9_5);
114 declare!(FLASH);
115 declare!(FPU);
116 declare!(I2C1_ER);
117 declare!(I2C1_EV);
118 declare!(I2C2_ER);
119 declare!(I2C2_EV);
120 declare!(I2C3_ER);
121 declare!(I2C3_EV);
122 declare!(LPTIM1);
123 declare!(LPTIM2);
124 declare!(LPUART1);
125 declare!(PVD_PVM);
126 declare!(QUADSPI);
127 declare!(RCC);
128 declare!(RNG);
129 declare!(RTC_Alarm);
130 declare!(RTC_WKUP);
131 declare!(SPI1);
132 declare!(SPI2);
133 declare!(TAMP_STAMP);
134 declare!(TIM1_BRK_TIM15);
135 declare!(TIM1_CC);
136 declare!(TIM1_TRG_COM);
137 declare!(TIM1_UP_TIM16);
138 declare!(TIM2);
139 declare!(TIM6);
140 declare!(TSC);
141 declare!(USART1);
142 declare!(USART2);
143 declare!(USART3);
144 declare!(USB);
145 declare!(WWDG);
146}
147mod interrupt_vector {
148 extern "C" {
149 fn ADC1_2();
150 fn COMP();
151 fn CRS();
152 fn DMA1_Channel1();
153 fn DMA1_Channel2();
154 fn DMA1_Channel3();
155 fn DMA1_Channel4();
156 fn DMA1_Channel5();
157 fn DMA1_Channel6();
158 fn DMA1_Channel7();
159 fn DMA2_Channel1();
160 fn DMA2_Channel2();
161 fn DMA2_Channel3();
162 fn DMA2_Channel4();
163 fn DMA2_Channel5();
164 fn DMA2_Channel6();
165 fn DMA2_Channel7();
166 fn EXTI0();
167 fn EXTI1();
168 fn EXTI15_10();
169 fn EXTI2();
170 fn EXTI3();
171 fn EXTI4();
172 fn EXTI9_5();
173 fn FLASH();
174 fn FPU();
175 fn I2C1_ER();
176 fn I2C1_EV();
177 fn I2C2_ER();
178 fn I2C2_EV();
179 fn I2C3_ER();
180 fn I2C3_EV();
181 fn LPTIM1();
182 fn LPTIM2();
183 fn LPUART1();
184 fn PVD_PVM();
185 fn QUADSPI();
186 fn RCC();
187 fn RNG();
188 fn RTC_Alarm();
189 fn RTC_WKUP();
190 fn SPI1();
191 fn SPI2();
192 fn TAMP_STAMP();
193 fn TIM1_BRK_TIM15();
194 fn TIM1_CC();
195 fn TIM1_TRG_COM();
196 fn TIM1_UP_TIM16();
197 fn TIM2();
198 fn TIM6();
199 fn TSC();
200 fn USART1();
201 fn USART2();
202 fn USART3();
203 fn USB();
204 fn WWDG();
205 }
206 pub union Vector {
207 _handler: unsafe extern "C" fn(),
208 _reserved: u32,
209 }
210 #[link_section = ".vector_table.interrupts"]
211 #[no_mangle]
212 pub static __INTERRUPTS: [Vector; 83] = [
213 Vector { _handler: WWDG },
214 Vector { _handler: PVD_PVM },
215 Vector {
216 _handler: TAMP_STAMP,
217 },
218 Vector { _handler: RTC_WKUP },
219 Vector { _handler: FLASH },
220 Vector { _handler: RCC },
221 Vector { _handler: EXTI0 },
222 Vector { _handler: EXTI1 },
223 Vector { _handler: EXTI2 },
224 Vector { _handler: EXTI3 },
225 Vector { _handler: EXTI4 },
226 Vector {
227 _handler: DMA1_Channel1,
228 },
229 Vector {
230 _handler: DMA1_Channel2,
231 },
232 Vector {
233 _handler: DMA1_Channel3,
234 },
235 Vector {
236 _handler: DMA1_Channel4,
237 },
238 Vector {
239 _handler: DMA1_Channel5,
240 },
241 Vector {
242 _handler: DMA1_Channel6,
243 },
244 Vector {
245 _handler: DMA1_Channel7,
246 },
247 Vector { _handler: ADC1_2 },
248 Vector { _reserved: 0 },
249 Vector { _reserved: 0 },
250 Vector { _reserved: 0 },
251 Vector { _reserved: 0 },
252 Vector { _handler: EXTI9_5 },
253 Vector {
254 _handler: TIM1_BRK_TIM15,
255 },
256 Vector {
257 _handler: TIM1_UP_TIM16,
258 },
259 Vector {
260 _handler: TIM1_TRG_COM,
261 },
262 Vector { _handler: TIM1_CC },
263 Vector { _handler: TIM2 },
264 Vector { _reserved: 0 },
265 Vector { _reserved: 0 },
266 Vector { _handler: I2C1_EV },
267 Vector { _handler: I2C1_ER },
268 Vector { _handler: I2C2_EV },
269 Vector { _handler: I2C2_ER },
270 Vector { _handler: SPI1 },
271 Vector { _handler: SPI2 },
272 Vector { _handler: USART1 },
273 Vector { _handler: USART2 },
274 Vector { _handler: USART3 },
275 Vector {
276 _handler: EXTI15_10,
277 },
278 Vector {
279 _handler: RTC_Alarm,
280 },
281 Vector { _reserved: 0 },
282 Vector { _reserved: 0 },
283 Vector { _reserved: 0 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _reserved: 0 },
293 Vector { _handler: TIM6 },
294 Vector { _reserved: 0 },
295 Vector {
296 _handler: DMA2_Channel1,
297 },
298 Vector {
299 _handler: DMA2_Channel2,
300 },
301 Vector {
302 _handler: DMA2_Channel3,
303 },
304 Vector {
305 _handler: DMA2_Channel4,
306 },
307 Vector {
308 _handler: DMA2_Channel5,
309 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _reserved: 0 },
313 Vector { _handler: COMP },
314 Vector { _handler: LPTIM1 },
315 Vector { _handler: LPTIM2 },
316 Vector { _handler: USB },
317 Vector {
318 _handler: DMA2_Channel6,
319 },
320 Vector {
321 _handler: DMA2_Channel7,
322 },
323 Vector { _handler: LPUART1 },
324 Vector { _handler: QUADSPI },
325 Vector { _handler: I2C3_EV },
326 Vector { _handler: I2C3_ER },
327 Vector { _reserved: 0 },
328 Vector { _reserved: 0 },
329 Vector { _reserved: 0 },
330 Vector { _handler: TSC },
331 Vector { _reserved: 0 },
332 Vector { _reserved: 0 },
333 Vector { _handler: RNG },
334 Vector { _handler: FPU },
335 Vector { _handler: CRS },
336 ];
337}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 338impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 339impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 340impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l412rb.rs b/embassy-stm32/src/chip/stm32l412rb.rs
index c20a8a60a..e319e06a7 100644
--- a/embassy-stm32/src/chip/stm32l412rb.rs
+++ b/embassy-stm32/src/chip/stm32l412rb.rs
@@ -1,16 +1,340 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
9 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, 9 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG,
10 SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, WWDG 10 RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB,
11 WWDG
11); 12);
13pub const SYSCFG_BASE: usize = 0x40010000;
14pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 15pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
17
18pub mod interrupt {
19 pub use cortex_m::interrupt::{CriticalSection, Mutex};
20 pub use embassy::interrupt::{declare, take, Interrupt};
21 pub use embassy_extras::interrupt::Priority4 as Priority;
22
23 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
24 #[allow(non_camel_case_types)]
25 enum InterruptEnum {
26 ADC1_2 = 18,
27 COMP = 64,
28 CRS = 82,
29 DMA1_Channel1 = 11,
30 DMA1_Channel2 = 12,
31 DMA1_Channel3 = 13,
32 DMA1_Channel4 = 14,
33 DMA1_Channel5 = 15,
34 DMA1_Channel6 = 16,
35 DMA1_Channel7 = 17,
36 DMA2_Channel1 = 56,
37 DMA2_Channel2 = 57,
38 DMA2_Channel3 = 58,
39 DMA2_Channel4 = 59,
40 DMA2_Channel5 = 60,
41 DMA2_Channel6 = 68,
42 DMA2_Channel7 = 69,
43 EXTI0 = 6,
44 EXTI1 = 7,
45 EXTI15_10 = 40,
46 EXTI2 = 8,
47 EXTI3 = 9,
48 EXTI4 = 10,
49 EXTI9_5 = 23,
50 FLASH = 4,
51 FPU = 81,
52 I2C1_ER = 32,
53 I2C1_EV = 31,
54 I2C2_ER = 34,
55 I2C2_EV = 33,
56 I2C3_ER = 73,
57 I2C3_EV = 72,
58 LPTIM1 = 65,
59 LPTIM2 = 66,
60 LPUART1 = 70,
61 PVD_PVM = 1,
62 QUADSPI = 71,
63 RCC = 5,
64 RNG = 80,
65 RTC_Alarm = 41,
66 RTC_WKUP = 3,
67 SPI1 = 35,
68 SPI2 = 36,
69 TAMP_STAMP = 2,
70 TIM1_BRK_TIM15 = 24,
71 TIM1_CC = 27,
72 TIM1_TRG_COM = 26,
73 TIM1_UP_TIM16 = 25,
74 TIM2 = 28,
75 TIM6 = 54,
76 TSC = 77,
77 USART1 = 37,
78 USART2 = 38,
79 USART3 = 39,
80 USB = 67,
81 WWDG = 0,
82 }
83 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
84 #[inline(always)]
85 fn number(self) -> u16 {
86 self as u16
87 }
88 }
89
90 declare!(ADC1_2);
91 declare!(COMP);
92 declare!(CRS);
93 declare!(DMA1_Channel1);
94 declare!(DMA1_Channel2);
95 declare!(DMA1_Channel3);
96 declare!(DMA1_Channel4);
97 declare!(DMA1_Channel5);
98 declare!(DMA1_Channel6);
99 declare!(DMA1_Channel7);
100 declare!(DMA2_Channel1);
101 declare!(DMA2_Channel2);
102 declare!(DMA2_Channel3);
103 declare!(DMA2_Channel4);
104 declare!(DMA2_Channel5);
105 declare!(DMA2_Channel6);
106 declare!(DMA2_Channel7);
107 declare!(EXTI0);
108 declare!(EXTI1);
109 declare!(EXTI15_10);
110 declare!(EXTI2);
111 declare!(EXTI3);
112 declare!(EXTI4);
113 declare!(EXTI9_5);
114 declare!(FLASH);
115 declare!(FPU);
116 declare!(I2C1_ER);
117 declare!(I2C1_EV);
118 declare!(I2C2_ER);
119 declare!(I2C2_EV);
120 declare!(I2C3_ER);
121 declare!(I2C3_EV);
122 declare!(LPTIM1);
123 declare!(LPTIM2);
124 declare!(LPUART1);
125 declare!(PVD_PVM);
126 declare!(QUADSPI);
127 declare!(RCC);
128 declare!(RNG);
129 declare!(RTC_Alarm);
130 declare!(RTC_WKUP);
131 declare!(SPI1);
132 declare!(SPI2);
133 declare!(TAMP_STAMP);
134 declare!(TIM1_BRK_TIM15);
135 declare!(TIM1_CC);
136 declare!(TIM1_TRG_COM);
137 declare!(TIM1_UP_TIM16);
138 declare!(TIM2);
139 declare!(TIM6);
140 declare!(TSC);
141 declare!(USART1);
142 declare!(USART2);
143 declare!(USART3);
144 declare!(USB);
145 declare!(WWDG);
146}
147mod interrupt_vector {
148 extern "C" {
149 fn ADC1_2();
150 fn COMP();
151 fn CRS();
152 fn DMA1_Channel1();
153 fn DMA1_Channel2();
154 fn DMA1_Channel3();
155 fn DMA1_Channel4();
156 fn DMA1_Channel5();
157 fn DMA1_Channel6();
158 fn DMA1_Channel7();
159 fn DMA2_Channel1();
160 fn DMA2_Channel2();
161 fn DMA2_Channel3();
162 fn DMA2_Channel4();
163 fn DMA2_Channel5();
164 fn DMA2_Channel6();
165 fn DMA2_Channel7();
166 fn EXTI0();
167 fn EXTI1();
168 fn EXTI15_10();
169 fn EXTI2();
170 fn EXTI3();
171 fn EXTI4();
172 fn EXTI9_5();
173 fn FLASH();
174 fn FPU();
175 fn I2C1_ER();
176 fn I2C1_EV();
177 fn I2C2_ER();
178 fn I2C2_EV();
179 fn I2C3_ER();
180 fn I2C3_EV();
181 fn LPTIM1();
182 fn LPTIM2();
183 fn LPUART1();
184 fn PVD_PVM();
185 fn QUADSPI();
186 fn RCC();
187 fn RNG();
188 fn RTC_Alarm();
189 fn RTC_WKUP();
190 fn SPI1();
191 fn SPI2();
192 fn TAMP_STAMP();
193 fn TIM1_BRK_TIM15();
194 fn TIM1_CC();
195 fn TIM1_TRG_COM();
196 fn TIM1_UP_TIM16();
197 fn TIM2();
198 fn TIM6();
199 fn TSC();
200 fn USART1();
201 fn USART2();
202 fn USART3();
203 fn USB();
204 fn WWDG();
205 }
206 pub union Vector {
207 _handler: unsafe extern "C" fn(),
208 _reserved: u32,
209 }
210 #[link_section = ".vector_table.interrupts"]
211 #[no_mangle]
212 pub static __INTERRUPTS: [Vector; 83] = [
213 Vector { _handler: WWDG },
214 Vector { _handler: PVD_PVM },
215 Vector {
216 _handler: TAMP_STAMP,
217 },
218 Vector { _handler: RTC_WKUP },
219 Vector { _handler: FLASH },
220 Vector { _handler: RCC },
221 Vector { _handler: EXTI0 },
222 Vector { _handler: EXTI1 },
223 Vector { _handler: EXTI2 },
224 Vector { _handler: EXTI3 },
225 Vector { _handler: EXTI4 },
226 Vector {
227 _handler: DMA1_Channel1,
228 },
229 Vector {
230 _handler: DMA1_Channel2,
231 },
232 Vector {
233 _handler: DMA1_Channel3,
234 },
235 Vector {
236 _handler: DMA1_Channel4,
237 },
238 Vector {
239 _handler: DMA1_Channel5,
240 },
241 Vector {
242 _handler: DMA1_Channel6,
243 },
244 Vector {
245 _handler: DMA1_Channel7,
246 },
247 Vector { _handler: ADC1_2 },
248 Vector { _reserved: 0 },
249 Vector { _reserved: 0 },
250 Vector { _reserved: 0 },
251 Vector { _reserved: 0 },
252 Vector { _handler: EXTI9_5 },
253 Vector {
254 _handler: TIM1_BRK_TIM15,
255 },
256 Vector {
257 _handler: TIM1_UP_TIM16,
258 },
259 Vector {
260 _handler: TIM1_TRG_COM,
261 },
262 Vector { _handler: TIM1_CC },
263 Vector { _handler: TIM2 },
264 Vector { _reserved: 0 },
265 Vector { _reserved: 0 },
266 Vector { _handler: I2C1_EV },
267 Vector { _handler: I2C1_ER },
268 Vector { _handler: I2C2_EV },
269 Vector { _handler: I2C2_ER },
270 Vector { _handler: SPI1 },
271 Vector { _handler: SPI2 },
272 Vector { _handler: USART1 },
273 Vector { _handler: USART2 },
274 Vector { _handler: USART3 },
275 Vector {
276 _handler: EXTI15_10,
277 },
278 Vector {
279 _handler: RTC_Alarm,
280 },
281 Vector { _reserved: 0 },
282 Vector { _reserved: 0 },
283 Vector { _reserved: 0 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _reserved: 0 },
293 Vector { _handler: TIM6 },
294 Vector { _reserved: 0 },
295 Vector {
296 _handler: DMA2_Channel1,
297 },
298 Vector {
299 _handler: DMA2_Channel2,
300 },
301 Vector {
302 _handler: DMA2_Channel3,
303 },
304 Vector {
305 _handler: DMA2_Channel4,
306 },
307 Vector {
308 _handler: DMA2_Channel5,
309 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _reserved: 0 },
313 Vector { _handler: COMP },
314 Vector { _handler: LPTIM1 },
315 Vector { _handler: LPTIM2 },
316 Vector { _handler: USB },
317 Vector {
318 _handler: DMA2_Channel6,
319 },
320 Vector {
321 _handler: DMA2_Channel7,
322 },
323 Vector { _handler: LPUART1 },
324 Vector { _handler: QUADSPI },
325 Vector { _handler: I2C3_EV },
326 Vector { _handler: I2C3_ER },
327 Vector { _reserved: 0 },
328 Vector { _reserved: 0 },
329 Vector { _reserved: 0 },
330 Vector { _handler: TSC },
331 Vector { _reserved: 0 },
332 Vector { _reserved: 0 },
333 Vector { _handler: RNG },
334 Vector { _handler: FPU },
335 Vector { _handler: CRS },
336 ];
337}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 338impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 339impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 340impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l412t8.rs b/embassy-stm32/src/chip/stm32l412t8.rs
index c12d91a6a..88cc20b04 100644
--- a/embassy-stm32/src/chip/stm32l412t8.rs
+++ b/embassy-stm32/src/chip/stm32l412t8.rs
@@ -1,16 +1,339 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
9 PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SPI1, 9 PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC,
10 SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG 10 SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG
11); 11);
12pub const SYSCFG_BASE: usize = 0x40010000;
13pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 14pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 15pub const GPIO_STRIDE: usize = 0x400;
16
17pub mod interrupt {
18 pub use cortex_m::interrupt::{CriticalSection, Mutex};
19 pub use embassy::interrupt::{declare, take, Interrupt};
20 pub use embassy_extras::interrupt::Priority4 as Priority;
21
22 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
23 #[allow(non_camel_case_types)]
24 enum InterruptEnum {
25 ADC1_2 = 18,
26 COMP = 64,
27 CRS = 82,
28 DMA1_Channel1 = 11,
29 DMA1_Channel2 = 12,
30 DMA1_Channel3 = 13,
31 DMA1_Channel4 = 14,
32 DMA1_Channel5 = 15,
33 DMA1_Channel6 = 16,
34 DMA1_Channel7 = 17,
35 DMA2_Channel1 = 56,
36 DMA2_Channel2 = 57,
37 DMA2_Channel3 = 58,
38 DMA2_Channel4 = 59,
39 DMA2_Channel5 = 60,
40 DMA2_Channel6 = 68,
41 DMA2_Channel7 = 69,
42 EXTI0 = 6,
43 EXTI1 = 7,
44 EXTI15_10 = 40,
45 EXTI2 = 8,
46 EXTI3 = 9,
47 EXTI4 = 10,
48 EXTI9_5 = 23,
49 FLASH = 4,
50 FPU = 81,
51 I2C1_ER = 32,
52 I2C1_EV = 31,
53 I2C2_ER = 34,
54 I2C2_EV = 33,
55 I2C3_ER = 73,
56 I2C3_EV = 72,
57 LPTIM1 = 65,
58 LPTIM2 = 66,
59 LPUART1 = 70,
60 PVD_PVM = 1,
61 QUADSPI = 71,
62 RCC = 5,
63 RNG = 80,
64 RTC_Alarm = 41,
65 RTC_WKUP = 3,
66 SPI1 = 35,
67 SPI2 = 36,
68 TAMP_STAMP = 2,
69 TIM1_BRK_TIM15 = 24,
70 TIM1_CC = 27,
71 TIM1_TRG_COM = 26,
72 TIM1_UP_TIM16 = 25,
73 TIM2 = 28,
74 TIM6 = 54,
75 TSC = 77,
76 USART1 = 37,
77 USART2 = 38,
78 USART3 = 39,
79 USB = 67,
80 WWDG = 0,
81 }
82 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
83 #[inline(always)]
84 fn number(self) -> u16 {
85 self as u16
86 }
87 }
88
89 declare!(ADC1_2);
90 declare!(COMP);
91 declare!(CRS);
92 declare!(DMA1_Channel1);
93 declare!(DMA1_Channel2);
94 declare!(DMA1_Channel3);
95 declare!(DMA1_Channel4);
96 declare!(DMA1_Channel5);
97 declare!(DMA1_Channel6);
98 declare!(DMA1_Channel7);
99 declare!(DMA2_Channel1);
100 declare!(DMA2_Channel2);
101 declare!(DMA2_Channel3);
102 declare!(DMA2_Channel4);
103 declare!(DMA2_Channel5);
104 declare!(DMA2_Channel6);
105 declare!(DMA2_Channel7);
106 declare!(EXTI0);
107 declare!(EXTI1);
108 declare!(EXTI15_10);
109 declare!(EXTI2);
110 declare!(EXTI3);
111 declare!(EXTI4);
112 declare!(EXTI9_5);
113 declare!(FLASH);
114 declare!(FPU);
115 declare!(I2C1_ER);
116 declare!(I2C1_EV);
117 declare!(I2C2_ER);
118 declare!(I2C2_EV);
119 declare!(I2C3_ER);
120 declare!(I2C3_EV);
121 declare!(LPTIM1);
122 declare!(LPTIM2);
123 declare!(LPUART1);
124 declare!(PVD_PVM);
125 declare!(QUADSPI);
126 declare!(RCC);
127 declare!(RNG);
128 declare!(RTC_Alarm);
129 declare!(RTC_WKUP);
130 declare!(SPI1);
131 declare!(SPI2);
132 declare!(TAMP_STAMP);
133 declare!(TIM1_BRK_TIM15);
134 declare!(TIM1_CC);
135 declare!(TIM1_TRG_COM);
136 declare!(TIM1_UP_TIM16);
137 declare!(TIM2);
138 declare!(TIM6);
139 declare!(TSC);
140 declare!(USART1);
141 declare!(USART2);
142 declare!(USART3);
143 declare!(USB);
144 declare!(WWDG);
145}
146mod interrupt_vector {
147 extern "C" {
148 fn ADC1_2();
149 fn COMP();
150 fn CRS();
151 fn DMA1_Channel1();
152 fn DMA1_Channel2();
153 fn DMA1_Channel3();
154 fn DMA1_Channel4();
155 fn DMA1_Channel5();
156 fn DMA1_Channel6();
157 fn DMA1_Channel7();
158 fn DMA2_Channel1();
159 fn DMA2_Channel2();
160 fn DMA2_Channel3();
161 fn DMA2_Channel4();
162 fn DMA2_Channel5();
163 fn DMA2_Channel6();
164 fn DMA2_Channel7();
165 fn EXTI0();
166 fn EXTI1();
167 fn EXTI15_10();
168 fn EXTI2();
169 fn EXTI3();
170 fn EXTI4();
171 fn EXTI9_5();
172 fn FLASH();
173 fn FPU();
174 fn I2C1_ER();
175 fn I2C1_EV();
176 fn I2C2_ER();
177 fn I2C2_EV();
178 fn I2C3_ER();
179 fn I2C3_EV();
180 fn LPTIM1();
181 fn LPTIM2();
182 fn LPUART1();
183 fn PVD_PVM();
184 fn QUADSPI();
185 fn RCC();
186 fn RNG();
187 fn RTC_Alarm();
188 fn RTC_WKUP();
189 fn SPI1();
190 fn SPI2();
191 fn TAMP_STAMP();
192 fn TIM1_BRK_TIM15();
193 fn TIM1_CC();
194 fn TIM1_TRG_COM();
195 fn TIM1_UP_TIM16();
196 fn TIM2();
197 fn TIM6();
198 fn TSC();
199 fn USART1();
200 fn USART2();
201 fn USART3();
202 fn USB();
203 fn WWDG();
204 }
205 pub union Vector {
206 _handler: unsafe extern "C" fn(),
207 _reserved: u32,
208 }
209 #[link_section = ".vector_table.interrupts"]
210 #[no_mangle]
211 pub static __INTERRUPTS: [Vector; 83] = [
212 Vector { _handler: WWDG },
213 Vector { _handler: PVD_PVM },
214 Vector {
215 _handler: TAMP_STAMP,
216 },
217 Vector { _handler: RTC_WKUP },
218 Vector { _handler: FLASH },
219 Vector { _handler: RCC },
220 Vector { _handler: EXTI0 },
221 Vector { _handler: EXTI1 },
222 Vector { _handler: EXTI2 },
223 Vector { _handler: EXTI3 },
224 Vector { _handler: EXTI4 },
225 Vector {
226 _handler: DMA1_Channel1,
227 },
228 Vector {
229 _handler: DMA1_Channel2,
230 },
231 Vector {
232 _handler: DMA1_Channel3,
233 },
234 Vector {
235 _handler: DMA1_Channel4,
236 },
237 Vector {
238 _handler: DMA1_Channel5,
239 },
240 Vector {
241 _handler: DMA1_Channel6,
242 },
243 Vector {
244 _handler: DMA1_Channel7,
245 },
246 Vector { _handler: ADC1_2 },
247 Vector { _reserved: 0 },
248 Vector { _reserved: 0 },
249 Vector { _reserved: 0 },
250 Vector { _reserved: 0 },
251 Vector { _handler: EXTI9_5 },
252 Vector {
253 _handler: TIM1_BRK_TIM15,
254 },
255 Vector {
256 _handler: TIM1_UP_TIM16,
257 },
258 Vector {
259 _handler: TIM1_TRG_COM,
260 },
261 Vector { _handler: TIM1_CC },
262 Vector { _handler: TIM2 },
263 Vector { _reserved: 0 },
264 Vector { _reserved: 0 },
265 Vector { _handler: I2C1_EV },
266 Vector { _handler: I2C1_ER },
267 Vector { _handler: I2C2_EV },
268 Vector { _handler: I2C2_ER },
269 Vector { _handler: SPI1 },
270 Vector { _handler: SPI2 },
271 Vector { _handler: USART1 },
272 Vector { _handler: USART2 },
273 Vector { _handler: USART3 },
274 Vector {
275 _handler: EXTI15_10,
276 },
277 Vector {
278 _handler: RTC_Alarm,
279 },
280 Vector { _reserved: 0 },
281 Vector { _reserved: 0 },
282 Vector { _reserved: 0 },
283 Vector { _reserved: 0 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _handler: TIM6 },
293 Vector { _reserved: 0 },
294 Vector {
295 _handler: DMA2_Channel1,
296 },
297 Vector {
298 _handler: DMA2_Channel2,
299 },
300 Vector {
301 _handler: DMA2_Channel3,
302 },
303 Vector {
304 _handler: DMA2_Channel4,
305 },
306 Vector {
307 _handler: DMA2_Channel5,
308 },
309 Vector { _reserved: 0 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _handler: COMP },
313 Vector { _handler: LPTIM1 },
314 Vector { _handler: LPTIM2 },
315 Vector { _handler: USB },
316 Vector {
317 _handler: DMA2_Channel6,
318 },
319 Vector {
320 _handler: DMA2_Channel7,
321 },
322 Vector { _handler: LPUART1 },
323 Vector { _handler: QUADSPI },
324 Vector { _handler: I2C3_EV },
325 Vector { _handler: I2C3_ER },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _reserved: 0 },
329 Vector { _handler: TSC },
330 Vector { _reserved: 0 },
331 Vector { _reserved: 0 },
332 Vector { _handler: RNG },
333 Vector { _handler: FPU },
334 Vector { _handler: CRS },
335 ];
336}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 337impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 338impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 339impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l412tb.rs b/embassy-stm32/src/chip/stm32l412tb.rs
index c12d91a6a..88cc20b04 100644
--- a/embassy-stm32/src/chip/stm32l412tb.rs
+++ b/embassy-stm32/src/chip/stm32l412tb.rs
@@ -1,16 +1,339 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8,
5 PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, 5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
9 PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SPI1, 9 PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC,
10 SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG 10 SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG
11); 11);
12pub const SYSCFG_BASE: usize = 0x40010000;
13pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 14pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 15pub const GPIO_STRIDE: usize = 0x400;
16
17pub mod interrupt {
18 pub use cortex_m::interrupt::{CriticalSection, Mutex};
19 pub use embassy::interrupt::{declare, take, Interrupt};
20 pub use embassy_extras::interrupt::Priority4 as Priority;
21
22 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
23 #[allow(non_camel_case_types)]
24 enum InterruptEnum {
25 ADC1_2 = 18,
26 COMP = 64,
27 CRS = 82,
28 DMA1_Channel1 = 11,
29 DMA1_Channel2 = 12,
30 DMA1_Channel3 = 13,
31 DMA1_Channel4 = 14,
32 DMA1_Channel5 = 15,
33 DMA1_Channel6 = 16,
34 DMA1_Channel7 = 17,
35 DMA2_Channel1 = 56,
36 DMA2_Channel2 = 57,
37 DMA2_Channel3 = 58,
38 DMA2_Channel4 = 59,
39 DMA2_Channel5 = 60,
40 DMA2_Channel6 = 68,
41 DMA2_Channel7 = 69,
42 EXTI0 = 6,
43 EXTI1 = 7,
44 EXTI15_10 = 40,
45 EXTI2 = 8,
46 EXTI3 = 9,
47 EXTI4 = 10,
48 EXTI9_5 = 23,
49 FLASH = 4,
50 FPU = 81,
51 I2C1_ER = 32,
52 I2C1_EV = 31,
53 I2C2_ER = 34,
54 I2C2_EV = 33,
55 I2C3_ER = 73,
56 I2C3_EV = 72,
57 LPTIM1 = 65,
58 LPTIM2 = 66,
59 LPUART1 = 70,
60 PVD_PVM = 1,
61 QUADSPI = 71,
62 RCC = 5,
63 RNG = 80,
64 RTC_Alarm = 41,
65 RTC_WKUP = 3,
66 SPI1 = 35,
67 SPI2 = 36,
68 TAMP_STAMP = 2,
69 TIM1_BRK_TIM15 = 24,
70 TIM1_CC = 27,
71 TIM1_TRG_COM = 26,
72 TIM1_UP_TIM16 = 25,
73 TIM2 = 28,
74 TIM6 = 54,
75 TSC = 77,
76 USART1 = 37,
77 USART2 = 38,
78 USART3 = 39,
79 USB = 67,
80 WWDG = 0,
81 }
82 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
83 #[inline(always)]
84 fn number(self) -> u16 {
85 self as u16
86 }
87 }
88
89 declare!(ADC1_2);
90 declare!(COMP);
91 declare!(CRS);
92 declare!(DMA1_Channel1);
93 declare!(DMA1_Channel2);
94 declare!(DMA1_Channel3);
95 declare!(DMA1_Channel4);
96 declare!(DMA1_Channel5);
97 declare!(DMA1_Channel6);
98 declare!(DMA1_Channel7);
99 declare!(DMA2_Channel1);
100 declare!(DMA2_Channel2);
101 declare!(DMA2_Channel3);
102 declare!(DMA2_Channel4);
103 declare!(DMA2_Channel5);
104 declare!(DMA2_Channel6);
105 declare!(DMA2_Channel7);
106 declare!(EXTI0);
107 declare!(EXTI1);
108 declare!(EXTI15_10);
109 declare!(EXTI2);
110 declare!(EXTI3);
111 declare!(EXTI4);
112 declare!(EXTI9_5);
113 declare!(FLASH);
114 declare!(FPU);
115 declare!(I2C1_ER);
116 declare!(I2C1_EV);
117 declare!(I2C2_ER);
118 declare!(I2C2_EV);
119 declare!(I2C3_ER);
120 declare!(I2C3_EV);
121 declare!(LPTIM1);
122 declare!(LPTIM2);
123 declare!(LPUART1);
124 declare!(PVD_PVM);
125 declare!(QUADSPI);
126 declare!(RCC);
127 declare!(RNG);
128 declare!(RTC_Alarm);
129 declare!(RTC_WKUP);
130 declare!(SPI1);
131 declare!(SPI2);
132 declare!(TAMP_STAMP);
133 declare!(TIM1_BRK_TIM15);
134 declare!(TIM1_CC);
135 declare!(TIM1_TRG_COM);
136 declare!(TIM1_UP_TIM16);
137 declare!(TIM2);
138 declare!(TIM6);
139 declare!(TSC);
140 declare!(USART1);
141 declare!(USART2);
142 declare!(USART3);
143 declare!(USB);
144 declare!(WWDG);
145}
146mod interrupt_vector {
147 extern "C" {
148 fn ADC1_2();
149 fn COMP();
150 fn CRS();
151 fn DMA1_Channel1();
152 fn DMA1_Channel2();
153 fn DMA1_Channel3();
154 fn DMA1_Channel4();
155 fn DMA1_Channel5();
156 fn DMA1_Channel6();
157 fn DMA1_Channel7();
158 fn DMA2_Channel1();
159 fn DMA2_Channel2();
160 fn DMA2_Channel3();
161 fn DMA2_Channel4();
162 fn DMA2_Channel5();
163 fn DMA2_Channel6();
164 fn DMA2_Channel7();
165 fn EXTI0();
166 fn EXTI1();
167 fn EXTI15_10();
168 fn EXTI2();
169 fn EXTI3();
170 fn EXTI4();
171 fn EXTI9_5();
172 fn FLASH();
173 fn FPU();
174 fn I2C1_ER();
175 fn I2C1_EV();
176 fn I2C2_ER();
177 fn I2C2_EV();
178 fn I2C3_ER();
179 fn I2C3_EV();
180 fn LPTIM1();
181 fn LPTIM2();
182 fn LPUART1();
183 fn PVD_PVM();
184 fn QUADSPI();
185 fn RCC();
186 fn RNG();
187 fn RTC_Alarm();
188 fn RTC_WKUP();
189 fn SPI1();
190 fn SPI2();
191 fn TAMP_STAMP();
192 fn TIM1_BRK_TIM15();
193 fn TIM1_CC();
194 fn TIM1_TRG_COM();
195 fn TIM1_UP_TIM16();
196 fn TIM2();
197 fn TIM6();
198 fn TSC();
199 fn USART1();
200 fn USART2();
201 fn USART3();
202 fn USB();
203 fn WWDG();
204 }
205 pub union Vector {
206 _handler: unsafe extern "C" fn(),
207 _reserved: u32,
208 }
209 #[link_section = ".vector_table.interrupts"]
210 #[no_mangle]
211 pub static __INTERRUPTS: [Vector; 83] = [
212 Vector { _handler: WWDG },
213 Vector { _handler: PVD_PVM },
214 Vector {
215 _handler: TAMP_STAMP,
216 },
217 Vector { _handler: RTC_WKUP },
218 Vector { _handler: FLASH },
219 Vector { _handler: RCC },
220 Vector { _handler: EXTI0 },
221 Vector { _handler: EXTI1 },
222 Vector { _handler: EXTI2 },
223 Vector { _handler: EXTI3 },
224 Vector { _handler: EXTI4 },
225 Vector {
226 _handler: DMA1_Channel1,
227 },
228 Vector {
229 _handler: DMA1_Channel2,
230 },
231 Vector {
232 _handler: DMA1_Channel3,
233 },
234 Vector {
235 _handler: DMA1_Channel4,
236 },
237 Vector {
238 _handler: DMA1_Channel5,
239 },
240 Vector {
241 _handler: DMA1_Channel6,
242 },
243 Vector {
244 _handler: DMA1_Channel7,
245 },
246 Vector { _handler: ADC1_2 },
247 Vector { _reserved: 0 },
248 Vector { _reserved: 0 },
249 Vector { _reserved: 0 },
250 Vector { _reserved: 0 },
251 Vector { _handler: EXTI9_5 },
252 Vector {
253 _handler: TIM1_BRK_TIM15,
254 },
255 Vector {
256 _handler: TIM1_UP_TIM16,
257 },
258 Vector {
259 _handler: TIM1_TRG_COM,
260 },
261 Vector { _handler: TIM1_CC },
262 Vector { _handler: TIM2 },
263 Vector { _reserved: 0 },
264 Vector { _reserved: 0 },
265 Vector { _handler: I2C1_EV },
266 Vector { _handler: I2C1_ER },
267 Vector { _handler: I2C2_EV },
268 Vector { _handler: I2C2_ER },
269 Vector { _handler: SPI1 },
270 Vector { _handler: SPI2 },
271 Vector { _handler: USART1 },
272 Vector { _handler: USART2 },
273 Vector { _handler: USART3 },
274 Vector {
275 _handler: EXTI15_10,
276 },
277 Vector {
278 _handler: RTC_Alarm,
279 },
280 Vector { _reserved: 0 },
281 Vector { _reserved: 0 },
282 Vector { _reserved: 0 },
283 Vector { _reserved: 0 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _handler: TIM6 },
293 Vector { _reserved: 0 },
294 Vector {
295 _handler: DMA2_Channel1,
296 },
297 Vector {
298 _handler: DMA2_Channel2,
299 },
300 Vector {
301 _handler: DMA2_Channel3,
302 },
303 Vector {
304 _handler: DMA2_Channel4,
305 },
306 Vector {
307 _handler: DMA2_Channel5,
308 },
309 Vector { _reserved: 0 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _handler: COMP },
313 Vector { _handler: LPTIM1 },
314 Vector { _handler: LPTIM2 },
315 Vector { _handler: USB },
316 Vector {
317 _handler: DMA2_Channel6,
318 },
319 Vector {
320 _handler: DMA2_Channel7,
321 },
322 Vector { _handler: LPUART1 },
323 Vector { _handler: QUADSPI },
324 Vector { _handler: I2C3_EV },
325 Vector { _handler: I2C3_ER },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _reserved: 0 },
329 Vector { _handler: TSC },
330 Vector { _reserved: 0 },
331 Vector { _reserved: 0 },
332 Vector { _handler: RNG },
333 Vector { _handler: FPU },
334 Vector { _handler: CRS },
335 ];
336}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 337impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 338impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 339impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l422cb.rs b/embassy-stm32/src/chip/stm32l422cb.rs
index f3734f940..015b11be3 100644
--- a/embassy-stm32/src/chip/stm32l422cb.rs
+++ b/embassy-stm32/src/chip/stm32l422cb.rs
@@ -1,8 +1,8 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -10,8 +10,334 @@ peripherals!(
10 RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, 10 RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB,
11 WWDG 11 WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40010000;
14pub const EXTI_BASE: usize = 0x40010400;
13pub const GPIO_BASE: usize = 0x48000000; 15pub const GPIO_BASE: usize = 0x48000000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
17
18pub mod interrupt {
19 pub use cortex_m::interrupt::{CriticalSection, Mutex};
20 pub use embassy::interrupt::{declare, take, Interrupt};
21 pub use embassy_extras::interrupt::Priority4 as Priority;
22
23 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
24 #[allow(non_camel_case_types)]
25 enum InterruptEnum {
26 ADC1_2 = 18,
27 AES = 79,
28 COMP = 64,
29 CRS = 82,
30 DMA1_Channel1 = 11,
31 DMA1_Channel2 = 12,
32 DMA1_Channel3 = 13,
33 DMA1_Channel4 = 14,
34 DMA1_Channel5 = 15,
35 DMA1_Channel6 = 16,
36 DMA1_Channel7 = 17,
37 DMA2_Channel1 = 56,
38 DMA2_Channel2 = 57,
39 DMA2_Channel3 = 58,
40 DMA2_Channel4 = 59,
41 DMA2_Channel5 = 60,
42 DMA2_Channel6 = 68,
43 DMA2_Channel7 = 69,
44 EXTI0 = 6,
45 EXTI1 = 7,
46 EXTI15_10 = 40,
47 EXTI2 = 8,
48 EXTI3 = 9,
49 EXTI4 = 10,
50 EXTI9_5 = 23,
51 FLASH = 4,
52 FPU = 81,
53 I2C1_ER = 32,
54 I2C1_EV = 31,
55 I2C2_ER = 34,
56 I2C2_EV = 33,
57 I2C3_ER = 73,
58 I2C3_EV = 72,
59 LPTIM1 = 65,
60 LPTIM2 = 66,
61 LPUART1 = 70,
62 PVD_PVM = 1,
63 QUADSPI = 71,
64 RCC = 5,
65 RNG = 80,
66 RTC_Alarm = 41,
67 RTC_WKUP = 3,
68 SPI1 = 35,
69 SPI2 = 36,
70 TAMP_STAMP = 2,
71 TIM1_BRK_TIM15 = 24,
72 TIM1_CC = 27,
73 TIM1_TRG_COM = 26,
74 TIM1_UP_TIM16 = 25,
75 TIM2 = 28,
76 TIM6 = 54,
77 TSC = 77,
78 USART1 = 37,
79 USART2 = 38,
80 USART3 = 39,
81 USB = 67,
82 WWDG = 0,
83 }
84 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
85 #[inline(always)]
86 fn number(self) -> u16 {
87 self as u16
88 }
89 }
90
91 declare!(ADC1_2);
92 declare!(AES);
93 declare!(COMP);
94 declare!(CRS);
95 declare!(DMA1_Channel1);
96 declare!(DMA1_Channel2);
97 declare!(DMA1_Channel3);
98 declare!(DMA1_Channel4);
99 declare!(DMA1_Channel5);
100 declare!(DMA1_Channel6);
101 declare!(DMA1_Channel7);
102 declare!(DMA2_Channel1);
103 declare!(DMA2_Channel2);
104 declare!(DMA2_Channel3);
105 declare!(DMA2_Channel4);
106 declare!(DMA2_Channel5);
107 declare!(DMA2_Channel6);
108 declare!(DMA2_Channel7);
109 declare!(EXTI0);
110 declare!(EXTI1);
111 declare!(EXTI15_10);
112 declare!(EXTI2);
113 declare!(EXTI3);
114 declare!(EXTI4);
115 declare!(EXTI9_5);
116 declare!(FLASH);
117 declare!(FPU);
118 declare!(I2C1_ER);
119 declare!(I2C1_EV);
120 declare!(I2C2_ER);
121 declare!(I2C2_EV);
122 declare!(I2C3_ER);
123 declare!(I2C3_EV);
124 declare!(LPTIM1);
125 declare!(LPTIM2);
126 declare!(LPUART1);
127 declare!(PVD_PVM);
128 declare!(QUADSPI);
129 declare!(RCC);
130 declare!(RNG);
131 declare!(RTC_Alarm);
132 declare!(RTC_WKUP);
133 declare!(SPI1);
134 declare!(SPI2);
135 declare!(TAMP_STAMP);
136 declare!(TIM1_BRK_TIM15);
137 declare!(TIM1_CC);
138 declare!(TIM1_TRG_COM);
139 declare!(TIM1_UP_TIM16);
140 declare!(TIM2);
141 declare!(TIM6);
142 declare!(TSC);
143 declare!(USART1);
144 declare!(USART2);
145 declare!(USART3);
146 declare!(USB);
147 declare!(WWDG);
148}
149mod interrupt_vector {
150 extern "C" {
151 fn ADC1_2();
152 fn AES();
153 fn COMP();
154 fn CRS();
155 fn DMA1_Channel1();
156 fn DMA1_Channel2();
157 fn DMA1_Channel3();
158 fn DMA1_Channel4();
159 fn DMA1_Channel5();
160 fn DMA1_Channel6();
161 fn DMA1_Channel7();
162 fn DMA2_Channel1();
163 fn DMA2_Channel2();
164 fn DMA2_Channel3();
165 fn DMA2_Channel4();
166 fn DMA2_Channel5();
167 fn DMA2_Channel6();
168 fn DMA2_Channel7();
169 fn EXTI0();
170 fn EXTI1();
171 fn EXTI15_10();
172 fn EXTI2();
173 fn EXTI3();
174 fn EXTI4();
175 fn EXTI9_5();
176 fn FLASH();
177 fn FPU();
178 fn I2C1_ER();
179 fn I2C1_EV();
180 fn I2C2_ER();
181 fn I2C2_EV();
182 fn I2C3_ER();
183 fn I2C3_EV();
184 fn LPTIM1();
185 fn LPTIM2();
186 fn LPUART1();
187 fn PVD_PVM();
188 fn QUADSPI();
189 fn RCC();
190 fn RNG();
191 fn RTC_Alarm();
192 fn RTC_WKUP();
193 fn SPI1();
194 fn SPI2();
195 fn TAMP_STAMP();
196 fn TIM1_BRK_TIM15();
197 fn TIM1_CC();
198 fn TIM1_TRG_COM();
199 fn TIM1_UP_TIM16();
200 fn TIM2();
201 fn TIM6();
202 fn TSC();
203 fn USART1();
204 fn USART2();
205 fn USART3();
206 fn USB();
207 fn WWDG();
208 }
209 pub union Vector {
210 _handler: unsafe extern "C" fn(),
211 _reserved: u32,
212 }
213 #[link_section = ".vector_table.interrupts"]
214 #[no_mangle]
215 pub static __INTERRUPTS: [Vector; 83] = [
216 Vector { _handler: WWDG },
217 Vector { _handler: PVD_PVM },
218 Vector {
219 _handler: TAMP_STAMP,
220 },
221 Vector { _handler: RTC_WKUP },
222 Vector { _handler: FLASH },
223 Vector { _handler: RCC },
224 Vector { _handler: EXTI0 },
225 Vector { _handler: EXTI1 },
226 Vector { _handler: EXTI2 },
227 Vector { _handler: EXTI3 },
228 Vector { _handler: EXTI4 },
229 Vector {
230 _handler: DMA1_Channel1,
231 },
232 Vector {
233 _handler: DMA1_Channel2,
234 },
235 Vector {
236 _handler: DMA1_Channel3,
237 },
238 Vector {
239 _handler: DMA1_Channel4,
240 },
241 Vector {
242 _handler: DMA1_Channel5,
243 },
244 Vector {
245 _handler: DMA1_Channel6,
246 },
247 Vector {
248 _handler: DMA1_Channel7,
249 },
250 Vector { _handler: ADC1_2 },
251 Vector { _reserved: 0 },
252 Vector { _reserved: 0 },
253 Vector { _reserved: 0 },
254 Vector { _reserved: 0 },
255 Vector { _handler: EXTI9_5 },
256 Vector {
257 _handler: TIM1_BRK_TIM15,
258 },
259 Vector {
260 _handler: TIM1_UP_TIM16,
261 },
262 Vector {
263 _handler: TIM1_TRG_COM,
264 },
265 Vector { _handler: TIM1_CC },
266 Vector { _handler: TIM2 },
267 Vector { _reserved: 0 },
268 Vector { _reserved: 0 },
269 Vector { _handler: I2C1_EV },
270 Vector { _handler: I2C1_ER },
271 Vector { _handler: I2C2_EV },
272 Vector { _handler: I2C2_ER },
273 Vector { _handler: SPI1 },
274 Vector { _handler: SPI2 },
275 Vector { _handler: USART1 },
276 Vector { _handler: USART2 },
277 Vector { _handler: USART3 },
278 Vector {
279 _handler: EXTI15_10,
280 },
281 Vector {
282 _handler: RTC_Alarm,
283 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _reserved: 0 },
293 Vector { _reserved: 0 },
294 Vector { _reserved: 0 },
295 Vector { _reserved: 0 },
296 Vector { _handler: TIM6 },
297 Vector { _reserved: 0 },
298 Vector {
299 _handler: DMA2_Channel1,
300 },
301 Vector {
302 _handler: DMA2_Channel2,
303 },
304 Vector {
305 _handler: DMA2_Channel3,
306 },
307 Vector {
308 _handler: DMA2_Channel4,
309 },
310 Vector {
311 _handler: DMA2_Channel5,
312 },
313 Vector { _reserved: 0 },
314 Vector { _reserved: 0 },
315 Vector { _reserved: 0 },
316 Vector { _handler: COMP },
317 Vector { _handler: LPTIM1 },
318 Vector { _handler: LPTIM2 },
319 Vector { _handler: USB },
320 Vector {
321 _handler: DMA2_Channel6,
322 },
323 Vector {
324 _handler: DMA2_Channel7,
325 },
326 Vector { _handler: LPUART1 },
327 Vector { _handler: QUADSPI },
328 Vector { _handler: I2C3_EV },
329 Vector { _handler: I2C3_ER },
330 Vector { _reserved: 0 },
331 Vector { _reserved: 0 },
332 Vector { _reserved: 0 },
333 Vector { _handler: TSC },
334 Vector { _reserved: 0 },
335 Vector { _handler: AES },
336 Vector { _handler: RNG },
337 Vector { _handler: FPU },
338 Vector { _handler: CRS },
339 ];
340}
15impl_gpio_pin!(PA0, 0, 0, EXTI0); 341impl_gpio_pin!(PA0, 0, 0, EXTI0);
16impl_gpio_pin!(PA1, 0, 1, EXTI1); 342impl_gpio_pin!(PA1, 0, 1, EXTI1);
17impl_gpio_pin!(PA2, 0, 2, EXTI2); 343impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l422kb.rs b/embassy-stm32/src/chip/stm32l422kb.rs
index 634db7aaf..26decd09b 100644
--- a/embassy-stm32/src/chip/stm32l422kb.rs
+++ b/embassy-stm32/src/chip/stm32l422kb.rs
@@ -1,16 +1,342 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
9 PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, 9 PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC,
10 SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG 10 SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG
11); 11);
12pub const SYSCFG_BASE: usize = 0x40010000;
13pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 14pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 15pub const GPIO_STRIDE: usize = 0x400;
16
17pub mod interrupt {
18 pub use cortex_m::interrupt::{CriticalSection, Mutex};
19 pub use embassy::interrupt::{declare, take, Interrupt};
20 pub use embassy_extras::interrupt::Priority4 as Priority;
21
22 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
23 #[allow(non_camel_case_types)]
24 enum InterruptEnum {
25 ADC1_2 = 18,
26 AES = 79,
27 COMP = 64,
28 CRS = 82,
29 DMA1_Channel1 = 11,
30 DMA1_Channel2 = 12,
31 DMA1_Channel3 = 13,
32 DMA1_Channel4 = 14,
33 DMA1_Channel5 = 15,
34 DMA1_Channel6 = 16,
35 DMA1_Channel7 = 17,
36 DMA2_Channel1 = 56,
37 DMA2_Channel2 = 57,
38 DMA2_Channel3 = 58,
39 DMA2_Channel4 = 59,
40 DMA2_Channel5 = 60,
41 DMA2_Channel6 = 68,
42 DMA2_Channel7 = 69,
43 EXTI0 = 6,
44 EXTI1 = 7,
45 EXTI15_10 = 40,
46 EXTI2 = 8,
47 EXTI3 = 9,
48 EXTI4 = 10,
49 EXTI9_5 = 23,
50 FLASH = 4,
51 FPU = 81,
52 I2C1_ER = 32,
53 I2C1_EV = 31,
54 I2C2_ER = 34,
55 I2C2_EV = 33,
56 I2C3_ER = 73,
57 I2C3_EV = 72,
58 LPTIM1 = 65,
59 LPTIM2 = 66,
60 LPUART1 = 70,
61 PVD_PVM = 1,
62 QUADSPI = 71,
63 RCC = 5,
64 RNG = 80,
65 RTC_Alarm = 41,
66 RTC_WKUP = 3,
67 SPI1 = 35,
68 SPI2 = 36,
69 TAMP_STAMP = 2,
70 TIM1_BRK_TIM15 = 24,
71 TIM1_CC = 27,
72 TIM1_TRG_COM = 26,
73 TIM1_UP_TIM16 = 25,
74 TIM2 = 28,
75 TIM6 = 54,
76 TSC = 77,
77 USART1 = 37,
78 USART2 = 38,
79 USART3 = 39,
80 USB = 67,
81 WWDG = 0,
82 }
83 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
84 #[inline(always)]
85 fn number(self) -> u16 {
86 self as u16
87 }
88 }
89
90 declare!(ADC1_2);
91 declare!(AES);
92 declare!(COMP);
93 declare!(CRS);
94 declare!(DMA1_Channel1);
95 declare!(DMA1_Channel2);
96 declare!(DMA1_Channel3);
97 declare!(DMA1_Channel4);
98 declare!(DMA1_Channel5);
99 declare!(DMA1_Channel6);
100 declare!(DMA1_Channel7);
101 declare!(DMA2_Channel1);
102 declare!(DMA2_Channel2);
103 declare!(DMA2_Channel3);
104 declare!(DMA2_Channel4);
105 declare!(DMA2_Channel5);
106 declare!(DMA2_Channel6);
107 declare!(DMA2_Channel7);
108 declare!(EXTI0);
109 declare!(EXTI1);
110 declare!(EXTI15_10);
111 declare!(EXTI2);
112 declare!(EXTI3);
113 declare!(EXTI4);
114 declare!(EXTI9_5);
115 declare!(FLASH);
116 declare!(FPU);
117 declare!(I2C1_ER);
118 declare!(I2C1_EV);
119 declare!(I2C2_ER);
120 declare!(I2C2_EV);
121 declare!(I2C3_ER);
122 declare!(I2C3_EV);
123 declare!(LPTIM1);
124 declare!(LPTIM2);
125 declare!(LPUART1);
126 declare!(PVD_PVM);
127 declare!(QUADSPI);
128 declare!(RCC);
129 declare!(RNG);
130 declare!(RTC_Alarm);
131 declare!(RTC_WKUP);
132 declare!(SPI1);
133 declare!(SPI2);
134 declare!(TAMP_STAMP);
135 declare!(TIM1_BRK_TIM15);
136 declare!(TIM1_CC);
137 declare!(TIM1_TRG_COM);
138 declare!(TIM1_UP_TIM16);
139 declare!(TIM2);
140 declare!(TIM6);
141 declare!(TSC);
142 declare!(USART1);
143 declare!(USART2);
144 declare!(USART3);
145 declare!(USB);
146 declare!(WWDG);
147}
148mod interrupt_vector {
149 extern "C" {
150 fn ADC1_2();
151 fn AES();
152 fn COMP();
153 fn CRS();
154 fn DMA1_Channel1();
155 fn DMA1_Channel2();
156 fn DMA1_Channel3();
157 fn DMA1_Channel4();
158 fn DMA1_Channel5();
159 fn DMA1_Channel6();
160 fn DMA1_Channel7();
161 fn DMA2_Channel1();
162 fn DMA2_Channel2();
163 fn DMA2_Channel3();
164 fn DMA2_Channel4();
165 fn DMA2_Channel5();
166 fn DMA2_Channel6();
167 fn DMA2_Channel7();
168 fn EXTI0();
169 fn EXTI1();
170 fn EXTI15_10();
171 fn EXTI2();
172 fn EXTI3();
173 fn EXTI4();
174 fn EXTI9_5();
175 fn FLASH();
176 fn FPU();
177 fn I2C1_ER();
178 fn I2C1_EV();
179 fn I2C2_ER();
180 fn I2C2_EV();
181 fn I2C3_ER();
182 fn I2C3_EV();
183 fn LPTIM1();
184 fn LPTIM2();
185 fn LPUART1();
186 fn PVD_PVM();
187 fn QUADSPI();
188 fn RCC();
189 fn RNG();
190 fn RTC_Alarm();
191 fn RTC_WKUP();
192 fn SPI1();
193 fn SPI2();
194 fn TAMP_STAMP();
195 fn TIM1_BRK_TIM15();
196 fn TIM1_CC();
197 fn TIM1_TRG_COM();
198 fn TIM1_UP_TIM16();
199 fn TIM2();
200 fn TIM6();
201 fn TSC();
202 fn USART1();
203 fn USART2();
204 fn USART3();
205 fn USB();
206 fn WWDG();
207 }
208 pub union Vector {
209 _handler: unsafe extern "C" fn(),
210 _reserved: u32,
211 }
212 #[link_section = ".vector_table.interrupts"]
213 #[no_mangle]
214 pub static __INTERRUPTS: [Vector; 83] = [
215 Vector { _handler: WWDG },
216 Vector { _handler: PVD_PVM },
217 Vector {
218 _handler: TAMP_STAMP,
219 },
220 Vector { _handler: RTC_WKUP },
221 Vector { _handler: FLASH },
222 Vector { _handler: RCC },
223 Vector { _handler: EXTI0 },
224 Vector { _handler: EXTI1 },
225 Vector { _handler: EXTI2 },
226 Vector { _handler: EXTI3 },
227 Vector { _handler: EXTI4 },
228 Vector {
229 _handler: DMA1_Channel1,
230 },
231 Vector {
232 _handler: DMA1_Channel2,
233 },
234 Vector {
235 _handler: DMA1_Channel3,
236 },
237 Vector {
238 _handler: DMA1_Channel4,
239 },
240 Vector {
241 _handler: DMA1_Channel5,
242 },
243 Vector {
244 _handler: DMA1_Channel6,
245 },
246 Vector {
247 _handler: DMA1_Channel7,
248 },
249 Vector { _handler: ADC1_2 },
250 Vector { _reserved: 0 },
251 Vector { _reserved: 0 },
252 Vector { _reserved: 0 },
253 Vector { _reserved: 0 },
254 Vector { _handler: EXTI9_5 },
255 Vector {
256 _handler: TIM1_BRK_TIM15,
257 },
258 Vector {
259 _handler: TIM1_UP_TIM16,
260 },
261 Vector {
262 _handler: TIM1_TRG_COM,
263 },
264 Vector { _handler: TIM1_CC },
265 Vector { _handler: TIM2 },
266 Vector { _reserved: 0 },
267 Vector { _reserved: 0 },
268 Vector { _handler: I2C1_EV },
269 Vector { _handler: I2C1_ER },
270 Vector { _handler: I2C2_EV },
271 Vector { _handler: I2C2_ER },
272 Vector { _handler: SPI1 },
273 Vector { _handler: SPI2 },
274 Vector { _handler: USART1 },
275 Vector { _handler: USART2 },
276 Vector { _handler: USART3 },
277 Vector {
278 _handler: EXTI15_10,
279 },
280 Vector {
281 _handler: RTC_Alarm,
282 },
283 Vector { _reserved: 0 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _reserved: 0 },
293 Vector { _reserved: 0 },
294 Vector { _reserved: 0 },
295 Vector { _handler: TIM6 },
296 Vector { _reserved: 0 },
297 Vector {
298 _handler: DMA2_Channel1,
299 },
300 Vector {
301 _handler: DMA2_Channel2,
302 },
303 Vector {
304 _handler: DMA2_Channel3,
305 },
306 Vector {
307 _handler: DMA2_Channel4,
308 },
309 Vector {
310 _handler: DMA2_Channel5,
311 },
312 Vector { _reserved: 0 },
313 Vector { _reserved: 0 },
314 Vector { _reserved: 0 },
315 Vector { _handler: COMP },
316 Vector { _handler: LPTIM1 },
317 Vector { _handler: LPTIM2 },
318 Vector { _handler: USB },
319 Vector {
320 _handler: DMA2_Channel6,
321 },
322 Vector {
323 _handler: DMA2_Channel7,
324 },
325 Vector { _handler: LPUART1 },
326 Vector { _handler: QUADSPI },
327 Vector { _handler: I2C3_EV },
328 Vector { _handler: I2C3_ER },
329 Vector { _reserved: 0 },
330 Vector { _reserved: 0 },
331 Vector { _reserved: 0 },
332 Vector { _handler: TSC },
333 Vector { _reserved: 0 },
334 Vector { _handler: AES },
335 Vector { _handler: RNG },
336 Vector { _handler: FPU },
337 Vector { _handler: CRS },
338 ];
339}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 340impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 341impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 342impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l422rb.rs b/embassy-stm32/src/chip/stm32l422rb.rs
index f3734f940..015b11be3 100644
--- a/embassy-stm32/src/chip/stm32l422rb.rs
+++ b/embassy-stm32/src/chip/stm32l422rb.rs
@@ -1,8 +1,8 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -10,8 +10,334 @@ peripherals!(
10 RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, 10 RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB,
11 WWDG 11 WWDG
12); 12);
13pub const SYSCFG_BASE: usize = 0x40010000;
14pub const EXTI_BASE: usize = 0x40010400;
13pub const GPIO_BASE: usize = 0x48000000; 15pub const GPIO_BASE: usize = 0x48000000;
14pub const GPIO_STRIDE: usize = 0x400; 16pub const GPIO_STRIDE: usize = 0x400;
17
18pub mod interrupt {
19 pub use cortex_m::interrupt::{CriticalSection, Mutex};
20 pub use embassy::interrupt::{declare, take, Interrupt};
21 pub use embassy_extras::interrupt::Priority4 as Priority;
22
23 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
24 #[allow(non_camel_case_types)]
25 enum InterruptEnum {
26 ADC1_2 = 18,
27 AES = 79,
28 COMP = 64,
29 CRS = 82,
30 DMA1_Channel1 = 11,
31 DMA1_Channel2 = 12,
32 DMA1_Channel3 = 13,
33 DMA1_Channel4 = 14,
34 DMA1_Channel5 = 15,
35 DMA1_Channel6 = 16,
36 DMA1_Channel7 = 17,
37 DMA2_Channel1 = 56,
38 DMA2_Channel2 = 57,
39 DMA2_Channel3 = 58,
40 DMA2_Channel4 = 59,
41 DMA2_Channel5 = 60,
42 DMA2_Channel6 = 68,
43 DMA2_Channel7 = 69,
44 EXTI0 = 6,
45 EXTI1 = 7,
46 EXTI15_10 = 40,
47 EXTI2 = 8,
48 EXTI3 = 9,
49 EXTI4 = 10,
50 EXTI9_5 = 23,
51 FLASH = 4,
52 FPU = 81,
53 I2C1_ER = 32,
54 I2C1_EV = 31,
55 I2C2_ER = 34,
56 I2C2_EV = 33,
57 I2C3_ER = 73,
58 I2C3_EV = 72,
59 LPTIM1 = 65,
60 LPTIM2 = 66,
61 LPUART1 = 70,
62 PVD_PVM = 1,
63 QUADSPI = 71,
64 RCC = 5,
65 RNG = 80,
66 RTC_Alarm = 41,
67 RTC_WKUP = 3,
68 SPI1 = 35,
69 SPI2 = 36,
70 TAMP_STAMP = 2,
71 TIM1_BRK_TIM15 = 24,
72 TIM1_CC = 27,
73 TIM1_TRG_COM = 26,
74 TIM1_UP_TIM16 = 25,
75 TIM2 = 28,
76 TIM6 = 54,
77 TSC = 77,
78 USART1 = 37,
79 USART2 = 38,
80 USART3 = 39,
81 USB = 67,
82 WWDG = 0,
83 }
84 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
85 #[inline(always)]
86 fn number(self) -> u16 {
87 self as u16
88 }
89 }
90
91 declare!(ADC1_2);
92 declare!(AES);
93 declare!(COMP);
94 declare!(CRS);
95 declare!(DMA1_Channel1);
96 declare!(DMA1_Channel2);
97 declare!(DMA1_Channel3);
98 declare!(DMA1_Channel4);
99 declare!(DMA1_Channel5);
100 declare!(DMA1_Channel6);
101 declare!(DMA1_Channel7);
102 declare!(DMA2_Channel1);
103 declare!(DMA2_Channel2);
104 declare!(DMA2_Channel3);
105 declare!(DMA2_Channel4);
106 declare!(DMA2_Channel5);
107 declare!(DMA2_Channel6);
108 declare!(DMA2_Channel7);
109 declare!(EXTI0);
110 declare!(EXTI1);
111 declare!(EXTI15_10);
112 declare!(EXTI2);
113 declare!(EXTI3);
114 declare!(EXTI4);
115 declare!(EXTI9_5);
116 declare!(FLASH);
117 declare!(FPU);
118 declare!(I2C1_ER);
119 declare!(I2C1_EV);
120 declare!(I2C2_ER);
121 declare!(I2C2_EV);
122 declare!(I2C3_ER);
123 declare!(I2C3_EV);
124 declare!(LPTIM1);
125 declare!(LPTIM2);
126 declare!(LPUART1);
127 declare!(PVD_PVM);
128 declare!(QUADSPI);
129 declare!(RCC);
130 declare!(RNG);
131 declare!(RTC_Alarm);
132 declare!(RTC_WKUP);
133 declare!(SPI1);
134 declare!(SPI2);
135 declare!(TAMP_STAMP);
136 declare!(TIM1_BRK_TIM15);
137 declare!(TIM1_CC);
138 declare!(TIM1_TRG_COM);
139 declare!(TIM1_UP_TIM16);
140 declare!(TIM2);
141 declare!(TIM6);
142 declare!(TSC);
143 declare!(USART1);
144 declare!(USART2);
145 declare!(USART3);
146 declare!(USB);
147 declare!(WWDG);
148}
149mod interrupt_vector {
150 extern "C" {
151 fn ADC1_2();
152 fn AES();
153 fn COMP();
154 fn CRS();
155 fn DMA1_Channel1();
156 fn DMA1_Channel2();
157 fn DMA1_Channel3();
158 fn DMA1_Channel4();
159 fn DMA1_Channel5();
160 fn DMA1_Channel6();
161 fn DMA1_Channel7();
162 fn DMA2_Channel1();
163 fn DMA2_Channel2();
164 fn DMA2_Channel3();
165 fn DMA2_Channel4();
166 fn DMA2_Channel5();
167 fn DMA2_Channel6();
168 fn DMA2_Channel7();
169 fn EXTI0();
170 fn EXTI1();
171 fn EXTI15_10();
172 fn EXTI2();
173 fn EXTI3();
174 fn EXTI4();
175 fn EXTI9_5();
176 fn FLASH();
177 fn FPU();
178 fn I2C1_ER();
179 fn I2C1_EV();
180 fn I2C2_ER();
181 fn I2C2_EV();
182 fn I2C3_ER();
183 fn I2C3_EV();
184 fn LPTIM1();
185 fn LPTIM2();
186 fn LPUART1();
187 fn PVD_PVM();
188 fn QUADSPI();
189 fn RCC();
190 fn RNG();
191 fn RTC_Alarm();
192 fn RTC_WKUP();
193 fn SPI1();
194 fn SPI2();
195 fn TAMP_STAMP();
196 fn TIM1_BRK_TIM15();
197 fn TIM1_CC();
198 fn TIM1_TRG_COM();
199 fn TIM1_UP_TIM16();
200 fn TIM2();
201 fn TIM6();
202 fn TSC();
203 fn USART1();
204 fn USART2();
205 fn USART3();
206 fn USB();
207 fn WWDG();
208 }
209 pub union Vector {
210 _handler: unsafe extern "C" fn(),
211 _reserved: u32,
212 }
213 #[link_section = ".vector_table.interrupts"]
214 #[no_mangle]
215 pub static __INTERRUPTS: [Vector; 83] = [
216 Vector { _handler: WWDG },
217 Vector { _handler: PVD_PVM },
218 Vector {
219 _handler: TAMP_STAMP,
220 },
221 Vector { _handler: RTC_WKUP },
222 Vector { _handler: FLASH },
223 Vector { _handler: RCC },
224 Vector { _handler: EXTI0 },
225 Vector { _handler: EXTI1 },
226 Vector { _handler: EXTI2 },
227 Vector { _handler: EXTI3 },
228 Vector { _handler: EXTI4 },
229 Vector {
230 _handler: DMA1_Channel1,
231 },
232 Vector {
233 _handler: DMA1_Channel2,
234 },
235 Vector {
236 _handler: DMA1_Channel3,
237 },
238 Vector {
239 _handler: DMA1_Channel4,
240 },
241 Vector {
242 _handler: DMA1_Channel5,
243 },
244 Vector {
245 _handler: DMA1_Channel6,
246 },
247 Vector {
248 _handler: DMA1_Channel7,
249 },
250 Vector { _handler: ADC1_2 },
251 Vector { _reserved: 0 },
252 Vector { _reserved: 0 },
253 Vector { _reserved: 0 },
254 Vector { _reserved: 0 },
255 Vector { _handler: EXTI9_5 },
256 Vector {
257 _handler: TIM1_BRK_TIM15,
258 },
259 Vector {
260 _handler: TIM1_UP_TIM16,
261 },
262 Vector {
263 _handler: TIM1_TRG_COM,
264 },
265 Vector { _handler: TIM1_CC },
266 Vector { _handler: TIM2 },
267 Vector { _reserved: 0 },
268 Vector { _reserved: 0 },
269 Vector { _handler: I2C1_EV },
270 Vector { _handler: I2C1_ER },
271 Vector { _handler: I2C2_EV },
272 Vector { _handler: I2C2_ER },
273 Vector { _handler: SPI1 },
274 Vector { _handler: SPI2 },
275 Vector { _handler: USART1 },
276 Vector { _handler: USART2 },
277 Vector { _handler: USART3 },
278 Vector {
279 _handler: EXTI15_10,
280 },
281 Vector {
282 _handler: RTC_Alarm,
283 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _reserved: 0 },
293 Vector { _reserved: 0 },
294 Vector { _reserved: 0 },
295 Vector { _reserved: 0 },
296 Vector { _handler: TIM6 },
297 Vector { _reserved: 0 },
298 Vector {
299 _handler: DMA2_Channel1,
300 },
301 Vector {
302 _handler: DMA2_Channel2,
303 },
304 Vector {
305 _handler: DMA2_Channel3,
306 },
307 Vector {
308 _handler: DMA2_Channel4,
309 },
310 Vector {
311 _handler: DMA2_Channel5,
312 },
313 Vector { _reserved: 0 },
314 Vector { _reserved: 0 },
315 Vector { _reserved: 0 },
316 Vector { _handler: COMP },
317 Vector { _handler: LPTIM1 },
318 Vector { _handler: LPTIM2 },
319 Vector { _handler: USB },
320 Vector {
321 _handler: DMA2_Channel6,
322 },
323 Vector {
324 _handler: DMA2_Channel7,
325 },
326 Vector { _handler: LPUART1 },
327 Vector { _handler: QUADSPI },
328 Vector { _handler: I2C3_EV },
329 Vector { _handler: I2C3_ER },
330 Vector { _reserved: 0 },
331 Vector { _reserved: 0 },
332 Vector { _reserved: 0 },
333 Vector { _handler: TSC },
334 Vector { _reserved: 0 },
335 Vector { _handler: AES },
336 Vector { _handler: RNG },
337 Vector { _handler: FPU },
338 Vector { _handler: CRS },
339 ];
340}
15impl_gpio_pin!(PA0, 0, 0, EXTI0); 341impl_gpio_pin!(PA0, 0, 0, EXTI0);
16impl_gpio_pin!(PA1, 0, 1, EXTI1); 342impl_gpio_pin!(PA1, 0, 1, EXTI1);
17impl_gpio_pin!(PA2, 0, 2, EXTI2); 343impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l422tb.rs b/embassy-stm32/src/chip/stm32l422tb.rs
index 634db7aaf..26decd09b 100644
--- a/embassy-stm32/src/chip/stm32l422tb.rs
+++ b/embassy-stm32/src/chip/stm32l422tb.rs
@@ -1,16 +1,342 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7,
5 PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11,
8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 8 PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
9 PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, 9 PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC,
10 SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG 10 SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG
11); 11);
12pub const SYSCFG_BASE: usize = 0x40010000;
13pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 14pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 15pub const GPIO_STRIDE: usize = 0x400;
16
17pub mod interrupt {
18 pub use cortex_m::interrupt::{CriticalSection, Mutex};
19 pub use embassy::interrupt::{declare, take, Interrupt};
20 pub use embassy_extras::interrupt::Priority4 as Priority;
21
22 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
23 #[allow(non_camel_case_types)]
24 enum InterruptEnum {
25 ADC1_2 = 18,
26 AES = 79,
27 COMP = 64,
28 CRS = 82,
29 DMA1_Channel1 = 11,
30 DMA1_Channel2 = 12,
31 DMA1_Channel3 = 13,
32 DMA1_Channel4 = 14,
33 DMA1_Channel5 = 15,
34 DMA1_Channel6 = 16,
35 DMA1_Channel7 = 17,
36 DMA2_Channel1 = 56,
37 DMA2_Channel2 = 57,
38 DMA2_Channel3 = 58,
39 DMA2_Channel4 = 59,
40 DMA2_Channel5 = 60,
41 DMA2_Channel6 = 68,
42 DMA2_Channel7 = 69,
43 EXTI0 = 6,
44 EXTI1 = 7,
45 EXTI15_10 = 40,
46 EXTI2 = 8,
47 EXTI3 = 9,
48 EXTI4 = 10,
49 EXTI9_5 = 23,
50 FLASH = 4,
51 FPU = 81,
52 I2C1_ER = 32,
53 I2C1_EV = 31,
54 I2C2_ER = 34,
55 I2C2_EV = 33,
56 I2C3_ER = 73,
57 I2C3_EV = 72,
58 LPTIM1 = 65,
59 LPTIM2 = 66,
60 LPUART1 = 70,
61 PVD_PVM = 1,
62 QUADSPI = 71,
63 RCC = 5,
64 RNG = 80,
65 RTC_Alarm = 41,
66 RTC_WKUP = 3,
67 SPI1 = 35,
68 SPI2 = 36,
69 TAMP_STAMP = 2,
70 TIM1_BRK_TIM15 = 24,
71 TIM1_CC = 27,
72 TIM1_TRG_COM = 26,
73 TIM1_UP_TIM16 = 25,
74 TIM2 = 28,
75 TIM6 = 54,
76 TSC = 77,
77 USART1 = 37,
78 USART2 = 38,
79 USART3 = 39,
80 USB = 67,
81 WWDG = 0,
82 }
83 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
84 #[inline(always)]
85 fn number(self) -> u16 {
86 self as u16
87 }
88 }
89
90 declare!(ADC1_2);
91 declare!(AES);
92 declare!(COMP);
93 declare!(CRS);
94 declare!(DMA1_Channel1);
95 declare!(DMA1_Channel2);
96 declare!(DMA1_Channel3);
97 declare!(DMA1_Channel4);
98 declare!(DMA1_Channel5);
99 declare!(DMA1_Channel6);
100 declare!(DMA1_Channel7);
101 declare!(DMA2_Channel1);
102 declare!(DMA2_Channel2);
103 declare!(DMA2_Channel3);
104 declare!(DMA2_Channel4);
105 declare!(DMA2_Channel5);
106 declare!(DMA2_Channel6);
107 declare!(DMA2_Channel7);
108 declare!(EXTI0);
109 declare!(EXTI1);
110 declare!(EXTI15_10);
111 declare!(EXTI2);
112 declare!(EXTI3);
113 declare!(EXTI4);
114 declare!(EXTI9_5);
115 declare!(FLASH);
116 declare!(FPU);
117 declare!(I2C1_ER);
118 declare!(I2C1_EV);
119 declare!(I2C2_ER);
120 declare!(I2C2_EV);
121 declare!(I2C3_ER);
122 declare!(I2C3_EV);
123 declare!(LPTIM1);
124 declare!(LPTIM2);
125 declare!(LPUART1);
126 declare!(PVD_PVM);
127 declare!(QUADSPI);
128 declare!(RCC);
129 declare!(RNG);
130 declare!(RTC_Alarm);
131 declare!(RTC_WKUP);
132 declare!(SPI1);
133 declare!(SPI2);
134 declare!(TAMP_STAMP);
135 declare!(TIM1_BRK_TIM15);
136 declare!(TIM1_CC);
137 declare!(TIM1_TRG_COM);
138 declare!(TIM1_UP_TIM16);
139 declare!(TIM2);
140 declare!(TIM6);
141 declare!(TSC);
142 declare!(USART1);
143 declare!(USART2);
144 declare!(USART3);
145 declare!(USB);
146 declare!(WWDG);
147}
148mod interrupt_vector {
149 extern "C" {
150 fn ADC1_2();
151 fn AES();
152 fn COMP();
153 fn CRS();
154 fn DMA1_Channel1();
155 fn DMA1_Channel2();
156 fn DMA1_Channel3();
157 fn DMA1_Channel4();
158 fn DMA1_Channel5();
159 fn DMA1_Channel6();
160 fn DMA1_Channel7();
161 fn DMA2_Channel1();
162 fn DMA2_Channel2();
163 fn DMA2_Channel3();
164 fn DMA2_Channel4();
165 fn DMA2_Channel5();
166 fn DMA2_Channel6();
167 fn DMA2_Channel7();
168 fn EXTI0();
169 fn EXTI1();
170 fn EXTI15_10();
171 fn EXTI2();
172 fn EXTI3();
173 fn EXTI4();
174 fn EXTI9_5();
175 fn FLASH();
176 fn FPU();
177 fn I2C1_ER();
178 fn I2C1_EV();
179 fn I2C2_ER();
180 fn I2C2_EV();
181 fn I2C3_ER();
182 fn I2C3_EV();
183 fn LPTIM1();
184 fn LPTIM2();
185 fn LPUART1();
186 fn PVD_PVM();
187 fn QUADSPI();
188 fn RCC();
189 fn RNG();
190 fn RTC_Alarm();
191 fn RTC_WKUP();
192 fn SPI1();
193 fn SPI2();
194 fn TAMP_STAMP();
195 fn TIM1_BRK_TIM15();
196 fn TIM1_CC();
197 fn TIM1_TRG_COM();
198 fn TIM1_UP_TIM16();
199 fn TIM2();
200 fn TIM6();
201 fn TSC();
202 fn USART1();
203 fn USART2();
204 fn USART3();
205 fn USB();
206 fn WWDG();
207 }
208 pub union Vector {
209 _handler: unsafe extern "C" fn(),
210 _reserved: u32,
211 }
212 #[link_section = ".vector_table.interrupts"]
213 #[no_mangle]
214 pub static __INTERRUPTS: [Vector; 83] = [
215 Vector { _handler: WWDG },
216 Vector { _handler: PVD_PVM },
217 Vector {
218 _handler: TAMP_STAMP,
219 },
220 Vector { _handler: RTC_WKUP },
221 Vector { _handler: FLASH },
222 Vector { _handler: RCC },
223 Vector { _handler: EXTI0 },
224 Vector { _handler: EXTI1 },
225 Vector { _handler: EXTI2 },
226 Vector { _handler: EXTI3 },
227 Vector { _handler: EXTI4 },
228 Vector {
229 _handler: DMA1_Channel1,
230 },
231 Vector {
232 _handler: DMA1_Channel2,
233 },
234 Vector {
235 _handler: DMA1_Channel3,
236 },
237 Vector {
238 _handler: DMA1_Channel4,
239 },
240 Vector {
241 _handler: DMA1_Channel5,
242 },
243 Vector {
244 _handler: DMA1_Channel6,
245 },
246 Vector {
247 _handler: DMA1_Channel7,
248 },
249 Vector { _handler: ADC1_2 },
250 Vector { _reserved: 0 },
251 Vector { _reserved: 0 },
252 Vector { _reserved: 0 },
253 Vector { _reserved: 0 },
254 Vector { _handler: EXTI9_5 },
255 Vector {
256 _handler: TIM1_BRK_TIM15,
257 },
258 Vector {
259 _handler: TIM1_UP_TIM16,
260 },
261 Vector {
262 _handler: TIM1_TRG_COM,
263 },
264 Vector { _handler: TIM1_CC },
265 Vector { _handler: TIM2 },
266 Vector { _reserved: 0 },
267 Vector { _reserved: 0 },
268 Vector { _handler: I2C1_EV },
269 Vector { _handler: I2C1_ER },
270 Vector { _handler: I2C2_EV },
271 Vector { _handler: I2C2_ER },
272 Vector { _handler: SPI1 },
273 Vector { _handler: SPI2 },
274 Vector { _handler: USART1 },
275 Vector { _handler: USART2 },
276 Vector { _handler: USART3 },
277 Vector {
278 _handler: EXTI15_10,
279 },
280 Vector {
281 _handler: RTC_Alarm,
282 },
283 Vector { _reserved: 0 },
284 Vector { _reserved: 0 },
285 Vector { _reserved: 0 },
286 Vector { _reserved: 0 },
287 Vector { _reserved: 0 },
288 Vector { _reserved: 0 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _reserved: 0 },
292 Vector { _reserved: 0 },
293 Vector { _reserved: 0 },
294 Vector { _reserved: 0 },
295 Vector { _handler: TIM6 },
296 Vector { _reserved: 0 },
297 Vector {
298 _handler: DMA2_Channel1,
299 },
300 Vector {
301 _handler: DMA2_Channel2,
302 },
303 Vector {
304 _handler: DMA2_Channel3,
305 },
306 Vector {
307 _handler: DMA2_Channel4,
308 },
309 Vector {
310 _handler: DMA2_Channel5,
311 },
312 Vector { _reserved: 0 },
313 Vector { _reserved: 0 },
314 Vector { _reserved: 0 },
315 Vector { _handler: COMP },
316 Vector { _handler: LPTIM1 },
317 Vector { _handler: LPTIM2 },
318 Vector { _handler: USB },
319 Vector {
320 _handler: DMA2_Channel6,
321 },
322 Vector {
323 _handler: DMA2_Channel7,
324 },
325 Vector { _handler: LPUART1 },
326 Vector { _handler: QUADSPI },
327 Vector { _handler: I2C3_EV },
328 Vector { _handler: I2C3_ER },
329 Vector { _reserved: 0 },
330 Vector { _reserved: 0 },
331 Vector { _reserved: 0 },
332 Vector { _handler: TSC },
333 Vector { _reserved: 0 },
334 Vector { _handler: AES },
335 Vector { _handler: RNG },
336 Vector { _handler: FPU },
337 Vector { _handler: CRS },
338 ];
339}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 340impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 341impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 342impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l431cb.rs b/embassy-stm32/src/chip/stm32l431cb.rs
index fb418c2ab..c4f33502f 100644
--- a/embassy-stm32/src/chip/stm32l431cb.rs
+++ b/embassy-stm32/src/chip/stm32l431cb.rs
@@ -1,18 +1,365 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG,
11 SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, 11 RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1,
12 USART2, USART3, WWDG 12 USART2, USART3, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LPTIM1 = 65,
64 LPTIM2 = 66,
65 LPUART1 = 70,
66 PVD_PVM = 1,
67 QUADSPI = 71,
68 RCC = 5,
69 RNG = 80,
70 RTC_Alarm = 41,
71 RTC_WKUP = 3,
72 SAI1 = 74,
73 SDMMC1 = 49,
74 SPI1 = 35,
75 SPI2 = 36,
76 SPI3 = 51,
77 SWPMI1 = 76,
78 TAMP_STAMP = 2,
79 TIM1_BRK_TIM15 = 24,
80 TIM1_CC = 27,
81 TIM1_TRG_COM = 26,
82 TIM1_UP_TIM16 = 25,
83 TIM2 = 28,
84 TIM6_DAC = 54,
85 TIM7 = 55,
86 TSC = 77,
87 USART1 = 37,
88 USART2 = 38,
89 USART3 = 39,
90 WWDG = 0,
91 }
92 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
93 #[inline(always)]
94 fn number(self) -> u16 {
95 self as u16
96 }
97 }
98
99 declare!(ADC1);
100 declare!(CAN1_RX0);
101 declare!(CAN1_RX1);
102 declare!(CAN1_SCE);
103 declare!(CAN1_TX);
104 declare!(COMP);
105 declare!(CRS);
106 declare!(DMA1_Channel1);
107 declare!(DMA1_Channel2);
108 declare!(DMA1_Channel3);
109 declare!(DMA1_Channel4);
110 declare!(DMA1_Channel5);
111 declare!(DMA1_Channel6);
112 declare!(DMA1_Channel7);
113 declare!(DMA2_Channel1);
114 declare!(DMA2_Channel2);
115 declare!(DMA2_Channel3);
116 declare!(DMA2_Channel4);
117 declare!(DMA2_Channel5);
118 declare!(DMA2_Channel6);
119 declare!(DMA2_Channel7);
120 declare!(EXTI0);
121 declare!(EXTI1);
122 declare!(EXTI15_10);
123 declare!(EXTI2);
124 declare!(EXTI3);
125 declare!(EXTI4);
126 declare!(EXTI9_5);
127 declare!(FLASH);
128 declare!(FPU);
129 declare!(I2C1_ER);
130 declare!(I2C1_EV);
131 declare!(I2C2_ER);
132 declare!(I2C2_EV);
133 declare!(I2C3_ER);
134 declare!(I2C3_EV);
135 declare!(LPTIM1);
136 declare!(LPTIM2);
137 declare!(LPUART1);
138 declare!(PVD_PVM);
139 declare!(QUADSPI);
140 declare!(RCC);
141 declare!(RNG);
142 declare!(RTC_Alarm);
143 declare!(RTC_WKUP);
144 declare!(SAI1);
145 declare!(SDMMC1);
146 declare!(SPI1);
147 declare!(SPI2);
148 declare!(SPI3);
149 declare!(SWPMI1);
150 declare!(TAMP_STAMP);
151 declare!(TIM1_BRK_TIM15);
152 declare!(TIM1_CC);
153 declare!(TIM1_TRG_COM);
154 declare!(TIM1_UP_TIM16);
155 declare!(TIM2);
156 declare!(TIM6_DAC);
157 declare!(TIM7);
158 declare!(TSC);
159 declare!(USART1);
160 declare!(USART2);
161 declare!(USART3);
162 declare!(WWDG);
163}
164mod interrupt_vector {
165 extern "C" {
166 fn ADC1();
167 fn CAN1_RX0();
168 fn CAN1_RX1();
169 fn CAN1_SCE();
170 fn CAN1_TX();
171 fn COMP();
172 fn CRS();
173 fn DMA1_Channel1();
174 fn DMA1_Channel2();
175 fn DMA1_Channel3();
176 fn DMA1_Channel4();
177 fn DMA1_Channel5();
178 fn DMA1_Channel6();
179 fn DMA1_Channel7();
180 fn DMA2_Channel1();
181 fn DMA2_Channel2();
182 fn DMA2_Channel3();
183 fn DMA2_Channel4();
184 fn DMA2_Channel5();
185 fn DMA2_Channel6();
186 fn DMA2_Channel7();
187 fn EXTI0();
188 fn EXTI1();
189 fn EXTI15_10();
190 fn EXTI2();
191 fn EXTI3();
192 fn EXTI4();
193 fn EXTI9_5();
194 fn FLASH();
195 fn FPU();
196 fn I2C1_ER();
197 fn I2C1_EV();
198 fn I2C2_ER();
199 fn I2C2_EV();
200 fn I2C3_ER();
201 fn I2C3_EV();
202 fn LPTIM1();
203 fn LPTIM2();
204 fn LPUART1();
205 fn PVD_PVM();
206 fn QUADSPI();
207 fn RCC();
208 fn RNG();
209 fn RTC_Alarm();
210 fn RTC_WKUP();
211 fn SAI1();
212 fn SDMMC1();
213 fn SPI1();
214 fn SPI2();
215 fn SPI3();
216 fn SWPMI1();
217 fn TAMP_STAMP();
218 fn TIM1_BRK_TIM15();
219 fn TIM1_CC();
220 fn TIM1_TRG_COM();
221 fn TIM1_UP_TIM16();
222 fn TIM2();
223 fn TIM6_DAC();
224 fn TIM7();
225 fn TSC();
226 fn USART1();
227 fn USART2();
228 fn USART3();
229 fn WWDG();
230 }
231 pub union Vector {
232 _handler: unsafe extern "C" fn(),
233 _reserved: u32,
234 }
235 #[link_section = ".vector_table.interrupts"]
236 #[no_mangle]
237 pub static __INTERRUPTS: [Vector; 83] = [
238 Vector { _handler: WWDG },
239 Vector { _handler: PVD_PVM },
240 Vector {
241 _handler: TAMP_STAMP,
242 },
243 Vector { _handler: RTC_WKUP },
244 Vector { _handler: FLASH },
245 Vector { _handler: RCC },
246 Vector { _handler: EXTI0 },
247 Vector { _handler: EXTI1 },
248 Vector { _handler: EXTI2 },
249 Vector { _handler: EXTI3 },
250 Vector { _handler: EXTI4 },
251 Vector {
252 _handler: DMA1_Channel1,
253 },
254 Vector {
255 _handler: DMA1_Channel2,
256 },
257 Vector {
258 _handler: DMA1_Channel3,
259 },
260 Vector {
261 _handler: DMA1_Channel4,
262 },
263 Vector {
264 _handler: DMA1_Channel5,
265 },
266 Vector {
267 _handler: DMA1_Channel6,
268 },
269 Vector {
270 _handler: DMA1_Channel7,
271 },
272 Vector { _handler: ADC1 },
273 Vector { _handler: CAN1_TX },
274 Vector { _handler: CAN1_RX0 },
275 Vector { _handler: CAN1_RX1 },
276 Vector { _handler: CAN1_SCE },
277 Vector { _handler: EXTI9_5 },
278 Vector {
279 _handler: TIM1_BRK_TIM15,
280 },
281 Vector {
282 _handler: TIM1_UP_TIM16,
283 },
284 Vector {
285 _handler: TIM1_TRG_COM,
286 },
287 Vector { _handler: TIM1_CC },
288 Vector { _handler: TIM2 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _handler: I2C1_EV },
292 Vector { _handler: I2C1_ER },
293 Vector { _handler: I2C2_EV },
294 Vector { _handler: I2C2_ER },
295 Vector { _handler: SPI1 },
296 Vector { _handler: SPI2 },
297 Vector { _handler: USART1 },
298 Vector { _handler: USART2 },
299 Vector { _handler: USART3 },
300 Vector {
301 _handler: EXTI15_10,
302 },
303 Vector {
304 _handler: RTC_Alarm,
305 },
306 Vector { _reserved: 0 },
307 Vector { _reserved: 0 },
308 Vector { _reserved: 0 },
309 Vector { _reserved: 0 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _reserved: 0 },
313 Vector { _handler: SDMMC1 },
314 Vector { _reserved: 0 },
315 Vector { _handler: SPI3 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _handler: TIM6_DAC },
319 Vector { _handler: TIM7 },
320 Vector {
321 _handler: DMA2_Channel1,
322 },
323 Vector {
324 _handler: DMA2_Channel2,
325 },
326 Vector {
327 _handler: DMA2_Channel3,
328 },
329 Vector {
330 _handler: DMA2_Channel4,
331 },
332 Vector {
333 _handler: DMA2_Channel5,
334 },
335 Vector { _reserved: 0 },
336 Vector { _reserved: 0 },
337 Vector { _reserved: 0 },
338 Vector { _handler: COMP },
339 Vector { _handler: LPTIM1 },
340 Vector { _handler: LPTIM2 },
341 Vector { _reserved: 0 },
342 Vector {
343 _handler: DMA2_Channel6,
344 },
345 Vector {
346 _handler: DMA2_Channel7,
347 },
348 Vector { _handler: LPUART1 },
349 Vector { _handler: QUADSPI },
350 Vector { _handler: I2C3_EV },
351 Vector { _handler: I2C3_ER },
352 Vector { _handler: SAI1 },
353 Vector { _reserved: 0 },
354 Vector { _handler: SWPMI1 },
355 Vector { _handler: TSC },
356 Vector { _reserved: 0 },
357 Vector { _reserved: 0 },
358 Vector { _handler: RNG },
359 Vector { _handler: FPU },
360 Vector { _handler: CRS },
361 ];
362}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 363impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 364impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 365impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l431cc.rs b/embassy-stm32/src/chip/stm32l431cc.rs
index fb418c2ab..c4f33502f 100644
--- a/embassy-stm32/src/chip/stm32l431cc.rs
+++ b/embassy-stm32/src/chip/stm32l431cc.rs
@@ -1,18 +1,365 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG,
11 SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, 11 RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1,
12 USART2, USART3, WWDG 12 USART2, USART3, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LPTIM1 = 65,
64 LPTIM2 = 66,
65 LPUART1 = 70,
66 PVD_PVM = 1,
67 QUADSPI = 71,
68 RCC = 5,
69 RNG = 80,
70 RTC_Alarm = 41,
71 RTC_WKUP = 3,
72 SAI1 = 74,
73 SDMMC1 = 49,
74 SPI1 = 35,
75 SPI2 = 36,
76 SPI3 = 51,
77 SWPMI1 = 76,
78 TAMP_STAMP = 2,
79 TIM1_BRK_TIM15 = 24,
80 TIM1_CC = 27,
81 TIM1_TRG_COM = 26,
82 TIM1_UP_TIM16 = 25,
83 TIM2 = 28,
84 TIM6_DAC = 54,
85 TIM7 = 55,
86 TSC = 77,
87 USART1 = 37,
88 USART2 = 38,
89 USART3 = 39,
90 WWDG = 0,
91 }
92 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
93 #[inline(always)]
94 fn number(self) -> u16 {
95 self as u16
96 }
97 }
98
99 declare!(ADC1);
100 declare!(CAN1_RX0);
101 declare!(CAN1_RX1);
102 declare!(CAN1_SCE);
103 declare!(CAN1_TX);
104 declare!(COMP);
105 declare!(CRS);
106 declare!(DMA1_Channel1);
107 declare!(DMA1_Channel2);
108 declare!(DMA1_Channel3);
109 declare!(DMA1_Channel4);
110 declare!(DMA1_Channel5);
111 declare!(DMA1_Channel6);
112 declare!(DMA1_Channel7);
113 declare!(DMA2_Channel1);
114 declare!(DMA2_Channel2);
115 declare!(DMA2_Channel3);
116 declare!(DMA2_Channel4);
117 declare!(DMA2_Channel5);
118 declare!(DMA2_Channel6);
119 declare!(DMA2_Channel7);
120 declare!(EXTI0);
121 declare!(EXTI1);
122 declare!(EXTI15_10);
123 declare!(EXTI2);
124 declare!(EXTI3);
125 declare!(EXTI4);
126 declare!(EXTI9_5);
127 declare!(FLASH);
128 declare!(FPU);
129 declare!(I2C1_ER);
130 declare!(I2C1_EV);
131 declare!(I2C2_ER);
132 declare!(I2C2_EV);
133 declare!(I2C3_ER);
134 declare!(I2C3_EV);
135 declare!(LPTIM1);
136 declare!(LPTIM2);
137 declare!(LPUART1);
138 declare!(PVD_PVM);
139 declare!(QUADSPI);
140 declare!(RCC);
141 declare!(RNG);
142 declare!(RTC_Alarm);
143 declare!(RTC_WKUP);
144 declare!(SAI1);
145 declare!(SDMMC1);
146 declare!(SPI1);
147 declare!(SPI2);
148 declare!(SPI3);
149 declare!(SWPMI1);
150 declare!(TAMP_STAMP);
151 declare!(TIM1_BRK_TIM15);
152 declare!(TIM1_CC);
153 declare!(TIM1_TRG_COM);
154 declare!(TIM1_UP_TIM16);
155 declare!(TIM2);
156 declare!(TIM6_DAC);
157 declare!(TIM7);
158 declare!(TSC);
159 declare!(USART1);
160 declare!(USART2);
161 declare!(USART3);
162 declare!(WWDG);
163}
164mod interrupt_vector {
165 extern "C" {
166 fn ADC1();
167 fn CAN1_RX0();
168 fn CAN1_RX1();
169 fn CAN1_SCE();
170 fn CAN1_TX();
171 fn COMP();
172 fn CRS();
173 fn DMA1_Channel1();
174 fn DMA1_Channel2();
175 fn DMA1_Channel3();
176 fn DMA1_Channel4();
177 fn DMA1_Channel5();
178 fn DMA1_Channel6();
179 fn DMA1_Channel7();
180 fn DMA2_Channel1();
181 fn DMA2_Channel2();
182 fn DMA2_Channel3();
183 fn DMA2_Channel4();
184 fn DMA2_Channel5();
185 fn DMA2_Channel6();
186 fn DMA2_Channel7();
187 fn EXTI0();
188 fn EXTI1();
189 fn EXTI15_10();
190 fn EXTI2();
191 fn EXTI3();
192 fn EXTI4();
193 fn EXTI9_5();
194 fn FLASH();
195 fn FPU();
196 fn I2C1_ER();
197 fn I2C1_EV();
198 fn I2C2_ER();
199 fn I2C2_EV();
200 fn I2C3_ER();
201 fn I2C3_EV();
202 fn LPTIM1();
203 fn LPTIM2();
204 fn LPUART1();
205 fn PVD_PVM();
206 fn QUADSPI();
207 fn RCC();
208 fn RNG();
209 fn RTC_Alarm();
210 fn RTC_WKUP();
211 fn SAI1();
212 fn SDMMC1();
213 fn SPI1();
214 fn SPI2();
215 fn SPI3();
216 fn SWPMI1();
217 fn TAMP_STAMP();
218 fn TIM1_BRK_TIM15();
219 fn TIM1_CC();
220 fn TIM1_TRG_COM();
221 fn TIM1_UP_TIM16();
222 fn TIM2();
223 fn TIM6_DAC();
224 fn TIM7();
225 fn TSC();
226 fn USART1();
227 fn USART2();
228 fn USART3();
229 fn WWDG();
230 }
231 pub union Vector {
232 _handler: unsafe extern "C" fn(),
233 _reserved: u32,
234 }
235 #[link_section = ".vector_table.interrupts"]
236 #[no_mangle]
237 pub static __INTERRUPTS: [Vector; 83] = [
238 Vector { _handler: WWDG },
239 Vector { _handler: PVD_PVM },
240 Vector {
241 _handler: TAMP_STAMP,
242 },
243 Vector { _handler: RTC_WKUP },
244 Vector { _handler: FLASH },
245 Vector { _handler: RCC },
246 Vector { _handler: EXTI0 },
247 Vector { _handler: EXTI1 },
248 Vector { _handler: EXTI2 },
249 Vector { _handler: EXTI3 },
250 Vector { _handler: EXTI4 },
251 Vector {
252 _handler: DMA1_Channel1,
253 },
254 Vector {
255 _handler: DMA1_Channel2,
256 },
257 Vector {
258 _handler: DMA1_Channel3,
259 },
260 Vector {
261 _handler: DMA1_Channel4,
262 },
263 Vector {
264 _handler: DMA1_Channel5,
265 },
266 Vector {
267 _handler: DMA1_Channel6,
268 },
269 Vector {
270 _handler: DMA1_Channel7,
271 },
272 Vector { _handler: ADC1 },
273 Vector { _handler: CAN1_TX },
274 Vector { _handler: CAN1_RX0 },
275 Vector { _handler: CAN1_RX1 },
276 Vector { _handler: CAN1_SCE },
277 Vector { _handler: EXTI9_5 },
278 Vector {
279 _handler: TIM1_BRK_TIM15,
280 },
281 Vector {
282 _handler: TIM1_UP_TIM16,
283 },
284 Vector {
285 _handler: TIM1_TRG_COM,
286 },
287 Vector { _handler: TIM1_CC },
288 Vector { _handler: TIM2 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _handler: I2C1_EV },
292 Vector { _handler: I2C1_ER },
293 Vector { _handler: I2C2_EV },
294 Vector { _handler: I2C2_ER },
295 Vector { _handler: SPI1 },
296 Vector { _handler: SPI2 },
297 Vector { _handler: USART1 },
298 Vector { _handler: USART2 },
299 Vector { _handler: USART3 },
300 Vector {
301 _handler: EXTI15_10,
302 },
303 Vector {
304 _handler: RTC_Alarm,
305 },
306 Vector { _reserved: 0 },
307 Vector { _reserved: 0 },
308 Vector { _reserved: 0 },
309 Vector { _reserved: 0 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _reserved: 0 },
313 Vector { _handler: SDMMC1 },
314 Vector { _reserved: 0 },
315 Vector { _handler: SPI3 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _handler: TIM6_DAC },
319 Vector { _handler: TIM7 },
320 Vector {
321 _handler: DMA2_Channel1,
322 },
323 Vector {
324 _handler: DMA2_Channel2,
325 },
326 Vector {
327 _handler: DMA2_Channel3,
328 },
329 Vector {
330 _handler: DMA2_Channel4,
331 },
332 Vector {
333 _handler: DMA2_Channel5,
334 },
335 Vector { _reserved: 0 },
336 Vector { _reserved: 0 },
337 Vector { _reserved: 0 },
338 Vector { _handler: COMP },
339 Vector { _handler: LPTIM1 },
340 Vector { _handler: LPTIM2 },
341 Vector { _reserved: 0 },
342 Vector {
343 _handler: DMA2_Channel6,
344 },
345 Vector {
346 _handler: DMA2_Channel7,
347 },
348 Vector { _handler: LPUART1 },
349 Vector { _handler: QUADSPI },
350 Vector { _handler: I2C3_EV },
351 Vector { _handler: I2C3_ER },
352 Vector { _handler: SAI1 },
353 Vector { _reserved: 0 },
354 Vector { _handler: SWPMI1 },
355 Vector { _handler: TSC },
356 Vector { _reserved: 0 },
357 Vector { _reserved: 0 },
358 Vector { _handler: RNG },
359 Vector { _handler: FPU },
360 Vector { _handler: CRS },
361 ];
362}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 363impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 364impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 365impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l431kb.rs b/embassy-stm32/src/chip/stm32l431kb.rs
index 3959d4989..a55b3860f 100644
--- a/embassy-stm32/src/chip/stm32l431kb.rs
+++ b/embassy-stm32/src/chip/stm32l431kb.rs
@@ -1,17 +1,365 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SAI1, 10 PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC,
11 SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, USART2, WWDG 11 SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, USART2,
12 WWDG
12); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
13pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
14pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LPTIM1 = 65,
64 LPTIM2 = 66,
65 LPUART1 = 70,
66 PVD_PVM = 1,
67 QUADSPI = 71,
68 RCC = 5,
69 RNG = 80,
70 RTC_Alarm = 41,
71 RTC_WKUP = 3,
72 SAI1 = 74,
73 SDMMC1 = 49,
74 SPI1 = 35,
75 SPI2 = 36,
76 SPI3 = 51,
77 SWPMI1 = 76,
78 TAMP_STAMP = 2,
79 TIM1_BRK_TIM15 = 24,
80 TIM1_CC = 27,
81 TIM1_TRG_COM = 26,
82 TIM1_UP_TIM16 = 25,
83 TIM2 = 28,
84 TIM6_DAC = 54,
85 TIM7 = 55,
86 TSC = 77,
87 USART1 = 37,
88 USART2 = 38,
89 USART3 = 39,
90 WWDG = 0,
91 }
92 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
93 #[inline(always)]
94 fn number(self) -> u16 {
95 self as u16
96 }
97 }
98
99 declare!(ADC1);
100 declare!(CAN1_RX0);
101 declare!(CAN1_RX1);
102 declare!(CAN1_SCE);
103 declare!(CAN1_TX);
104 declare!(COMP);
105 declare!(CRS);
106 declare!(DMA1_Channel1);
107 declare!(DMA1_Channel2);
108 declare!(DMA1_Channel3);
109 declare!(DMA1_Channel4);
110 declare!(DMA1_Channel5);
111 declare!(DMA1_Channel6);
112 declare!(DMA1_Channel7);
113 declare!(DMA2_Channel1);
114 declare!(DMA2_Channel2);
115 declare!(DMA2_Channel3);
116 declare!(DMA2_Channel4);
117 declare!(DMA2_Channel5);
118 declare!(DMA2_Channel6);
119 declare!(DMA2_Channel7);
120 declare!(EXTI0);
121 declare!(EXTI1);
122 declare!(EXTI15_10);
123 declare!(EXTI2);
124 declare!(EXTI3);
125 declare!(EXTI4);
126 declare!(EXTI9_5);
127 declare!(FLASH);
128 declare!(FPU);
129 declare!(I2C1_ER);
130 declare!(I2C1_EV);
131 declare!(I2C2_ER);
132 declare!(I2C2_EV);
133 declare!(I2C3_ER);
134 declare!(I2C3_EV);
135 declare!(LPTIM1);
136 declare!(LPTIM2);
137 declare!(LPUART1);
138 declare!(PVD_PVM);
139 declare!(QUADSPI);
140 declare!(RCC);
141 declare!(RNG);
142 declare!(RTC_Alarm);
143 declare!(RTC_WKUP);
144 declare!(SAI1);
145 declare!(SDMMC1);
146 declare!(SPI1);
147 declare!(SPI2);
148 declare!(SPI3);
149 declare!(SWPMI1);
150 declare!(TAMP_STAMP);
151 declare!(TIM1_BRK_TIM15);
152 declare!(TIM1_CC);
153 declare!(TIM1_TRG_COM);
154 declare!(TIM1_UP_TIM16);
155 declare!(TIM2);
156 declare!(TIM6_DAC);
157 declare!(TIM7);
158 declare!(TSC);
159 declare!(USART1);
160 declare!(USART2);
161 declare!(USART3);
162 declare!(WWDG);
163}
164mod interrupt_vector {
165 extern "C" {
166 fn ADC1();
167 fn CAN1_RX0();
168 fn CAN1_RX1();
169 fn CAN1_SCE();
170 fn CAN1_TX();
171 fn COMP();
172 fn CRS();
173 fn DMA1_Channel1();
174 fn DMA1_Channel2();
175 fn DMA1_Channel3();
176 fn DMA1_Channel4();
177 fn DMA1_Channel5();
178 fn DMA1_Channel6();
179 fn DMA1_Channel7();
180 fn DMA2_Channel1();
181 fn DMA2_Channel2();
182 fn DMA2_Channel3();
183 fn DMA2_Channel4();
184 fn DMA2_Channel5();
185 fn DMA2_Channel6();
186 fn DMA2_Channel7();
187 fn EXTI0();
188 fn EXTI1();
189 fn EXTI15_10();
190 fn EXTI2();
191 fn EXTI3();
192 fn EXTI4();
193 fn EXTI9_5();
194 fn FLASH();
195 fn FPU();
196 fn I2C1_ER();
197 fn I2C1_EV();
198 fn I2C2_ER();
199 fn I2C2_EV();
200 fn I2C3_ER();
201 fn I2C3_EV();
202 fn LPTIM1();
203 fn LPTIM2();
204 fn LPUART1();
205 fn PVD_PVM();
206 fn QUADSPI();
207 fn RCC();
208 fn RNG();
209 fn RTC_Alarm();
210 fn RTC_WKUP();
211 fn SAI1();
212 fn SDMMC1();
213 fn SPI1();
214 fn SPI2();
215 fn SPI3();
216 fn SWPMI1();
217 fn TAMP_STAMP();
218 fn TIM1_BRK_TIM15();
219 fn TIM1_CC();
220 fn TIM1_TRG_COM();
221 fn TIM1_UP_TIM16();
222 fn TIM2();
223 fn TIM6_DAC();
224 fn TIM7();
225 fn TSC();
226 fn USART1();
227 fn USART2();
228 fn USART3();
229 fn WWDG();
230 }
231 pub union Vector {
232 _handler: unsafe extern "C" fn(),
233 _reserved: u32,
234 }
235 #[link_section = ".vector_table.interrupts"]
236 #[no_mangle]
237 pub static __INTERRUPTS: [Vector; 83] = [
238 Vector { _handler: WWDG },
239 Vector { _handler: PVD_PVM },
240 Vector {
241 _handler: TAMP_STAMP,
242 },
243 Vector { _handler: RTC_WKUP },
244 Vector { _handler: FLASH },
245 Vector { _handler: RCC },
246 Vector { _handler: EXTI0 },
247 Vector { _handler: EXTI1 },
248 Vector { _handler: EXTI2 },
249 Vector { _handler: EXTI3 },
250 Vector { _handler: EXTI4 },
251 Vector {
252 _handler: DMA1_Channel1,
253 },
254 Vector {
255 _handler: DMA1_Channel2,
256 },
257 Vector {
258 _handler: DMA1_Channel3,
259 },
260 Vector {
261 _handler: DMA1_Channel4,
262 },
263 Vector {
264 _handler: DMA1_Channel5,
265 },
266 Vector {
267 _handler: DMA1_Channel6,
268 },
269 Vector {
270 _handler: DMA1_Channel7,
271 },
272 Vector { _handler: ADC1 },
273 Vector { _handler: CAN1_TX },
274 Vector { _handler: CAN1_RX0 },
275 Vector { _handler: CAN1_RX1 },
276 Vector { _handler: CAN1_SCE },
277 Vector { _handler: EXTI9_5 },
278 Vector {
279 _handler: TIM1_BRK_TIM15,
280 },
281 Vector {
282 _handler: TIM1_UP_TIM16,
283 },
284 Vector {
285 _handler: TIM1_TRG_COM,
286 },
287 Vector { _handler: TIM1_CC },
288 Vector { _handler: TIM2 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _handler: I2C1_EV },
292 Vector { _handler: I2C1_ER },
293 Vector { _handler: I2C2_EV },
294 Vector { _handler: I2C2_ER },
295 Vector { _handler: SPI1 },
296 Vector { _handler: SPI2 },
297 Vector { _handler: USART1 },
298 Vector { _handler: USART2 },
299 Vector { _handler: USART3 },
300 Vector {
301 _handler: EXTI15_10,
302 },
303 Vector {
304 _handler: RTC_Alarm,
305 },
306 Vector { _reserved: 0 },
307 Vector { _reserved: 0 },
308 Vector { _reserved: 0 },
309 Vector { _reserved: 0 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _reserved: 0 },
313 Vector { _handler: SDMMC1 },
314 Vector { _reserved: 0 },
315 Vector { _handler: SPI3 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _handler: TIM6_DAC },
319 Vector { _handler: TIM7 },
320 Vector {
321 _handler: DMA2_Channel1,
322 },
323 Vector {
324 _handler: DMA2_Channel2,
325 },
326 Vector {
327 _handler: DMA2_Channel3,
328 },
329 Vector {
330 _handler: DMA2_Channel4,
331 },
332 Vector {
333 _handler: DMA2_Channel5,
334 },
335 Vector { _reserved: 0 },
336 Vector { _reserved: 0 },
337 Vector { _reserved: 0 },
338 Vector { _handler: COMP },
339 Vector { _handler: LPTIM1 },
340 Vector { _handler: LPTIM2 },
341 Vector { _reserved: 0 },
342 Vector {
343 _handler: DMA2_Channel6,
344 },
345 Vector {
346 _handler: DMA2_Channel7,
347 },
348 Vector { _handler: LPUART1 },
349 Vector { _handler: QUADSPI },
350 Vector { _handler: I2C3_EV },
351 Vector { _handler: I2C3_ER },
352 Vector { _handler: SAI1 },
353 Vector { _reserved: 0 },
354 Vector { _handler: SWPMI1 },
355 Vector { _handler: TSC },
356 Vector { _reserved: 0 },
357 Vector { _reserved: 0 },
358 Vector { _handler: RNG },
359 Vector { _handler: FPU },
360 Vector { _handler: CRS },
361 ];
362}
15impl_gpio_pin!(PA0, 0, 0, EXTI0); 363impl_gpio_pin!(PA0, 0, 0, EXTI0);
16impl_gpio_pin!(PA1, 0, 1, EXTI1); 364impl_gpio_pin!(PA1, 0, 1, EXTI1);
17impl_gpio_pin!(PA2, 0, 2, EXTI2); 365impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l431kc.rs b/embassy-stm32/src/chip/stm32l431kc.rs
index 3959d4989..a55b3860f 100644
--- a/embassy-stm32/src/chip/stm32l431kc.rs
+++ b/embassy-stm32/src/chip/stm32l431kc.rs
@@ -1,17 +1,365 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, SAI1, 10 PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC,
11 SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, USART2, WWDG 11 SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, USART2,
12 WWDG
12); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
13pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
14pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LPTIM1 = 65,
64 LPTIM2 = 66,
65 LPUART1 = 70,
66 PVD_PVM = 1,
67 QUADSPI = 71,
68 RCC = 5,
69 RNG = 80,
70 RTC_Alarm = 41,
71 RTC_WKUP = 3,
72 SAI1 = 74,
73 SDMMC1 = 49,
74 SPI1 = 35,
75 SPI2 = 36,
76 SPI3 = 51,
77 SWPMI1 = 76,
78 TAMP_STAMP = 2,
79 TIM1_BRK_TIM15 = 24,
80 TIM1_CC = 27,
81 TIM1_TRG_COM = 26,
82 TIM1_UP_TIM16 = 25,
83 TIM2 = 28,
84 TIM6_DAC = 54,
85 TIM7 = 55,
86 TSC = 77,
87 USART1 = 37,
88 USART2 = 38,
89 USART3 = 39,
90 WWDG = 0,
91 }
92 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
93 #[inline(always)]
94 fn number(self) -> u16 {
95 self as u16
96 }
97 }
98
99 declare!(ADC1);
100 declare!(CAN1_RX0);
101 declare!(CAN1_RX1);
102 declare!(CAN1_SCE);
103 declare!(CAN1_TX);
104 declare!(COMP);
105 declare!(CRS);
106 declare!(DMA1_Channel1);
107 declare!(DMA1_Channel2);
108 declare!(DMA1_Channel3);
109 declare!(DMA1_Channel4);
110 declare!(DMA1_Channel5);
111 declare!(DMA1_Channel6);
112 declare!(DMA1_Channel7);
113 declare!(DMA2_Channel1);
114 declare!(DMA2_Channel2);
115 declare!(DMA2_Channel3);
116 declare!(DMA2_Channel4);
117 declare!(DMA2_Channel5);
118 declare!(DMA2_Channel6);
119 declare!(DMA2_Channel7);
120 declare!(EXTI0);
121 declare!(EXTI1);
122 declare!(EXTI15_10);
123 declare!(EXTI2);
124 declare!(EXTI3);
125 declare!(EXTI4);
126 declare!(EXTI9_5);
127 declare!(FLASH);
128 declare!(FPU);
129 declare!(I2C1_ER);
130 declare!(I2C1_EV);
131 declare!(I2C2_ER);
132 declare!(I2C2_EV);
133 declare!(I2C3_ER);
134 declare!(I2C3_EV);
135 declare!(LPTIM1);
136 declare!(LPTIM2);
137 declare!(LPUART1);
138 declare!(PVD_PVM);
139 declare!(QUADSPI);
140 declare!(RCC);
141 declare!(RNG);
142 declare!(RTC_Alarm);
143 declare!(RTC_WKUP);
144 declare!(SAI1);
145 declare!(SDMMC1);
146 declare!(SPI1);
147 declare!(SPI2);
148 declare!(SPI3);
149 declare!(SWPMI1);
150 declare!(TAMP_STAMP);
151 declare!(TIM1_BRK_TIM15);
152 declare!(TIM1_CC);
153 declare!(TIM1_TRG_COM);
154 declare!(TIM1_UP_TIM16);
155 declare!(TIM2);
156 declare!(TIM6_DAC);
157 declare!(TIM7);
158 declare!(TSC);
159 declare!(USART1);
160 declare!(USART2);
161 declare!(USART3);
162 declare!(WWDG);
163}
164mod interrupt_vector {
165 extern "C" {
166 fn ADC1();
167 fn CAN1_RX0();
168 fn CAN1_RX1();
169 fn CAN1_SCE();
170 fn CAN1_TX();
171 fn COMP();
172 fn CRS();
173 fn DMA1_Channel1();
174 fn DMA1_Channel2();
175 fn DMA1_Channel3();
176 fn DMA1_Channel4();
177 fn DMA1_Channel5();
178 fn DMA1_Channel6();
179 fn DMA1_Channel7();
180 fn DMA2_Channel1();
181 fn DMA2_Channel2();
182 fn DMA2_Channel3();
183 fn DMA2_Channel4();
184 fn DMA2_Channel5();
185 fn DMA2_Channel6();
186 fn DMA2_Channel7();
187 fn EXTI0();
188 fn EXTI1();
189 fn EXTI15_10();
190 fn EXTI2();
191 fn EXTI3();
192 fn EXTI4();
193 fn EXTI9_5();
194 fn FLASH();
195 fn FPU();
196 fn I2C1_ER();
197 fn I2C1_EV();
198 fn I2C2_ER();
199 fn I2C2_EV();
200 fn I2C3_ER();
201 fn I2C3_EV();
202 fn LPTIM1();
203 fn LPTIM2();
204 fn LPUART1();
205 fn PVD_PVM();
206 fn QUADSPI();
207 fn RCC();
208 fn RNG();
209 fn RTC_Alarm();
210 fn RTC_WKUP();
211 fn SAI1();
212 fn SDMMC1();
213 fn SPI1();
214 fn SPI2();
215 fn SPI3();
216 fn SWPMI1();
217 fn TAMP_STAMP();
218 fn TIM1_BRK_TIM15();
219 fn TIM1_CC();
220 fn TIM1_TRG_COM();
221 fn TIM1_UP_TIM16();
222 fn TIM2();
223 fn TIM6_DAC();
224 fn TIM7();
225 fn TSC();
226 fn USART1();
227 fn USART2();
228 fn USART3();
229 fn WWDG();
230 }
231 pub union Vector {
232 _handler: unsafe extern "C" fn(),
233 _reserved: u32,
234 }
235 #[link_section = ".vector_table.interrupts"]
236 #[no_mangle]
237 pub static __INTERRUPTS: [Vector; 83] = [
238 Vector { _handler: WWDG },
239 Vector { _handler: PVD_PVM },
240 Vector {
241 _handler: TAMP_STAMP,
242 },
243 Vector { _handler: RTC_WKUP },
244 Vector { _handler: FLASH },
245 Vector { _handler: RCC },
246 Vector { _handler: EXTI0 },
247 Vector { _handler: EXTI1 },
248 Vector { _handler: EXTI2 },
249 Vector { _handler: EXTI3 },
250 Vector { _handler: EXTI4 },
251 Vector {
252 _handler: DMA1_Channel1,
253 },
254 Vector {
255 _handler: DMA1_Channel2,
256 },
257 Vector {
258 _handler: DMA1_Channel3,
259 },
260 Vector {
261 _handler: DMA1_Channel4,
262 },
263 Vector {
264 _handler: DMA1_Channel5,
265 },
266 Vector {
267 _handler: DMA1_Channel6,
268 },
269 Vector {
270 _handler: DMA1_Channel7,
271 },
272 Vector { _handler: ADC1 },
273 Vector { _handler: CAN1_TX },
274 Vector { _handler: CAN1_RX0 },
275 Vector { _handler: CAN1_RX1 },
276 Vector { _handler: CAN1_SCE },
277 Vector { _handler: EXTI9_5 },
278 Vector {
279 _handler: TIM1_BRK_TIM15,
280 },
281 Vector {
282 _handler: TIM1_UP_TIM16,
283 },
284 Vector {
285 _handler: TIM1_TRG_COM,
286 },
287 Vector { _handler: TIM1_CC },
288 Vector { _handler: TIM2 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _handler: I2C1_EV },
292 Vector { _handler: I2C1_ER },
293 Vector { _handler: I2C2_EV },
294 Vector { _handler: I2C2_ER },
295 Vector { _handler: SPI1 },
296 Vector { _handler: SPI2 },
297 Vector { _handler: USART1 },
298 Vector { _handler: USART2 },
299 Vector { _handler: USART3 },
300 Vector {
301 _handler: EXTI15_10,
302 },
303 Vector {
304 _handler: RTC_Alarm,
305 },
306 Vector { _reserved: 0 },
307 Vector { _reserved: 0 },
308 Vector { _reserved: 0 },
309 Vector { _reserved: 0 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _reserved: 0 },
313 Vector { _handler: SDMMC1 },
314 Vector { _reserved: 0 },
315 Vector { _handler: SPI3 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _handler: TIM6_DAC },
319 Vector { _handler: TIM7 },
320 Vector {
321 _handler: DMA2_Channel1,
322 },
323 Vector {
324 _handler: DMA2_Channel2,
325 },
326 Vector {
327 _handler: DMA2_Channel3,
328 },
329 Vector {
330 _handler: DMA2_Channel4,
331 },
332 Vector {
333 _handler: DMA2_Channel5,
334 },
335 Vector { _reserved: 0 },
336 Vector { _reserved: 0 },
337 Vector { _reserved: 0 },
338 Vector { _handler: COMP },
339 Vector { _handler: LPTIM1 },
340 Vector { _handler: LPTIM2 },
341 Vector { _reserved: 0 },
342 Vector {
343 _handler: DMA2_Channel6,
344 },
345 Vector {
346 _handler: DMA2_Channel7,
347 },
348 Vector { _handler: LPUART1 },
349 Vector { _handler: QUADSPI },
350 Vector { _handler: I2C3_EV },
351 Vector { _handler: I2C3_ER },
352 Vector { _handler: SAI1 },
353 Vector { _reserved: 0 },
354 Vector { _handler: SWPMI1 },
355 Vector { _handler: TSC },
356 Vector { _reserved: 0 },
357 Vector { _reserved: 0 },
358 Vector { _handler: RNG },
359 Vector { _handler: FPU },
360 Vector { _handler: CRS },
361 ];
362}
15impl_gpio_pin!(PA0, 0, 0, EXTI0); 363impl_gpio_pin!(PA0, 0, 0, EXTI0);
16impl_gpio_pin!(PA1, 0, 1, EXTI1); 364impl_gpio_pin!(PA1, 0, 1, EXTI1);
17impl_gpio_pin!(PA2, 0, 2, EXTI2); 365impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l431rb.rs b/embassy-stm32/src/chip/stm32l431rb.rs
index 9c26d500d..902c4eb19 100644
--- a/embassy-stm32/src/chip/stm32l431rb.rs
+++ b/embassy-stm32/src/chip/stm32l431rb.rs
@@ -1,18 +1,365 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG,
11 SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, 11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC,
12 USART1, USART2, USART3, WWDG 12 USART1, USART2, USART3, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LPTIM1 = 65,
64 LPTIM2 = 66,
65 LPUART1 = 70,
66 PVD_PVM = 1,
67 QUADSPI = 71,
68 RCC = 5,
69 RNG = 80,
70 RTC_Alarm = 41,
71 RTC_WKUP = 3,
72 SAI1 = 74,
73 SDMMC1 = 49,
74 SPI1 = 35,
75 SPI2 = 36,
76 SPI3 = 51,
77 SWPMI1 = 76,
78 TAMP_STAMP = 2,
79 TIM1_BRK_TIM15 = 24,
80 TIM1_CC = 27,
81 TIM1_TRG_COM = 26,
82 TIM1_UP_TIM16 = 25,
83 TIM2 = 28,
84 TIM6_DAC = 54,
85 TIM7 = 55,
86 TSC = 77,
87 USART1 = 37,
88 USART2 = 38,
89 USART3 = 39,
90 WWDG = 0,
91 }
92 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
93 #[inline(always)]
94 fn number(self) -> u16 {
95 self as u16
96 }
97 }
98
99 declare!(ADC1);
100 declare!(CAN1_RX0);
101 declare!(CAN1_RX1);
102 declare!(CAN1_SCE);
103 declare!(CAN1_TX);
104 declare!(COMP);
105 declare!(CRS);
106 declare!(DMA1_Channel1);
107 declare!(DMA1_Channel2);
108 declare!(DMA1_Channel3);
109 declare!(DMA1_Channel4);
110 declare!(DMA1_Channel5);
111 declare!(DMA1_Channel6);
112 declare!(DMA1_Channel7);
113 declare!(DMA2_Channel1);
114 declare!(DMA2_Channel2);
115 declare!(DMA2_Channel3);
116 declare!(DMA2_Channel4);
117 declare!(DMA2_Channel5);
118 declare!(DMA2_Channel6);
119 declare!(DMA2_Channel7);
120 declare!(EXTI0);
121 declare!(EXTI1);
122 declare!(EXTI15_10);
123 declare!(EXTI2);
124 declare!(EXTI3);
125 declare!(EXTI4);
126 declare!(EXTI9_5);
127 declare!(FLASH);
128 declare!(FPU);
129 declare!(I2C1_ER);
130 declare!(I2C1_EV);
131 declare!(I2C2_ER);
132 declare!(I2C2_EV);
133 declare!(I2C3_ER);
134 declare!(I2C3_EV);
135 declare!(LPTIM1);
136 declare!(LPTIM2);
137 declare!(LPUART1);
138 declare!(PVD_PVM);
139 declare!(QUADSPI);
140 declare!(RCC);
141 declare!(RNG);
142 declare!(RTC_Alarm);
143 declare!(RTC_WKUP);
144 declare!(SAI1);
145 declare!(SDMMC1);
146 declare!(SPI1);
147 declare!(SPI2);
148 declare!(SPI3);
149 declare!(SWPMI1);
150 declare!(TAMP_STAMP);
151 declare!(TIM1_BRK_TIM15);
152 declare!(TIM1_CC);
153 declare!(TIM1_TRG_COM);
154 declare!(TIM1_UP_TIM16);
155 declare!(TIM2);
156 declare!(TIM6_DAC);
157 declare!(TIM7);
158 declare!(TSC);
159 declare!(USART1);
160 declare!(USART2);
161 declare!(USART3);
162 declare!(WWDG);
163}
164mod interrupt_vector {
165 extern "C" {
166 fn ADC1();
167 fn CAN1_RX0();
168 fn CAN1_RX1();
169 fn CAN1_SCE();
170 fn CAN1_TX();
171 fn COMP();
172 fn CRS();
173 fn DMA1_Channel1();
174 fn DMA1_Channel2();
175 fn DMA1_Channel3();
176 fn DMA1_Channel4();
177 fn DMA1_Channel5();
178 fn DMA1_Channel6();
179 fn DMA1_Channel7();
180 fn DMA2_Channel1();
181 fn DMA2_Channel2();
182 fn DMA2_Channel3();
183 fn DMA2_Channel4();
184 fn DMA2_Channel5();
185 fn DMA2_Channel6();
186 fn DMA2_Channel7();
187 fn EXTI0();
188 fn EXTI1();
189 fn EXTI15_10();
190 fn EXTI2();
191 fn EXTI3();
192 fn EXTI4();
193 fn EXTI9_5();
194 fn FLASH();
195 fn FPU();
196 fn I2C1_ER();
197 fn I2C1_EV();
198 fn I2C2_ER();
199 fn I2C2_EV();
200 fn I2C3_ER();
201 fn I2C3_EV();
202 fn LPTIM1();
203 fn LPTIM2();
204 fn LPUART1();
205 fn PVD_PVM();
206 fn QUADSPI();
207 fn RCC();
208 fn RNG();
209 fn RTC_Alarm();
210 fn RTC_WKUP();
211 fn SAI1();
212 fn SDMMC1();
213 fn SPI1();
214 fn SPI2();
215 fn SPI3();
216 fn SWPMI1();
217 fn TAMP_STAMP();
218 fn TIM1_BRK_TIM15();
219 fn TIM1_CC();
220 fn TIM1_TRG_COM();
221 fn TIM1_UP_TIM16();
222 fn TIM2();
223 fn TIM6_DAC();
224 fn TIM7();
225 fn TSC();
226 fn USART1();
227 fn USART2();
228 fn USART3();
229 fn WWDG();
230 }
231 pub union Vector {
232 _handler: unsafe extern "C" fn(),
233 _reserved: u32,
234 }
235 #[link_section = ".vector_table.interrupts"]
236 #[no_mangle]
237 pub static __INTERRUPTS: [Vector; 83] = [
238 Vector { _handler: WWDG },
239 Vector { _handler: PVD_PVM },
240 Vector {
241 _handler: TAMP_STAMP,
242 },
243 Vector { _handler: RTC_WKUP },
244 Vector { _handler: FLASH },
245 Vector { _handler: RCC },
246 Vector { _handler: EXTI0 },
247 Vector { _handler: EXTI1 },
248 Vector { _handler: EXTI2 },
249 Vector { _handler: EXTI3 },
250 Vector { _handler: EXTI4 },
251 Vector {
252 _handler: DMA1_Channel1,
253 },
254 Vector {
255 _handler: DMA1_Channel2,
256 },
257 Vector {
258 _handler: DMA1_Channel3,
259 },
260 Vector {
261 _handler: DMA1_Channel4,
262 },
263 Vector {
264 _handler: DMA1_Channel5,
265 },
266 Vector {
267 _handler: DMA1_Channel6,
268 },
269 Vector {
270 _handler: DMA1_Channel7,
271 },
272 Vector { _handler: ADC1 },
273 Vector { _handler: CAN1_TX },
274 Vector { _handler: CAN1_RX0 },
275 Vector { _handler: CAN1_RX1 },
276 Vector { _handler: CAN1_SCE },
277 Vector { _handler: EXTI9_5 },
278 Vector {
279 _handler: TIM1_BRK_TIM15,
280 },
281 Vector {
282 _handler: TIM1_UP_TIM16,
283 },
284 Vector {
285 _handler: TIM1_TRG_COM,
286 },
287 Vector { _handler: TIM1_CC },
288 Vector { _handler: TIM2 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _handler: I2C1_EV },
292 Vector { _handler: I2C1_ER },
293 Vector { _handler: I2C2_EV },
294 Vector { _handler: I2C2_ER },
295 Vector { _handler: SPI1 },
296 Vector { _handler: SPI2 },
297 Vector { _handler: USART1 },
298 Vector { _handler: USART2 },
299 Vector { _handler: USART3 },
300 Vector {
301 _handler: EXTI15_10,
302 },
303 Vector {
304 _handler: RTC_Alarm,
305 },
306 Vector { _reserved: 0 },
307 Vector { _reserved: 0 },
308 Vector { _reserved: 0 },
309 Vector { _reserved: 0 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _reserved: 0 },
313 Vector { _handler: SDMMC1 },
314 Vector { _reserved: 0 },
315 Vector { _handler: SPI3 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _handler: TIM6_DAC },
319 Vector { _handler: TIM7 },
320 Vector {
321 _handler: DMA2_Channel1,
322 },
323 Vector {
324 _handler: DMA2_Channel2,
325 },
326 Vector {
327 _handler: DMA2_Channel3,
328 },
329 Vector {
330 _handler: DMA2_Channel4,
331 },
332 Vector {
333 _handler: DMA2_Channel5,
334 },
335 Vector { _reserved: 0 },
336 Vector { _reserved: 0 },
337 Vector { _reserved: 0 },
338 Vector { _handler: COMP },
339 Vector { _handler: LPTIM1 },
340 Vector { _handler: LPTIM2 },
341 Vector { _reserved: 0 },
342 Vector {
343 _handler: DMA2_Channel6,
344 },
345 Vector {
346 _handler: DMA2_Channel7,
347 },
348 Vector { _handler: LPUART1 },
349 Vector { _handler: QUADSPI },
350 Vector { _handler: I2C3_EV },
351 Vector { _handler: I2C3_ER },
352 Vector { _handler: SAI1 },
353 Vector { _reserved: 0 },
354 Vector { _handler: SWPMI1 },
355 Vector { _handler: TSC },
356 Vector { _reserved: 0 },
357 Vector { _reserved: 0 },
358 Vector { _handler: RNG },
359 Vector { _handler: FPU },
360 Vector { _handler: CRS },
361 ];
362}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 363impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 364impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 365impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l431rc.rs b/embassy-stm32/src/chip/stm32l431rc.rs
index 9c26d500d..902c4eb19 100644
--- a/embassy-stm32/src/chip/stm32l431rc.rs
+++ b/embassy-stm32/src/chip/stm32l431rc.rs
@@ -1,18 +1,365 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG,
11 SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, 11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC,
12 USART1, USART2, USART3, WWDG 12 USART1, USART2, USART3, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LPTIM1 = 65,
64 LPTIM2 = 66,
65 LPUART1 = 70,
66 PVD_PVM = 1,
67 QUADSPI = 71,
68 RCC = 5,
69 RNG = 80,
70 RTC_Alarm = 41,
71 RTC_WKUP = 3,
72 SAI1 = 74,
73 SDMMC1 = 49,
74 SPI1 = 35,
75 SPI2 = 36,
76 SPI3 = 51,
77 SWPMI1 = 76,
78 TAMP_STAMP = 2,
79 TIM1_BRK_TIM15 = 24,
80 TIM1_CC = 27,
81 TIM1_TRG_COM = 26,
82 TIM1_UP_TIM16 = 25,
83 TIM2 = 28,
84 TIM6_DAC = 54,
85 TIM7 = 55,
86 TSC = 77,
87 USART1 = 37,
88 USART2 = 38,
89 USART3 = 39,
90 WWDG = 0,
91 }
92 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
93 #[inline(always)]
94 fn number(self) -> u16 {
95 self as u16
96 }
97 }
98
99 declare!(ADC1);
100 declare!(CAN1_RX0);
101 declare!(CAN1_RX1);
102 declare!(CAN1_SCE);
103 declare!(CAN1_TX);
104 declare!(COMP);
105 declare!(CRS);
106 declare!(DMA1_Channel1);
107 declare!(DMA1_Channel2);
108 declare!(DMA1_Channel3);
109 declare!(DMA1_Channel4);
110 declare!(DMA1_Channel5);
111 declare!(DMA1_Channel6);
112 declare!(DMA1_Channel7);
113 declare!(DMA2_Channel1);
114 declare!(DMA2_Channel2);
115 declare!(DMA2_Channel3);
116 declare!(DMA2_Channel4);
117 declare!(DMA2_Channel5);
118 declare!(DMA2_Channel6);
119 declare!(DMA2_Channel7);
120 declare!(EXTI0);
121 declare!(EXTI1);
122 declare!(EXTI15_10);
123 declare!(EXTI2);
124 declare!(EXTI3);
125 declare!(EXTI4);
126 declare!(EXTI9_5);
127 declare!(FLASH);
128 declare!(FPU);
129 declare!(I2C1_ER);
130 declare!(I2C1_EV);
131 declare!(I2C2_ER);
132 declare!(I2C2_EV);
133 declare!(I2C3_ER);
134 declare!(I2C3_EV);
135 declare!(LPTIM1);
136 declare!(LPTIM2);
137 declare!(LPUART1);
138 declare!(PVD_PVM);
139 declare!(QUADSPI);
140 declare!(RCC);
141 declare!(RNG);
142 declare!(RTC_Alarm);
143 declare!(RTC_WKUP);
144 declare!(SAI1);
145 declare!(SDMMC1);
146 declare!(SPI1);
147 declare!(SPI2);
148 declare!(SPI3);
149 declare!(SWPMI1);
150 declare!(TAMP_STAMP);
151 declare!(TIM1_BRK_TIM15);
152 declare!(TIM1_CC);
153 declare!(TIM1_TRG_COM);
154 declare!(TIM1_UP_TIM16);
155 declare!(TIM2);
156 declare!(TIM6_DAC);
157 declare!(TIM7);
158 declare!(TSC);
159 declare!(USART1);
160 declare!(USART2);
161 declare!(USART3);
162 declare!(WWDG);
163}
164mod interrupt_vector {
165 extern "C" {
166 fn ADC1();
167 fn CAN1_RX0();
168 fn CAN1_RX1();
169 fn CAN1_SCE();
170 fn CAN1_TX();
171 fn COMP();
172 fn CRS();
173 fn DMA1_Channel1();
174 fn DMA1_Channel2();
175 fn DMA1_Channel3();
176 fn DMA1_Channel4();
177 fn DMA1_Channel5();
178 fn DMA1_Channel6();
179 fn DMA1_Channel7();
180 fn DMA2_Channel1();
181 fn DMA2_Channel2();
182 fn DMA2_Channel3();
183 fn DMA2_Channel4();
184 fn DMA2_Channel5();
185 fn DMA2_Channel6();
186 fn DMA2_Channel7();
187 fn EXTI0();
188 fn EXTI1();
189 fn EXTI15_10();
190 fn EXTI2();
191 fn EXTI3();
192 fn EXTI4();
193 fn EXTI9_5();
194 fn FLASH();
195 fn FPU();
196 fn I2C1_ER();
197 fn I2C1_EV();
198 fn I2C2_ER();
199 fn I2C2_EV();
200 fn I2C3_ER();
201 fn I2C3_EV();
202 fn LPTIM1();
203 fn LPTIM2();
204 fn LPUART1();
205 fn PVD_PVM();
206 fn QUADSPI();
207 fn RCC();
208 fn RNG();
209 fn RTC_Alarm();
210 fn RTC_WKUP();
211 fn SAI1();
212 fn SDMMC1();
213 fn SPI1();
214 fn SPI2();
215 fn SPI3();
216 fn SWPMI1();
217 fn TAMP_STAMP();
218 fn TIM1_BRK_TIM15();
219 fn TIM1_CC();
220 fn TIM1_TRG_COM();
221 fn TIM1_UP_TIM16();
222 fn TIM2();
223 fn TIM6_DAC();
224 fn TIM7();
225 fn TSC();
226 fn USART1();
227 fn USART2();
228 fn USART3();
229 fn WWDG();
230 }
231 pub union Vector {
232 _handler: unsafe extern "C" fn(),
233 _reserved: u32,
234 }
235 #[link_section = ".vector_table.interrupts"]
236 #[no_mangle]
237 pub static __INTERRUPTS: [Vector; 83] = [
238 Vector { _handler: WWDG },
239 Vector { _handler: PVD_PVM },
240 Vector {
241 _handler: TAMP_STAMP,
242 },
243 Vector { _handler: RTC_WKUP },
244 Vector { _handler: FLASH },
245 Vector { _handler: RCC },
246 Vector { _handler: EXTI0 },
247 Vector { _handler: EXTI1 },
248 Vector { _handler: EXTI2 },
249 Vector { _handler: EXTI3 },
250 Vector { _handler: EXTI4 },
251 Vector {
252 _handler: DMA1_Channel1,
253 },
254 Vector {
255 _handler: DMA1_Channel2,
256 },
257 Vector {
258 _handler: DMA1_Channel3,
259 },
260 Vector {
261 _handler: DMA1_Channel4,
262 },
263 Vector {
264 _handler: DMA1_Channel5,
265 },
266 Vector {
267 _handler: DMA1_Channel6,
268 },
269 Vector {
270 _handler: DMA1_Channel7,
271 },
272 Vector { _handler: ADC1 },
273 Vector { _handler: CAN1_TX },
274 Vector { _handler: CAN1_RX0 },
275 Vector { _handler: CAN1_RX1 },
276 Vector { _handler: CAN1_SCE },
277 Vector { _handler: EXTI9_5 },
278 Vector {
279 _handler: TIM1_BRK_TIM15,
280 },
281 Vector {
282 _handler: TIM1_UP_TIM16,
283 },
284 Vector {
285 _handler: TIM1_TRG_COM,
286 },
287 Vector { _handler: TIM1_CC },
288 Vector { _handler: TIM2 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _handler: I2C1_EV },
292 Vector { _handler: I2C1_ER },
293 Vector { _handler: I2C2_EV },
294 Vector { _handler: I2C2_ER },
295 Vector { _handler: SPI1 },
296 Vector { _handler: SPI2 },
297 Vector { _handler: USART1 },
298 Vector { _handler: USART2 },
299 Vector { _handler: USART3 },
300 Vector {
301 _handler: EXTI15_10,
302 },
303 Vector {
304 _handler: RTC_Alarm,
305 },
306 Vector { _reserved: 0 },
307 Vector { _reserved: 0 },
308 Vector { _reserved: 0 },
309 Vector { _reserved: 0 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _reserved: 0 },
313 Vector { _handler: SDMMC1 },
314 Vector { _reserved: 0 },
315 Vector { _handler: SPI3 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _handler: TIM6_DAC },
319 Vector { _handler: TIM7 },
320 Vector {
321 _handler: DMA2_Channel1,
322 },
323 Vector {
324 _handler: DMA2_Channel2,
325 },
326 Vector {
327 _handler: DMA2_Channel3,
328 },
329 Vector {
330 _handler: DMA2_Channel4,
331 },
332 Vector {
333 _handler: DMA2_Channel5,
334 },
335 Vector { _reserved: 0 },
336 Vector { _reserved: 0 },
337 Vector { _reserved: 0 },
338 Vector { _handler: COMP },
339 Vector { _handler: LPTIM1 },
340 Vector { _handler: LPTIM2 },
341 Vector { _reserved: 0 },
342 Vector {
343 _handler: DMA2_Channel6,
344 },
345 Vector {
346 _handler: DMA2_Channel7,
347 },
348 Vector { _handler: LPUART1 },
349 Vector { _handler: QUADSPI },
350 Vector { _handler: I2C3_EV },
351 Vector { _handler: I2C3_ER },
352 Vector { _handler: SAI1 },
353 Vector { _reserved: 0 },
354 Vector { _handler: SWPMI1 },
355 Vector { _handler: TSC },
356 Vector { _reserved: 0 },
357 Vector { _reserved: 0 },
358 Vector { _handler: RNG },
359 Vector { _handler: FPU },
360 Vector { _handler: CRS },
361 ];
362}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 363impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 364impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 365impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l431vc.rs b/embassy-stm32/src/chip/stm32l431vc.rs
index 9c26d500d..902c4eb19 100644
--- a/embassy-stm32/src/chip/stm32l431vc.rs
+++ b/embassy-stm32/src/chip/stm32l431vc.rs
@@ -1,18 +1,365 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG,
11 SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, 11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC,
12 USART1, USART2, USART3, WWDG 12 USART1, USART2, USART3, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LPTIM1 = 65,
64 LPTIM2 = 66,
65 LPUART1 = 70,
66 PVD_PVM = 1,
67 QUADSPI = 71,
68 RCC = 5,
69 RNG = 80,
70 RTC_Alarm = 41,
71 RTC_WKUP = 3,
72 SAI1 = 74,
73 SDMMC1 = 49,
74 SPI1 = 35,
75 SPI2 = 36,
76 SPI3 = 51,
77 SWPMI1 = 76,
78 TAMP_STAMP = 2,
79 TIM1_BRK_TIM15 = 24,
80 TIM1_CC = 27,
81 TIM1_TRG_COM = 26,
82 TIM1_UP_TIM16 = 25,
83 TIM2 = 28,
84 TIM6_DAC = 54,
85 TIM7 = 55,
86 TSC = 77,
87 USART1 = 37,
88 USART2 = 38,
89 USART3 = 39,
90 WWDG = 0,
91 }
92 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
93 #[inline(always)]
94 fn number(self) -> u16 {
95 self as u16
96 }
97 }
98
99 declare!(ADC1);
100 declare!(CAN1_RX0);
101 declare!(CAN1_RX1);
102 declare!(CAN1_SCE);
103 declare!(CAN1_TX);
104 declare!(COMP);
105 declare!(CRS);
106 declare!(DMA1_Channel1);
107 declare!(DMA1_Channel2);
108 declare!(DMA1_Channel3);
109 declare!(DMA1_Channel4);
110 declare!(DMA1_Channel5);
111 declare!(DMA1_Channel6);
112 declare!(DMA1_Channel7);
113 declare!(DMA2_Channel1);
114 declare!(DMA2_Channel2);
115 declare!(DMA2_Channel3);
116 declare!(DMA2_Channel4);
117 declare!(DMA2_Channel5);
118 declare!(DMA2_Channel6);
119 declare!(DMA2_Channel7);
120 declare!(EXTI0);
121 declare!(EXTI1);
122 declare!(EXTI15_10);
123 declare!(EXTI2);
124 declare!(EXTI3);
125 declare!(EXTI4);
126 declare!(EXTI9_5);
127 declare!(FLASH);
128 declare!(FPU);
129 declare!(I2C1_ER);
130 declare!(I2C1_EV);
131 declare!(I2C2_ER);
132 declare!(I2C2_EV);
133 declare!(I2C3_ER);
134 declare!(I2C3_EV);
135 declare!(LPTIM1);
136 declare!(LPTIM2);
137 declare!(LPUART1);
138 declare!(PVD_PVM);
139 declare!(QUADSPI);
140 declare!(RCC);
141 declare!(RNG);
142 declare!(RTC_Alarm);
143 declare!(RTC_WKUP);
144 declare!(SAI1);
145 declare!(SDMMC1);
146 declare!(SPI1);
147 declare!(SPI2);
148 declare!(SPI3);
149 declare!(SWPMI1);
150 declare!(TAMP_STAMP);
151 declare!(TIM1_BRK_TIM15);
152 declare!(TIM1_CC);
153 declare!(TIM1_TRG_COM);
154 declare!(TIM1_UP_TIM16);
155 declare!(TIM2);
156 declare!(TIM6_DAC);
157 declare!(TIM7);
158 declare!(TSC);
159 declare!(USART1);
160 declare!(USART2);
161 declare!(USART3);
162 declare!(WWDG);
163}
164mod interrupt_vector {
165 extern "C" {
166 fn ADC1();
167 fn CAN1_RX0();
168 fn CAN1_RX1();
169 fn CAN1_SCE();
170 fn CAN1_TX();
171 fn COMP();
172 fn CRS();
173 fn DMA1_Channel1();
174 fn DMA1_Channel2();
175 fn DMA1_Channel3();
176 fn DMA1_Channel4();
177 fn DMA1_Channel5();
178 fn DMA1_Channel6();
179 fn DMA1_Channel7();
180 fn DMA2_Channel1();
181 fn DMA2_Channel2();
182 fn DMA2_Channel3();
183 fn DMA2_Channel4();
184 fn DMA2_Channel5();
185 fn DMA2_Channel6();
186 fn DMA2_Channel7();
187 fn EXTI0();
188 fn EXTI1();
189 fn EXTI15_10();
190 fn EXTI2();
191 fn EXTI3();
192 fn EXTI4();
193 fn EXTI9_5();
194 fn FLASH();
195 fn FPU();
196 fn I2C1_ER();
197 fn I2C1_EV();
198 fn I2C2_ER();
199 fn I2C2_EV();
200 fn I2C3_ER();
201 fn I2C3_EV();
202 fn LPTIM1();
203 fn LPTIM2();
204 fn LPUART1();
205 fn PVD_PVM();
206 fn QUADSPI();
207 fn RCC();
208 fn RNG();
209 fn RTC_Alarm();
210 fn RTC_WKUP();
211 fn SAI1();
212 fn SDMMC1();
213 fn SPI1();
214 fn SPI2();
215 fn SPI3();
216 fn SWPMI1();
217 fn TAMP_STAMP();
218 fn TIM1_BRK_TIM15();
219 fn TIM1_CC();
220 fn TIM1_TRG_COM();
221 fn TIM1_UP_TIM16();
222 fn TIM2();
223 fn TIM6_DAC();
224 fn TIM7();
225 fn TSC();
226 fn USART1();
227 fn USART2();
228 fn USART3();
229 fn WWDG();
230 }
231 pub union Vector {
232 _handler: unsafe extern "C" fn(),
233 _reserved: u32,
234 }
235 #[link_section = ".vector_table.interrupts"]
236 #[no_mangle]
237 pub static __INTERRUPTS: [Vector; 83] = [
238 Vector { _handler: WWDG },
239 Vector { _handler: PVD_PVM },
240 Vector {
241 _handler: TAMP_STAMP,
242 },
243 Vector { _handler: RTC_WKUP },
244 Vector { _handler: FLASH },
245 Vector { _handler: RCC },
246 Vector { _handler: EXTI0 },
247 Vector { _handler: EXTI1 },
248 Vector { _handler: EXTI2 },
249 Vector { _handler: EXTI3 },
250 Vector { _handler: EXTI4 },
251 Vector {
252 _handler: DMA1_Channel1,
253 },
254 Vector {
255 _handler: DMA1_Channel2,
256 },
257 Vector {
258 _handler: DMA1_Channel3,
259 },
260 Vector {
261 _handler: DMA1_Channel4,
262 },
263 Vector {
264 _handler: DMA1_Channel5,
265 },
266 Vector {
267 _handler: DMA1_Channel6,
268 },
269 Vector {
270 _handler: DMA1_Channel7,
271 },
272 Vector { _handler: ADC1 },
273 Vector { _handler: CAN1_TX },
274 Vector { _handler: CAN1_RX0 },
275 Vector { _handler: CAN1_RX1 },
276 Vector { _handler: CAN1_SCE },
277 Vector { _handler: EXTI9_5 },
278 Vector {
279 _handler: TIM1_BRK_TIM15,
280 },
281 Vector {
282 _handler: TIM1_UP_TIM16,
283 },
284 Vector {
285 _handler: TIM1_TRG_COM,
286 },
287 Vector { _handler: TIM1_CC },
288 Vector { _handler: TIM2 },
289 Vector { _reserved: 0 },
290 Vector { _reserved: 0 },
291 Vector { _handler: I2C1_EV },
292 Vector { _handler: I2C1_ER },
293 Vector { _handler: I2C2_EV },
294 Vector { _handler: I2C2_ER },
295 Vector { _handler: SPI1 },
296 Vector { _handler: SPI2 },
297 Vector { _handler: USART1 },
298 Vector { _handler: USART2 },
299 Vector { _handler: USART3 },
300 Vector {
301 _handler: EXTI15_10,
302 },
303 Vector {
304 _handler: RTC_Alarm,
305 },
306 Vector { _reserved: 0 },
307 Vector { _reserved: 0 },
308 Vector { _reserved: 0 },
309 Vector { _reserved: 0 },
310 Vector { _reserved: 0 },
311 Vector { _reserved: 0 },
312 Vector { _reserved: 0 },
313 Vector { _handler: SDMMC1 },
314 Vector { _reserved: 0 },
315 Vector { _handler: SPI3 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _handler: TIM6_DAC },
319 Vector { _handler: TIM7 },
320 Vector {
321 _handler: DMA2_Channel1,
322 },
323 Vector {
324 _handler: DMA2_Channel2,
325 },
326 Vector {
327 _handler: DMA2_Channel3,
328 },
329 Vector {
330 _handler: DMA2_Channel4,
331 },
332 Vector {
333 _handler: DMA2_Channel5,
334 },
335 Vector { _reserved: 0 },
336 Vector { _reserved: 0 },
337 Vector { _reserved: 0 },
338 Vector { _handler: COMP },
339 Vector { _handler: LPTIM1 },
340 Vector { _handler: LPTIM2 },
341 Vector { _reserved: 0 },
342 Vector {
343 _handler: DMA2_Channel6,
344 },
345 Vector {
346 _handler: DMA2_Channel7,
347 },
348 Vector { _handler: LPUART1 },
349 Vector { _handler: QUADSPI },
350 Vector { _handler: I2C3_EV },
351 Vector { _handler: I2C3_ER },
352 Vector { _handler: SAI1 },
353 Vector { _reserved: 0 },
354 Vector { _handler: SWPMI1 },
355 Vector { _handler: TSC },
356 Vector { _reserved: 0 },
357 Vector { _reserved: 0 },
358 Vector { _handler: RNG },
359 Vector { _handler: FPU },
360 Vector { _handler: CRS },
361 ];
362}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 363impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 364impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 365impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l432kb.rs b/embassy-stm32/src/chip/stm32l432kb.rs
index 36b8571c1..915bbbd6a 100644
--- a/embassy-stm32/src/chip/stm32l432kb.rs
+++ b/embassy-stm32/src/chip/stm32l432kb.rs
@@ -1,16 +1,351 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10,
8 PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 8 PH11, PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
9 RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, 9 RNG, RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1,
10 USART2, USB, WWDG 10 USART2, USB, WWDG
11); 11);
12pub const SYSCFG_BASE: usize = 0x40010000;
13pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 14pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 15pub const GPIO_STRIDE: usize = 0x400;
16
17pub mod interrupt {
18 pub use cortex_m::interrupt::{CriticalSection, Mutex};
19 pub use embassy::interrupt::{declare, take, Interrupt};
20 pub use embassy_extras::interrupt::Priority4 as Priority;
21
22 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
23 #[allow(non_camel_case_types)]
24 enum InterruptEnum {
25 ADC1 = 18,
26 CAN1_RX0 = 20,
27 CAN1_RX1 = 21,
28 CAN1_SCE = 22,
29 CAN1_TX = 19,
30 COMP = 64,
31 CRS = 82,
32 DMA1_Channel1 = 11,
33 DMA1_Channel2 = 12,
34 DMA1_Channel3 = 13,
35 DMA1_Channel4 = 14,
36 DMA1_Channel5 = 15,
37 DMA1_Channel6 = 16,
38 DMA1_Channel7 = 17,
39 DMA2_Channel1 = 56,
40 DMA2_Channel2 = 57,
41 DMA2_Channel3 = 58,
42 DMA2_Channel4 = 59,
43 DMA2_Channel5 = 60,
44 DMA2_Channel6 = 68,
45 DMA2_Channel7 = 69,
46 EXTI0 = 6,
47 EXTI1 = 7,
48 EXTI15_10 = 40,
49 EXTI2 = 8,
50 EXTI3 = 9,
51 EXTI4 = 10,
52 EXTI9_5 = 23,
53 FLASH = 4,
54 FPU = 81,
55 I2C1_ER = 32,
56 I2C1_EV = 31,
57 I2C3_ER = 73,
58 I2C3_EV = 72,
59 LPTIM1 = 65,
60 LPTIM2 = 66,
61 LPUART1 = 70,
62 PVD_PVM = 1,
63 QUADSPI = 71,
64 RCC = 5,
65 RNG = 80,
66 RTC_Alarm = 41,
67 RTC_WKUP = 3,
68 SAI1 = 74,
69 SPI1 = 35,
70 SPI3 = 51,
71 SWPMI1 = 76,
72 TAMP_STAMP = 2,
73 TIM1_BRK_TIM15 = 24,
74 TIM1_CC = 27,
75 TIM1_TRG_COM = 26,
76 TIM1_UP_TIM16 = 25,
77 TIM2 = 28,
78 TIM6_DAC = 54,
79 TIM7 = 55,
80 TSC = 77,
81 USART1 = 37,
82 USART2 = 38,
83 USB = 67,
84 WWDG = 0,
85 }
86 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
87 #[inline(always)]
88 fn number(self) -> u16 {
89 self as u16
90 }
91 }
92
93 declare!(ADC1);
94 declare!(CAN1_RX0);
95 declare!(CAN1_RX1);
96 declare!(CAN1_SCE);
97 declare!(CAN1_TX);
98 declare!(COMP);
99 declare!(CRS);
100 declare!(DMA1_Channel1);
101 declare!(DMA1_Channel2);
102 declare!(DMA1_Channel3);
103 declare!(DMA1_Channel4);
104 declare!(DMA1_Channel5);
105 declare!(DMA1_Channel6);
106 declare!(DMA1_Channel7);
107 declare!(DMA2_Channel1);
108 declare!(DMA2_Channel2);
109 declare!(DMA2_Channel3);
110 declare!(DMA2_Channel4);
111 declare!(DMA2_Channel5);
112 declare!(DMA2_Channel6);
113 declare!(DMA2_Channel7);
114 declare!(EXTI0);
115 declare!(EXTI1);
116 declare!(EXTI15_10);
117 declare!(EXTI2);
118 declare!(EXTI3);
119 declare!(EXTI4);
120 declare!(EXTI9_5);
121 declare!(FLASH);
122 declare!(FPU);
123 declare!(I2C1_ER);
124 declare!(I2C1_EV);
125 declare!(I2C3_ER);
126 declare!(I2C3_EV);
127 declare!(LPTIM1);
128 declare!(LPTIM2);
129 declare!(LPUART1);
130 declare!(PVD_PVM);
131 declare!(QUADSPI);
132 declare!(RCC);
133 declare!(RNG);
134 declare!(RTC_Alarm);
135 declare!(RTC_WKUP);
136 declare!(SAI1);
137 declare!(SPI1);
138 declare!(SPI3);
139 declare!(SWPMI1);
140 declare!(TAMP_STAMP);
141 declare!(TIM1_BRK_TIM15);
142 declare!(TIM1_CC);
143 declare!(TIM1_TRG_COM);
144 declare!(TIM1_UP_TIM16);
145 declare!(TIM2);
146 declare!(TIM6_DAC);
147 declare!(TIM7);
148 declare!(TSC);
149 declare!(USART1);
150 declare!(USART2);
151 declare!(USB);
152 declare!(WWDG);
153}
154mod interrupt_vector {
155 extern "C" {
156 fn ADC1();
157 fn CAN1_RX0();
158 fn CAN1_RX1();
159 fn CAN1_SCE();
160 fn CAN1_TX();
161 fn COMP();
162 fn CRS();
163 fn DMA1_Channel1();
164 fn DMA1_Channel2();
165 fn DMA1_Channel3();
166 fn DMA1_Channel4();
167 fn DMA1_Channel5();
168 fn DMA1_Channel6();
169 fn DMA1_Channel7();
170 fn DMA2_Channel1();
171 fn DMA2_Channel2();
172 fn DMA2_Channel3();
173 fn DMA2_Channel4();
174 fn DMA2_Channel5();
175 fn DMA2_Channel6();
176 fn DMA2_Channel7();
177 fn EXTI0();
178 fn EXTI1();
179 fn EXTI15_10();
180 fn EXTI2();
181 fn EXTI3();
182 fn EXTI4();
183 fn EXTI9_5();
184 fn FLASH();
185 fn FPU();
186 fn I2C1_ER();
187 fn I2C1_EV();
188 fn I2C3_ER();
189 fn I2C3_EV();
190 fn LPTIM1();
191 fn LPTIM2();
192 fn LPUART1();
193 fn PVD_PVM();
194 fn QUADSPI();
195 fn RCC();
196 fn RNG();
197 fn RTC_Alarm();
198 fn RTC_WKUP();
199 fn SAI1();
200 fn SPI1();
201 fn SPI3();
202 fn SWPMI1();
203 fn TAMP_STAMP();
204 fn TIM1_BRK_TIM15();
205 fn TIM1_CC();
206 fn TIM1_TRG_COM();
207 fn TIM1_UP_TIM16();
208 fn TIM2();
209 fn TIM6_DAC();
210 fn TIM7();
211 fn TSC();
212 fn USART1();
213 fn USART2();
214 fn USB();
215 fn WWDG();
216 }
217 pub union Vector {
218 _handler: unsafe extern "C" fn(),
219 _reserved: u32,
220 }
221 #[link_section = ".vector_table.interrupts"]
222 #[no_mangle]
223 pub static __INTERRUPTS: [Vector; 83] = [
224 Vector { _handler: WWDG },
225 Vector { _handler: PVD_PVM },
226 Vector {
227 _handler: TAMP_STAMP,
228 },
229 Vector { _handler: RTC_WKUP },
230 Vector { _handler: FLASH },
231 Vector { _handler: RCC },
232 Vector { _handler: EXTI0 },
233 Vector { _handler: EXTI1 },
234 Vector { _handler: EXTI2 },
235 Vector { _handler: EXTI3 },
236 Vector { _handler: EXTI4 },
237 Vector {
238 _handler: DMA1_Channel1,
239 },
240 Vector {
241 _handler: DMA1_Channel2,
242 },
243 Vector {
244 _handler: DMA1_Channel3,
245 },
246 Vector {
247 _handler: DMA1_Channel4,
248 },
249 Vector {
250 _handler: DMA1_Channel5,
251 },
252 Vector {
253 _handler: DMA1_Channel6,
254 },
255 Vector {
256 _handler: DMA1_Channel7,
257 },
258 Vector { _handler: ADC1 },
259 Vector { _handler: CAN1_TX },
260 Vector { _handler: CAN1_RX0 },
261 Vector { _handler: CAN1_RX1 },
262 Vector { _handler: CAN1_SCE },
263 Vector { _handler: EXTI9_5 },
264 Vector {
265 _handler: TIM1_BRK_TIM15,
266 },
267 Vector {
268 _handler: TIM1_UP_TIM16,
269 },
270 Vector {
271 _handler: TIM1_TRG_COM,
272 },
273 Vector { _handler: TIM1_CC },
274 Vector { _handler: TIM2 },
275 Vector { _reserved: 0 },
276 Vector { _reserved: 0 },
277 Vector { _handler: I2C1_EV },
278 Vector { _handler: I2C1_ER },
279 Vector { _reserved: 0 },
280 Vector { _reserved: 0 },
281 Vector { _handler: SPI1 },
282 Vector { _reserved: 0 },
283 Vector { _handler: USART1 },
284 Vector { _handler: USART2 },
285 Vector { _reserved: 0 },
286 Vector {
287 _handler: EXTI15_10,
288 },
289 Vector {
290 _handler: RTC_Alarm,
291 },
292 Vector { _reserved: 0 },
293 Vector { _reserved: 0 },
294 Vector { _reserved: 0 },
295 Vector { _reserved: 0 },
296 Vector { _reserved: 0 },
297 Vector { _reserved: 0 },
298 Vector { _reserved: 0 },
299 Vector { _reserved: 0 },
300 Vector { _reserved: 0 },
301 Vector { _handler: SPI3 },
302 Vector { _reserved: 0 },
303 Vector { _reserved: 0 },
304 Vector { _handler: TIM6_DAC },
305 Vector { _handler: TIM7 },
306 Vector {
307 _handler: DMA2_Channel1,
308 },
309 Vector {
310 _handler: DMA2_Channel2,
311 },
312 Vector {
313 _handler: DMA2_Channel3,
314 },
315 Vector {
316 _handler: DMA2_Channel4,
317 },
318 Vector {
319 _handler: DMA2_Channel5,
320 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _handler: COMP },
325 Vector { _handler: LPTIM1 },
326 Vector { _handler: LPTIM2 },
327 Vector { _handler: USB },
328 Vector {
329 _handler: DMA2_Channel6,
330 },
331 Vector {
332 _handler: DMA2_Channel7,
333 },
334 Vector { _handler: LPUART1 },
335 Vector { _handler: QUADSPI },
336 Vector { _handler: I2C3_EV },
337 Vector { _handler: I2C3_ER },
338 Vector { _handler: SAI1 },
339 Vector { _reserved: 0 },
340 Vector { _handler: SWPMI1 },
341 Vector { _handler: TSC },
342 Vector { _reserved: 0 },
343 Vector { _reserved: 0 },
344 Vector { _handler: RNG },
345 Vector { _handler: FPU },
346 Vector { _handler: CRS },
347 ];
348}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 349impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 350impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 351impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l432kc.rs b/embassy-stm32/src/chip/stm32l432kc.rs
index 36b8571c1..915bbbd6a 100644
--- a/embassy-stm32/src/chip/stm32l432kc.rs
+++ b/embassy-stm32/src/chip/stm32l432kc.rs
@@ -1,16 +1,351 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10,
8 PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 8 PH11, PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
9 RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, 9 RNG, RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1,
10 USART2, USB, WWDG 10 USART2, USB, WWDG
11); 11);
12pub const SYSCFG_BASE: usize = 0x40010000;
13pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 14pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 15pub const GPIO_STRIDE: usize = 0x400;
16
17pub mod interrupt {
18 pub use cortex_m::interrupt::{CriticalSection, Mutex};
19 pub use embassy::interrupt::{declare, take, Interrupt};
20 pub use embassy_extras::interrupt::Priority4 as Priority;
21
22 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
23 #[allow(non_camel_case_types)]
24 enum InterruptEnum {
25 ADC1 = 18,
26 CAN1_RX0 = 20,
27 CAN1_RX1 = 21,
28 CAN1_SCE = 22,
29 CAN1_TX = 19,
30 COMP = 64,
31 CRS = 82,
32 DMA1_Channel1 = 11,
33 DMA1_Channel2 = 12,
34 DMA1_Channel3 = 13,
35 DMA1_Channel4 = 14,
36 DMA1_Channel5 = 15,
37 DMA1_Channel6 = 16,
38 DMA1_Channel7 = 17,
39 DMA2_Channel1 = 56,
40 DMA2_Channel2 = 57,
41 DMA2_Channel3 = 58,
42 DMA2_Channel4 = 59,
43 DMA2_Channel5 = 60,
44 DMA2_Channel6 = 68,
45 DMA2_Channel7 = 69,
46 EXTI0 = 6,
47 EXTI1 = 7,
48 EXTI15_10 = 40,
49 EXTI2 = 8,
50 EXTI3 = 9,
51 EXTI4 = 10,
52 EXTI9_5 = 23,
53 FLASH = 4,
54 FPU = 81,
55 I2C1_ER = 32,
56 I2C1_EV = 31,
57 I2C3_ER = 73,
58 I2C3_EV = 72,
59 LPTIM1 = 65,
60 LPTIM2 = 66,
61 LPUART1 = 70,
62 PVD_PVM = 1,
63 QUADSPI = 71,
64 RCC = 5,
65 RNG = 80,
66 RTC_Alarm = 41,
67 RTC_WKUP = 3,
68 SAI1 = 74,
69 SPI1 = 35,
70 SPI3 = 51,
71 SWPMI1 = 76,
72 TAMP_STAMP = 2,
73 TIM1_BRK_TIM15 = 24,
74 TIM1_CC = 27,
75 TIM1_TRG_COM = 26,
76 TIM1_UP_TIM16 = 25,
77 TIM2 = 28,
78 TIM6_DAC = 54,
79 TIM7 = 55,
80 TSC = 77,
81 USART1 = 37,
82 USART2 = 38,
83 USB = 67,
84 WWDG = 0,
85 }
86 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
87 #[inline(always)]
88 fn number(self) -> u16 {
89 self as u16
90 }
91 }
92
93 declare!(ADC1);
94 declare!(CAN1_RX0);
95 declare!(CAN1_RX1);
96 declare!(CAN1_SCE);
97 declare!(CAN1_TX);
98 declare!(COMP);
99 declare!(CRS);
100 declare!(DMA1_Channel1);
101 declare!(DMA1_Channel2);
102 declare!(DMA1_Channel3);
103 declare!(DMA1_Channel4);
104 declare!(DMA1_Channel5);
105 declare!(DMA1_Channel6);
106 declare!(DMA1_Channel7);
107 declare!(DMA2_Channel1);
108 declare!(DMA2_Channel2);
109 declare!(DMA2_Channel3);
110 declare!(DMA2_Channel4);
111 declare!(DMA2_Channel5);
112 declare!(DMA2_Channel6);
113 declare!(DMA2_Channel7);
114 declare!(EXTI0);
115 declare!(EXTI1);
116 declare!(EXTI15_10);
117 declare!(EXTI2);
118 declare!(EXTI3);
119 declare!(EXTI4);
120 declare!(EXTI9_5);
121 declare!(FLASH);
122 declare!(FPU);
123 declare!(I2C1_ER);
124 declare!(I2C1_EV);
125 declare!(I2C3_ER);
126 declare!(I2C3_EV);
127 declare!(LPTIM1);
128 declare!(LPTIM2);
129 declare!(LPUART1);
130 declare!(PVD_PVM);
131 declare!(QUADSPI);
132 declare!(RCC);
133 declare!(RNG);
134 declare!(RTC_Alarm);
135 declare!(RTC_WKUP);
136 declare!(SAI1);
137 declare!(SPI1);
138 declare!(SPI3);
139 declare!(SWPMI1);
140 declare!(TAMP_STAMP);
141 declare!(TIM1_BRK_TIM15);
142 declare!(TIM1_CC);
143 declare!(TIM1_TRG_COM);
144 declare!(TIM1_UP_TIM16);
145 declare!(TIM2);
146 declare!(TIM6_DAC);
147 declare!(TIM7);
148 declare!(TSC);
149 declare!(USART1);
150 declare!(USART2);
151 declare!(USB);
152 declare!(WWDG);
153}
154mod interrupt_vector {
155 extern "C" {
156 fn ADC1();
157 fn CAN1_RX0();
158 fn CAN1_RX1();
159 fn CAN1_SCE();
160 fn CAN1_TX();
161 fn COMP();
162 fn CRS();
163 fn DMA1_Channel1();
164 fn DMA1_Channel2();
165 fn DMA1_Channel3();
166 fn DMA1_Channel4();
167 fn DMA1_Channel5();
168 fn DMA1_Channel6();
169 fn DMA1_Channel7();
170 fn DMA2_Channel1();
171 fn DMA2_Channel2();
172 fn DMA2_Channel3();
173 fn DMA2_Channel4();
174 fn DMA2_Channel5();
175 fn DMA2_Channel6();
176 fn DMA2_Channel7();
177 fn EXTI0();
178 fn EXTI1();
179 fn EXTI15_10();
180 fn EXTI2();
181 fn EXTI3();
182 fn EXTI4();
183 fn EXTI9_5();
184 fn FLASH();
185 fn FPU();
186 fn I2C1_ER();
187 fn I2C1_EV();
188 fn I2C3_ER();
189 fn I2C3_EV();
190 fn LPTIM1();
191 fn LPTIM2();
192 fn LPUART1();
193 fn PVD_PVM();
194 fn QUADSPI();
195 fn RCC();
196 fn RNG();
197 fn RTC_Alarm();
198 fn RTC_WKUP();
199 fn SAI1();
200 fn SPI1();
201 fn SPI3();
202 fn SWPMI1();
203 fn TAMP_STAMP();
204 fn TIM1_BRK_TIM15();
205 fn TIM1_CC();
206 fn TIM1_TRG_COM();
207 fn TIM1_UP_TIM16();
208 fn TIM2();
209 fn TIM6_DAC();
210 fn TIM7();
211 fn TSC();
212 fn USART1();
213 fn USART2();
214 fn USB();
215 fn WWDG();
216 }
217 pub union Vector {
218 _handler: unsafe extern "C" fn(),
219 _reserved: u32,
220 }
221 #[link_section = ".vector_table.interrupts"]
222 #[no_mangle]
223 pub static __INTERRUPTS: [Vector; 83] = [
224 Vector { _handler: WWDG },
225 Vector { _handler: PVD_PVM },
226 Vector {
227 _handler: TAMP_STAMP,
228 },
229 Vector { _handler: RTC_WKUP },
230 Vector { _handler: FLASH },
231 Vector { _handler: RCC },
232 Vector { _handler: EXTI0 },
233 Vector { _handler: EXTI1 },
234 Vector { _handler: EXTI2 },
235 Vector { _handler: EXTI3 },
236 Vector { _handler: EXTI4 },
237 Vector {
238 _handler: DMA1_Channel1,
239 },
240 Vector {
241 _handler: DMA1_Channel2,
242 },
243 Vector {
244 _handler: DMA1_Channel3,
245 },
246 Vector {
247 _handler: DMA1_Channel4,
248 },
249 Vector {
250 _handler: DMA1_Channel5,
251 },
252 Vector {
253 _handler: DMA1_Channel6,
254 },
255 Vector {
256 _handler: DMA1_Channel7,
257 },
258 Vector { _handler: ADC1 },
259 Vector { _handler: CAN1_TX },
260 Vector { _handler: CAN1_RX0 },
261 Vector { _handler: CAN1_RX1 },
262 Vector { _handler: CAN1_SCE },
263 Vector { _handler: EXTI9_5 },
264 Vector {
265 _handler: TIM1_BRK_TIM15,
266 },
267 Vector {
268 _handler: TIM1_UP_TIM16,
269 },
270 Vector {
271 _handler: TIM1_TRG_COM,
272 },
273 Vector { _handler: TIM1_CC },
274 Vector { _handler: TIM2 },
275 Vector { _reserved: 0 },
276 Vector { _reserved: 0 },
277 Vector { _handler: I2C1_EV },
278 Vector { _handler: I2C1_ER },
279 Vector { _reserved: 0 },
280 Vector { _reserved: 0 },
281 Vector { _handler: SPI1 },
282 Vector { _reserved: 0 },
283 Vector { _handler: USART1 },
284 Vector { _handler: USART2 },
285 Vector { _reserved: 0 },
286 Vector {
287 _handler: EXTI15_10,
288 },
289 Vector {
290 _handler: RTC_Alarm,
291 },
292 Vector { _reserved: 0 },
293 Vector { _reserved: 0 },
294 Vector { _reserved: 0 },
295 Vector { _reserved: 0 },
296 Vector { _reserved: 0 },
297 Vector { _reserved: 0 },
298 Vector { _reserved: 0 },
299 Vector { _reserved: 0 },
300 Vector { _reserved: 0 },
301 Vector { _handler: SPI3 },
302 Vector { _reserved: 0 },
303 Vector { _reserved: 0 },
304 Vector { _handler: TIM6_DAC },
305 Vector { _handler: TIM7 },
306 Vector {
307 _handler: DMA2_Channel1,
308 },
309 Vector {
310 _handler: DMA2_Channel2,
311 },
312 Vector {
313 _handler: DMA2_Channel3,
314 },
315 Vector {
316 _handler: DMA2_Channel4,
317 },
318 Vector {
319 _handler: DMA2_Channel5,
320 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _handler: COMP },
325 Vector { _handler: LPTIM1 },
326 Vector { _handler: LPTIM2 },
327 Vector { _handler: USB },
328 Vector {
329 _handler: DMA2_Channel6,
330 },
331 Vector {
332 _handler: DMA2_Channel7,
333 },
334 Vector { _handler: LPUART1 },
335 Vector { _handler: QUADSPI },
336 Vector { _handler: I2C3_EV },
337 Vector { _handler: I2C3_ER },
338 Vector { _handler: SAI1 },
339 Vector { _reserved: 0 },
340 Vector { _handler: SWPMI1 },
341 Vector { _handler: TSC },
342 Vector { _reserved: 0 },
343 Vector { _reserved: 0 },
344 Vector { _handler: RNG },
345 Vector { _handler: FPU },
346 Vector { _handler: CRS },
347 ];
348}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 349impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 350impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 351impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l433cb.rs b/embassy-stm32/src/chip/stm32l433cb.rs
index 80e01da59..95313ffb0 100644
--- a/embassy-stm32/src/chip/stm32l433cb.rs
+++ b/embassy-stm32/src/chip/stm32l433cb.rs
@@ -1,18 +1,371 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, 11 RNG, RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC,
12 USART2, USART3, USB, WWDG 12 USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LCD = 78,
64 LPTIM1 = 65,
65 LPTIM2 = 66,
66 LPUART1 = 70,
67 PVD_PVM = 1,
68 QUADSPI = 71,
69 RCC = 5,
70 RNG = 80,
71 RTC_Alarm = 41,
72 RTC_WKUP = 3,
73 SAI1 = 74,
74 SDMMC1 = 49,
75 SPI1 = 35,
76 SPI2 = 36,
77 SPI3 = 51,
78 SWPMI1 = 76,
79 TAMP_STAMP = 2,
80 TIM1_BRK_TIM15 = 24,
81 TIM1_CC = 27,
82 TIM1_TRG_COM = 26,
83 TIM1_UP_TIM16 = 25,
84 TIM2 = 28,
85 TIM6_DAC = 54,
86 TIM7 = 55,
87 TSC = 77,
88 USART1 = 37,
89 USART2 = 38,
90 USART3 = 39,
91 USB = 67,
92 WWDG = 0,
93 }
94 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
95 #[inline(always)]
96 fn number(self) -> u16 {
97 self as u16
98 }
99 }
100
101 declare!(ADC1);
102 declare!(CAN1_RX0);
103 declare!(CAN1_RX1);
104 declare!(CAN1_SCE);
105 declare!(CAN1_TX);
106 declare!(COMP);
107 declare!(CRS);
108 declare!(DMA1_Channel1);
109 declare!(DMA1_Channel2);
110 declare!(DMA1_Channel3);
111 declare!(DMA1_Channel4);
112 declare!(DMA1_Channel5);
113 declare!(DMA1_Channel6);
114 declare!(DMA1_Channel7);
115 declare!(DMA2_Channel1);
116 declare!(DMA2_Channel2);
117 declare!(DMA2_Channel3);
118 declare!(DMA2_Channel4);
119 declare!(DMA2_Channel5);
120 declare!(DMA2_Channel6);
121 declare!(DMA2_Channel7);
122 declare!(EXTI0);
123 declare!(EXTI1);
124 declare!(EXTI15_10);
125 declare!(EXTI2);
126 declare!(EXTI3);
127 declare!(EXTI4);
128 declare!(EXTI9_5);
129 declare!(FLASH);
130 declare!(FPU);
131 declare!(I2C1_ER);
132 declare!(I2C1_EV);
133 declare!(I2C2_ER);
134 declare!(I2C2_EV);
135 declare!(I2C3_ER);
136 declare!(I2C3_EV);
137 declare!(LCD);
138 declare!(LPTIM1);
139 declare!(LPTIM2);
140 declare!(LPUART1);
141 declare!(PVD_PVM);
142 declare!(QUADSPI);
143 declare!(RCC);
144 declare!(RNG);
145 declare!(RTC_Alarm);
146 declare!(RTC_WKUP);
147 declare!(SAI1);
148 declare!(SDMMC1);
149 declare!(SPI1);
150 declare!(SPI2);
151 declare!(SPI3);
152 declare!(SWPMI1);
153 declare!(TAMP_STAMP);
154 declare!(TIM1_BRK_TIM15);
155 declare!(TIM1_CC);
156 declare!(TIM1_TRG_COM);
157 declare!(TIM1_UP_TIM16);
158 declare!(TIM2);
159 declare!(TIM6_DAC);
160 declare!(TIM7);
161 declare!(TSC);
162 declare!(USART1);
163 declare!(USART2);
164 declare!(USART3);
165 declare!(USB);
166 declare!(WWDG);
167}
168mod interrupt_vector {
169 extern "C" {
170 fn ADC1();
171 fn CAN1_RX0();
172 fn CAN1_RX1();
173 fn CAN1_SCE();
174 fn CAN1_TX();
175 fn COMP();
176 fn CRS();
177 fn DMA1_Channel1();
178 fn DMA1_Channel2();
179 fn DMA1_Channel3();
180 fn DMA1_Channel4();
181 fn DMA1_Channel5();
182 fn DMA1_Channel6();
183 fn DMA1_Channel7();
184 fn DMA2_Channel1();
185 fn DMA2_Channel2();
186 fn DMA2_Channel3();
187 fn DMA2_Channel4();
188 fn DMA2_Channel5();
189 fn DMA2_Channel6();
190 fn DMA2_Channel7();
191 fn EXTI0();
192 fn EXTI1();
193 fn EXTI15_10();
194 fn EXTI2();
195 fn EXTI3();
196 fn EXTI4();
197 fn EXTI9_5();
198 fn FLASH();
199 fn FPU();
200 fn I2C1_ER();
201 fn I2C1_EV();
202 fn I2C2_ER();
203 fn I2C2_EV();
204 fn I2C3_ER();
205 fn I2C3_EV();
206 fn LCD();
207 fn LPTIM1();
208 fn LPTIM2();
209 fn LPUART1();
210 fn PVD_PVM();
211 fn QUADSPI();
212 fn RCC();
213 fn RNG();
214 fn RTC_Alarm();
215 fn RTC_WKUP();
216 fn SAI1();
217 fn SDMMC1();
218 fn SPI1();
219 fn SPI2();
220 fn SPI3();
221 fn SWPMI1();
222 fn TAMP_STAMP();
223 fn TIM1_BRK_TIM15();
224 fn TIM1_CC();
225 fn TIM1_TRG_COM();
226 fn TIM1_UP_TIM16();
227 fn TIM2();
228 fn TIM6_DAC();
229 fn TIM7();
230 fn TSC();
231 fn USART1();
232 fn USART2();
233 fn USART3();
234 fn USB();
235 fn WWDG();
236 }
237 pub union Vector {
238 _handler: unsafe extern "C" fn(),
239 _reserved: u32,
240 }
241 #[link_section = ".vector_table.interrupts"]
242 #[no_mangle]
243 pub static __INTERRUPTS: [Vector; 83] = [
244 Vector { _handler: WWDG },
245 Vector { _handler: PVD_PVM },
246 Vector {
247 _handler: TAMP_STAMP,
248 },
249 Vector { _handler: RTC_WKUP },
250 Vector { _handler: FLASH },
251 Vector { _handler: RCC },
252 Vector { _handler: EXTI0 },
253 Vector { _handler: EXTI1 },
254 Vector { _handler: EXTI2 },
255 Vector { _handler: EXTI3 },
256 Vector { _handler: EXTI4 },
257 Vector {
258 _handler: DMA1_Channel1,
259 },
260 Vector {
261 _handler: DMA1_Channel2,
262 },
263 Vector {
264 _handler: DMA1_Channel3,
265 },
266 Vector {
267 _handler: DMA1_Channel4,
268 },
269 Vector {
270 _handler: DMA1_Channel5,
271 },
272 Vector {
273 _handler: DMA1_Channel6,
274 },
275 Vector {
276 _handler: DMA1_Channel7,
277 },
278 Vector { _handler: ADC1 },
279 Vector { _handler: CAN1_TX },
280 Vector { _handler: CAN1_RX0 },
281 Vector { _handler: CAN1_RX1 },
282 Vector { _handler: CAN1_SCE },
283 Vector { _handler: EXTI9_5 },
284 Vector {
285 _handler: TIM1_BRK_TIM15,
286 },
287 Vector {
288 _handler: TIM1_UP_TIM16,
289 },
290 Vector {
291 _handler: TIM1_TRG_COM,
292 },
293 Vector { _handler: TIM1_CC },
294 Vector { _handler: TIM2 },
295 Vector { _reserved: 0 },
296 Vector { _reserved: 0 },
297 Vector { _handler: I2C1_EV },
298 Vector { _handler: I2C1_ER },
299 Vector { _handler: I2C2_EV },
300 Vector { _handler: I2C2_ER },
301 Vector { _handler: SPI1 },
302 Vector { _handler: SPI2 },
303 Vector { _handler: USART1 },
304 Vector { _handler: USART2 },
305 Vector { _handler: USART3 },
306 Vector {
307 _handler: EXTI15_10,
308 },
309 Vector {
310 _handler: RTC_Alarm,
311 },
312 Vector { _reserved: 0 },
313 Vector { _reserved: 0 },
314 Vector { _reserved: 0 },
315 Vector { _reserved: 0 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _reserved: 0 },
319 Vector { _handler: SDMMC1 },
320 Vector { _reserved: 0 },
321 Vector { _handler: SPI3 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _handler: TIM6_DAC },
325 Vector { _handler: TIM7 },
326 Vector {
327 _handler: DMA2_Channel1,
328 },
329 Vector {
330 _handler: DMA2_Channel2,
331 },
332 Vector {
333 _handler: DMA2_Channel3,
334 },
335 Vector {
336 _handler: DMA2_Channel4,
337 },
338 Vector {
339 _handler: DMA2_Channel5,
340 },
341 Vector { _reserved: 0 },
342 Vector { _reserved: 0 },
343 Vector { _reserved: 0 },
344 Vector { _handler: COMP },
345 Vector { _handler: LPTIM1 },
346 Vector { _handler: LPTIM2 },
347 Vector { _handler: USB },
348 Vector {
349 _handler: DMA2_Channel6,
350 },
351 Vector {
352 _handler: DMA2_Channel7,
353 },
354 Vector { _handler: LPUART1 },
355 Vector { _handler: QUADSPI },
356 Vector { _handler: I2C3_EV },
357 Vector { _handler: I2C3_ER },
358 Vector { _handler: SAI1 },
359 Vector { _reserved: 0 },
360 Vector { _handler: SWPMI1 },
361 Vector { _handler: TSC },
362 Vector { _handler: LCD },
363 Vector { _reserved: 0 },
364 Vector { _handler: RNG },
365 Vector { _handler: FPU },
366 Vector { _handler: CRS },
367 ];
368}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 369impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 370impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 371impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l433cc.rs b/embassy-stm32/src/chip/stm32l433cc.rs
index 80e01da59..95313ffb0 100644
--- a/embassy-stm32/src/chip/stm32l433cc.rs
+++ b/embassy-stm32/src/chip/stm32l433cc.rs
@@ -1,18 +1,371 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, 11 RNG, RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC,
12 USART2, USART3, USB, WWDG 12 USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LCD = 78,
64 LPTIM1 = 65,
65 LPTIM2 = 66,
66 LPUART1 = 70,
67 PVD_PVM = 1,
68 QUADSPI = 71,
69 RCC = 5,
70 RNG = 80,
71 RTC_Alarm = 41,
72 RTC_WKUP = 3,
73 SAI1 = 74,
74 SDMMC1 = 49,
75 SPI1 = 35,
76 SPI2 = 36,
77 SPI3 = 51,
78 SWPMI1 = 76,
79 TAMP_STAMP = 2,
80 TIM1_BRK_TIM15 = 24,
81 TIM1_CC = 27,
82 TIM1_TRG_COM = 26,
83 TIM1_UP_TIM16 = 25,
84 TIM2 = 28,
85 TIM6_DAC = 54,
86 TIM7 = 55,
87 TSC = 77,
88 USART1 = 37,
89 USART2 = 38,
90 USART3 = 39,
91 USB = 67,
92 WWDG = 0,
93 }
94 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
95 #[inline(always)]
96 fn number(self) -> u16 {
97 self as u16
98 }
99 }
100
101 declare!(ADC1);
102 declare!(CAN1_RX0);
103 declare!(CAN1_RX1);
104 declare!(CAN1_SCE);
105 declare!(CAN1_TX);
106 declare!(COMP);
107 declare!(CRS);
108 declare!(DMA1_Channel1);
109 declare!(DMA1_Channel2);
110 declare!(DMA1_Channel3);
111 declare!(DMA1_Channel4);
112 declare!(DMA1_Channel5);
113 declare!(DMA1_Channel6);
114 declare!(DMA1_Channel7);
115 declare!(DMA2_Channel1);
116 declare!(DMA2_Channel2);
117 declare!(DMA2_Channel3);
118 declare!(DMA2_Channel4);
119 declare!(DMA2_Channel5);
120 declare!(DMA2_Channel6);
121 declare!(DMA2_Channel7);
122 declare!(EXTI0);
123 declare!(EXTI1);
124 declare!(EXTI15_10);
125 declare!(EXTI2);
126 declare!(EXTI3);
127 declare!(EXTI4);
128 declare!(EXTI9_5);
129 declare!(FLASH);
130 declare!(FPU);
131 declare!(I2C1_ER);
132 declare!(I2C1_EV);
133 declare!(I2C2_ER);
134 declare!(I2C2_EV);
135 declare!(I2C3_ER);
136 declare!(I2C3_EV);
137 declare!(LCD);
138 declare!(LPTIM1);
139 declare!(LPTIM2);
140 declare!(LPUART1);
141 declare!(PVD_PVM);
142 declare!(QUADSPI);
143 declare!(RCC);
144 declare!(RNG);
145 declare!(RTC_Alarm);
146 declare!(RTC_WKUP);
147 declare!(SAI1);
148 declare!(SDMMC1);
149 declare!(SPI1);
150 declare!(SPI2);
151 declare!(SPI3);
152 declare!(SWPMI1);
153 declare!(TAMP_STAMP);
154 declare!(TIM1_BRK_TIM15);
155 declare!(TIM1_CC);
156 declare!(TIM1_TRG_COM);
157 declare!(TIM1_UP_TIM16);
158 declare!(TIM2);
159 declare!(TIM6_DAC);
160 declare!(TIM7);
161 declare!(TSC);
162 declare!(USART1);
163 declare!(USART2);
164 declare!(USART3);
165 declare!(USB);
166 declare!(WWDG);
167}
168mod interrupt_vector {
169 extern "C" {
170 fn ADC1();
171 fn CAN1_RX0();
172 fn CAN1_RX1();
173 fn CAN1_SCE();
174 fn CAN1_TX();
175 fn COMP();
176 fn CRS();
177 fn DMA1_Channel1();
178 fn DMA1_Channel2();
179 fn DMA1_Channel3();
180 fn DMA1_Channel4();
181 fn DMA1_Channel5();
182 fn DMA1_Channel6();
183 fn DMA1_Channel7();
184 fn DMA2_Channel1();
185 fn DMA2_Channel2();
186 fn DMA2_Channel3();
187 fn DMA2_Channel4();
188 fn DMA2_Channel5();
189 fn DMA2_Channel6();
190 fn DMA2_Channel7();
191 fn EXTI0();
192 fn EXTI1();
193 fn EXTI15_10();
194 fn EXTI2();
195 fn EXTI3();
196 fn EXTI4();
197 fn EXTI9_5();
198 fn FLASH();
199 fn FPU();
200 fn I2C1_ER();
201 fn I2C1_EV();
202 fn I2C2_ER();
203 fn I2C2_EV();
204 fn I2C3_ER();
205 fn I2C3_EV();
206 fn LCD();
207 fn LPTIM1();
208 fn LPTIM2();
209 fn LPUART1();
210 fn PVD_PVM();
211 fn QUADSPI();
212 fn RCC();
213 fn RNG();
214 fn RTC_Alarm();
215 fn RTC_WKUP();
216 fn SAI1();
217 fn SDMMC1();
218 fn SPI1();
219 fn SPI2();
220 fn SPI3();
221 fn SWPMI1();
222 fn TAMP_STAMP();
223 fn TIM1_BRK_TIM15();
224 fn TIM1_CC();
225 fn TIM1_TRG_COM();
226 fn TIM1_UP_TIM16();
227 fn TIM2();
228 fn TIM6_DAC();
229 fn TIM7();
230 fn TSC();
231 fn USART1();
232 fn USART2();
233 fn USART3();
234 fn USB();
235 fn WWDG();
236 }
237 pub union Vector {
238 _handler: unsafe extern "C" fn(),
239 _reserved: u32,
240 }
241 #[link_section = ".vector_table.interrupts"]
242 #[no_mangle]
243 pub static __INTERRUPTS: [Vector; 83] = [
244 Vector { _handler: WWDG },
245 Vector { _handler: PVD_PVM },
246 Vector {
247 _handler: TAMP_STAMP,
248 },
249 Vector { _handler: RTC_WKUP },
250 Vector { _handler: FLASH },
251 Vector { _handler: RCC },
252 Vector { _handler: EXTI0 },
253 Vector { _handler: EXTI1 },
254 Vector { _handler: EXTI2 },
255 Vector { _handler: EXTI3 },
256 Vector { _handler: EXTI4 },
257 Vector {
258 _handler: DMA1_Channel1,
259 },
260 Vector {
261 _handler: DMA1_Channel2,
262 },
263 Vector {
264 _handler: DMA1_Channel3,
265 },
266 Vector {
267 _handler: DMA1_Channel4,
268 },
269 Vector {
270 _handler: DMA1_Channel5,
271 },
272 Vector {
273 _handler: DMA1_Channel6,
274 },
275 Vector {
276 _handler: DMA1_Channel7,
277 },
278 Vector { _handler: ADC1 },
279 Vector { _handler: CAN1_TX },
280 Vector { _handler: CAN1_RX0 },
281 Vector { _handler: CAN1_RX1 },
282 Vector { _handler: CAN1_SCE },
283 Vector { _handler: EXTI9_5 },
284 Vector {
285 _handler: TIM1_BRK_TIM15,
286 },
287 Vector {
288 _handler: TIM1_UP_TIM16,
289 },
290 Vector {
291 _handler: TIM1_TRG_COM,
292 },
293 Vector { _handler: TIM1_CC },
294 Vector { _handler: TIM2 },
295 Vector { _reserved: 0 },
296 Vector { _reserved: 0 },
297 Vector { _handler: I2C1_EV },
298 Vector { _handler: I2C1_ER },
299 Vector { _handler: I2C2_EV },
300 Vector { _handler: I2C2_ER },
301 Vector { _handler: SPI1 },
302 Vector { _handler: SPI2 },
303 Vector { _handler: USART1 },
304 Vector { _handler: USART2 },
305 Vector { _handler: USART3 },
306 Vector {
307 _handler: EXTI15_10,
308 },
309 Vector {
310 _handler: RTC_Alarm,
311 },
312 Vector { _reserved: 0 },
313 Vector { _reserved: 0 },
314 Vector { _reserved: 0 },
315 Vector { _reserved: 0 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _reserved: 0 },
319 Vector { _handler: SDMMC1 },
320 Vector { _reserved: 0 },
321 Vector { _handler: SPI3 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _handler: TIM6_DAC },
325 Vector { _handler: TIM7 },
326 Vector {
327 _handler: DMA2_Channel1,
328 },
329 Vector {
330 _handler: DMA2_Channel2,
331 },
332 Vector {
333 _handler: DMA2_Channel3,
334 },
335 Vector {
336 _handler: DMA2_Channel4,
337 },
338 Vector {
339 _handler: DMA2_Channel5,
340 },
341 Vector { _reserved: 0 },
342 Vector { _reserved: 0 },
343 Vector { _reserved: 0 },
344 Vector { _handler: COMP },
345 Vector { _handler: LPTIM1 },
346 Vector { _handler: LPTIM2 },
347 Vector { _handler: USB },
348 Vector {
349 _handler: DMA2_Channel6,
350 },
351 Vector {
352 _handler: DMA2_Channel7,
353 },
354 Vector { _handler: LPUART1 },
355 Vector { _handler: QUADSPI },
356 Vector { _handler: I2C3_EV },
357 Vector { _handler: I2C3_ER },
358 Vector { _handler: SAI1 },
359 Vector { _reserved: 0 },
360 Vector { _handler: SWPMI1 },
361 Vector { _handler: TSC },
362 Vector { _handler: LCD },
363 Vector { _reserved: 0 },
364 Vector { _handler: RNG },
365 Vector { _handler: FPU },
366 Vector { _handler: CRS },
367 ];
368}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 369impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 370impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 371impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l433rb.rs b/embassy-stm32/src/chip/stm32l433rb.rs
index a61a3c53e..38d4b8310 100644
--- a/embassy-stm32/src/chip/stm32l433rb.rs
+++ b/embassy-stm32/src/chip/stm32l433rb.rs
@@ -1,18 +1,371 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, 11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7,
12 USART1, USART2, USART3, USB, WWDG 12 TSC, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LCD = 78,
64 LPTIM1 = 65,
65 LPTIM2 = 66,
66 LPUART1 = 70,
67 PVD_PVM = 1,
68 QUADSPI = 71,
69 RCC = 5,
70 RNG = 80,
71 RTC_Alarm = 41,
72 RTC_WKUP = 3,
73 SAI1 = 74,
74 SDMMC1 = 49,
75 SPI1 = 35,
76 SPI2 = 36,
77 SPI3 = 51,
78 SWPMI1 = 76,
79 TAMP_STAMP = 2,
80 TIM1_BRK_TIM15 = 24,
81 TIM1_CC = 27,
82 TIM1_TRG_COM = 26,
83 TIM1_UP_TIM16 = 25,
84 TIM2 = 28,
85 TIM6_DAC = 54,
86 TIM7 = 55,
87 TSC = 77,
88 USART1 = 37,
89 USART2 = 38,
90 USART3 = 39,
91 USB = 67,
92 WWDG = 0,
93 }
94 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
95 #[inline(always)]
96 fn number(self) -> u16 {
97 self as u16
98 }
99 }
100
101 declare!(ADC1);
102 declare!(CAN1_RX0);
103 declare!(CAN1_RX1);
104 declare!(CAN1_SCE);
105 declare!(CAN1_TX);
106 declare!(COMP);
107 declare!(CRS);
108 declare!(DMA1_Channel1);
109 declare!(DMA1_Channel2);
110 declare!(DMA1_Channel3);
111 declare!(DMA1_Channel4);
112 declare!(DMA1_Channel5);
113 declare!(DMA1_Channel6);
114 declare!(DMA1_Channel7);
115 declare!(DMA2_Channel1);
116 declare!(DMA2_Channel2);
117 declare!(DMA2_Channel3);
118 declare!(DMA2_Channel4);
119 declare!(DMA2_Channel5);
120 declare!(DMA2_Channel6);
121 declare!(DMA2_Channel7);
122 declare!(EXTI0);
123 declare!(EXTI1);
124 declare!(EXTI15_10);
125 declare!(EXTI2);
126 declare!(EXTI3);
127 declare!(EXTI4);
128 declare!(EXTI9_5);
129 declare!(FLASH);
130 declare!(FPU);
131 declare!(I2C1_ER);
132 declare!(I2C1_EV);
133 declare!(I2C2_ER);
134 declare!(I2C2_EV);
135 declare!(I2C3_ER);
136 declare!(I2C3_EV);
137 declare!(LCD);
138 declare!(LPTIM1);
139 declare!(LPTIM2);
140 declare!(LPUART1);
141 declare!(PVD_PVM);
142 declare!(QUADSPI);
143 declare!(RCC);
144 declare!(RNG);
145 declare!(RTC_Alarm);
146 declare!(RTC_WKUP);
147 declare!(SAI1);
148 declare!(SDMMC1);
149 declare!(SPI1);
150 declare!(SPI2);
151 declare!(SPI3);
152 declare!(SWPMI1);
153 declare!(TAMP_STAMP);
154 declare!(TIM1_BRK_TIM15);
155 declare!(TIM1_CC);
156 declare!(TIM1_TRG_COM);
157 declare!(TIM1_UP_TIM16);
158 declare!(TIM2);
159 declare!(TIM6_DAC);
160 declare!(TIM7);
161 declare!(TSC);
162 declare!(USART1);
163 declare!(USART2);
164 declare!(USART3);
165 declare!(USB);
166 declare!(WWDG);
167}
168mod interrupt_vector {
169 extern "C" {
170 fn ADC1();
171 fn CAN1_RX0();
172 fn CAN1_RX1();
173 fn CAN1_SCE();
174 fn CAN1_TX();
175 fn COMP();
176 fn CRS();
177 fn DMA1_Channel1();
178 fn DMA1_Channel2();
179 fn DMA1_Channel3();
180 fn DMA1_Channel4();
181 fn DMA1_Channel5();
182 fn DMA1_Channel6();
183 fn DMA1_Channel7();
184 fn DMA2_Channel1();
185 fn DMA2_Channel2();
186 fn DMA2_Channel3();
187 fn DMA2_Channel4();
188 fn DMA2_Channel5();
189 fn DMA2_Channel6();
190 fn DMA2_Channel7();
191 fn EXTI0();
192 fn EXTI1();
193 fn EXTI15_10();
194 fn EXTI2();
195 fn EXTI3();
196 fn EXTI4();
197 fn EXTI9_5();
198 fn FLASH();
199 fn FPU();
200 fn I2C1_ER();
201 fn I2C1_EV();
202 fn I2C2_ER();
203 fn I2C2_EV();
204 fn I2C3_ER();
205 fn I2C3_EV();
206 fn LCD();
207 fn LPTIM1();
208 fn LPTIM2();
209 fn LPUART1();
210 fn PVD_PVM();
211 fn QUADSPI();
212 fn RCC();
213 fn RNG();
214 fn RTC_Alarm();
215 fn RTC_WKUP();
216 fn SAI1();
217 fn SDMMC1();
218 fn SPI1();
219 fn SPI2();
220 fn SPI3();
221 fn SWPMI1();
222 fn TAMP_STAMP();
223 fn TIM1_BRK_TIM15();
224 fn TIM1_CC();
225 fn TIM1_TRG_COM();
226 fn TIM1_UP_TIM16();
227 fn TIM2();
228 fn TIM6_DAC();
229 fn TIM7();
230 fn TSC();
231 fn USART1();
232 fn USART2();
233 fn USART3();
234 fn USB();
235 fn WWDG();
236 }
237 pub union Vector {
238 _handler: unsafe extern "C" fn(),
239 _reserved: u32,
240 }
241 #[link_section = ".vector_table.interrupts"]
242 #[no_mangle]
243 pub static __INTERRUPTS: [Vector; 83] = [
244 Vector { _handler: WWDG },
245 Vector { _handler: PVD_PVM },
246 Vector {
247 _handler: TAMP_STAMP,
248 },
249 Vector { _handler: RTC_WKUP },
250 Vector { _handler: FLASH },
251 Vector { _handler: RCC },
252 Vector { _handler: EXTI0 },
253 Vector { _handler: EXTI1 },
254 Vector { _handler: EXTI2 },
255 Vector { _handler: EXTI3 },
256 Vector { _handler: EXTI4 },
257 Vector {
258 _handler: DMA1_Channel1,
259 },
260 Vector {
261 _handler: DMA1_Channel2,
262 },
263 Vector {
264 _handler: DMA1_Channel3,
265 },
266 Vector {
267 _handler: DMA1_Channel4,
268 },
269 Vector {
270 _handler: DMA1_Channel5,
271 },
272 Vector {
273 _handler: DMA1_Channel6,
274 },
275 Vector {
276 _handler: DMA1_Channel7,
277 },
278 Vector { _handler: ADC1 },
279 Vector { _handler: CAN1_TX },
280 Vector { _handler: CAN1_RX0 },
281 Vector { _handler: CAN1_RX1 },
282 Vector { _handler: CAN1_SCE },
283 Vector { _handler: EXTI9_5 },
284 Vector {
285 _handler: TIM1_BRK_TIM15,
286 },
287 Vector {
288 _handler: TIM1_UP_TIM16,
289 },
290 Vector {
291 _handler: TIM1_TRG_COM,
292 },
293 Vector { _handler: TIM1_CC },
294 Vector { _handler: TIM2 },
295 Vector { _reserved: 0 },
296 Vector { _reserved: 0 },
297 Vector { _handler: I2C1_EV },
298 Vector { _handler: I2C1_ER },
299 Vector { _handler: I2C2_EV },
300 Vector { _handler: I2C2_ER },
301 Vector { _handler: SPI1 },
302 Vector { _handler: SPI2 },
303 Vector { _handler: USART1 },
304 Vector { _handler: USART2 },
305 Vector { _handler: USART3 },
306 Vector {
307 _handler: EXTI15_10,
308 },
309 Vector {
310 _handler: RTC_Alarm,
311 },
312 Vector { _reserved: 0 },
313 Vector { _reserved: 0 },
314 Vector { _reserved: 0 },
315 Vector { _reserved: 0 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _reserved: 0 },
319 Vector { _handler: SDMMC1 },
320 Vector { _reserved: 0 },
321 Vector { _handler: SPI3 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _handler: TIM6_DAC },
325 Vector { _handler: TIM7 },
326 Vector {
327 _handler: DMA2_Channel1,
328 },
329 Vector {
330 _handler: DMA2_Channel2,
331 },
332 Vector {
333 _handler: DMA2_Channel3,
334 },
335 Vector {
336 _handler: DMA2_Channel4,
337 },
338 Vector {
339 _handler: DMA2_Channel5,
340 },
341 Vector { _reserved: 0 },
342 Vector { _reserved: 0 },
343 Vector { _reserved: 0 },
344 Vector { _handler: COMP },
345 Vector { _handler: LPTIM1 },
346 Vector { _handler: LPTIM2 },
347 Vector { _handler: USB },
348 Vector {
349 _handler: DMA2_Channel6,
350 },
351 Vector {
352 _handler: DMA2_Channel7,
353 },
354 Vector { _handler: LPUART1 },
355 Vector { _handler: QUADSPI },
356 Vector { _handler: I2C3_EV },
357 Vector { _handler: I2C3_ER },
358 Vector { _handler: SAI1 },
359 Vector { _reserved: 0 },
360 Vector { _handler: SWPMI1 },
361 Vector { _handler: TSC },
362 Vector { _handler: LCD },
363 Vector { _reserved: 0 },
364 Vector { _handler: RNG },
365 Vector { _handler: FPU },
366 Vector { _handler: CRS },
367 ];
368}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 369impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 370impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 371impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l433rc.rs b/embassy-stm32/src/chip/stm32l433rc.rs
index a61a3c53e..38d4b8310 100644
--- a/embassy-stm32/src/chip/stm32l433rc.rs
+++ b/embassy-stm32/src/chip/stm32l433rc.rs
@@ -1,18 +1,371 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, 11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7,
12 USART1, USART2, USART3, USB, WWDG 12 TSC, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LCD = 78,
64 LPTIM1 = 65,
65 LPTIM2 = 66,
66 LPUART1 = 70,
67 PVD_PVM = 1,
68 QUADSPI = 71,
69 RCC = 5,
70 RNG = 80,
71 RTC_Alarm = 41,
72 RTC_WKUP = 3,
73 SAI1 = 74,
74 SDMMC1 = 49,
75 SPI1 = 35,
76 SPI2 = 36,
77 SPI3 = 51,
78 SWPMI1 = 76,
79 TAMP_STAMP = 2,
80 TIM1_BRK_TIM15 = 24,
81 TIM1_CC = 27,
82 TIM1_TRG_COM = 26,
83 TIM1_UP_TIM16 = 25,
84 TIM2 = 28,
85 TIM6_DAC = 54,
86 TIM7 = 55,
87 TSC = 77,
88 USART1 = 37,
89 USART2 = 38,
90 USART3 = 39,
91 USB = 67,
92 WWDG = 0,
93 }
94 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
95 #[inline(always)]
96 fn number(self) -> u16 {
97 self as u16
98 }
99 }
100
101 declare!(ADC1);
102 declare!(CAN1_RX0);
103 declare!(CAN1_RX1);
104 declare!(CAN1_SCE);
105 declare!(CAN1_TX);
106 declare!(COMP);
107 declare!(CRS);
108 declare!(DMA1_Channel1);
109 declare!(DMA1_Channel2);
110 declare!(DMA1_Channel3);
111 declare!(DMA1_Channel4);
112 declare!(DMA1_Channel5);
113 declare!(DMA1_Channel6);
114 declare!(DMA1_Channel7);
115 declare!(DMA2_Channel1);
116 declare!(DMA2_Channel2);
117 declare!(DMA2_Channel3);
118 declare!(DMA2_Channel4);
119 declare!(DMA2_Channel5);
120 declare!(DMA2_Channel6);
121 declare!(DMA2_Channel7);
122 declare!(EXTI0);
123 declare!(EXTI1);
124 declare!(EXTI15_10);
125 declare!(EXTI2);
126 declare!(EXTI3);
127 declare!(EXTI4);
128 declare!(EXTI9_5);
129 declare!(FLASH);
130 declare!(FPU);
131 declare!(I2C1_ER);
132 declare!(I2C1_EV);
133 declare!(I2C2_ER);
134 declare!(I2C2_EV);
135 declare!(I2C3_ER);
136 declare!(I2C3_EV);
137 declare!(LCD);
138 declare!(LPTIM1);
139 declare!(LPTIM2);
140 declare!(LPUART1);
141 declare!(PVD_PVM);
142 declare!(QUADSPI);
143 declare!(RCC);
144 declare!(RNG);
145 declare!(RTC_Alarm);
146 declare!(RTC_WKUP);
147 declare!(SAI1);
148 declare!(SDMMC1);
149 declare!(SPI1);
150 declare!(SPI2);
151 declare!(SPI3);
152 declare!(SWPMI1);
153 declare!(TAMP_STAMP);
154 declare!(TIM1_BRK_TIM15);
155 declare!(TIM1_CC);
156 declare!(TIM1_TRG_COM);
157 declare!(TIM1_UP_TIM16);
158 declare!(TIM2);
159 declare!(TIM6_DAC);
160 declare!(TIM7);
161 declare!(TSC);
162 declare!(USART1);
163 declare!(USART2);
164 declare!(USART3);
165 declare!(USB);
166 declare!(WWDG);
167}
168mod interrupt_vector {
169 extern "C" {
170 fn ADC1();
171 fn CAN1_RX0();
172 fn CAN1_RX1();
173 fn CAN1_SCE();
174 fn CAN1_TX();
175 fn COMP();
176 fn CRS();
177 fn DMA1_Channel1();
178 fn DMA1_Channel2();
179 fn DMA1_Channel3();
180 fn DMA1_Channel4();
181 fn DMA1_Channel5();
182 fn DMA1_Channel6();
183 fn DMA1_Channel7();
184 fn DMA2_Channel1();
185 fn DMA2_Channel2();
186 fn DMA2_Channel3();
187 fn DMA2_Channel4();
188 fn DMA2_Channel5();
189 fn DMA2_Channel6();
190 fn DMA2_Channel7();
191 fn EXTI0();
192 fn EXTI1();
193 fn EXTI15_10();
194 fn EXTI2();
195 fn EXTI3();
196 fn EXTI4();
197 fn EXTI9_5();
198 fn FLASH();
199 fn FPU();
200 fn I2C1_ER();
201 fn I2C1_EV();
202 fn I2C2_ER();
203 fn I2C2_EV();
204 fn I2C3_ER();
205 fn I2C3_EV();
206 fn LCD();
207 fn LPTIM1();
208 fn LPTIM2();
209 fn LPUART1();
210 fn PVD_PVM();
211 fn QUADSPI();
212 fn RCC();
213 fn RNG();
214 fn RTC_Alarm();
215 fn RTC_WKUP();
216 fn SAI1();
217 fn SDMMC1();
218 fn SPI1();
219 fn SPI2();
220 fn SPI3();
221 fn SWPMI1();
222 fn TAMP_STAMP();
223 fn TIM1_BRK_TIM15();
224 fn TIM1_CC();
225 fn TIM1_TRG_COM();
226 fn TIM1_UP_TIM16();
227 fn TIM2();
228 fn TIM6_DAC();
229 fn TIM7();
230 fn TSC();
231 fn USART1();
232 fn USART2();
233 fn USART3();
234 fn USB();
235 fn WWDG();
236 }
237 pub union Vector {
238 _handler: unsafe extern "C" fn(),
239 _reserved: u32,
240 }
241 #[link_section = ".vector_table.interrupts"]
242 #[no_mangle]
243 pub static __INTERRUPTS: [Vector; 83] = [
244 Vector { _handler: WWDG },
245 Vector { _handler: PVD_PVM },
246 Vector {
247 _handler: TAMP_STAMP,
248 },
249 Vector { _handler: RTC_WKUP },
250 Vector { _handler: FLASH },
251 Vector { _handler: RCC },
252 Vector { _handler: EXTI0 },
253 Vector { _handler: EXTI1 },
254 Vector { _handler: EXTI2 },
255 Vector { _handler: EXTI3 },
256 Vector { _handler: EXTI4 },
257 Vector {
258 _handler: DMA1_Channel1,
259 },
260 Vector {
261 _handler: DMA1_Channel2,
262 },
263 Vector {
264 _handler: DMA1_Channel3,
265 },
266 Vector {
267 _handler: DMA1_Channel4,
268 },
269 Vector {
270 _handler: DMA1_Channel5,
271 },
272 Vector {
273 _handler: DMA1_Channel6,
274 },
275 Vector {
276 _handler: DMA1_Channel7,
277 },
278 Vector { _handler: ADC1 },
279 Vector { _handler: CAN1_TX },
280 Vector { _handler: CAN1_RX0 },
281 Vector { _handler: CAN1_RX1 },
282 Vector { _handler: CAN1_SCE },
283 Vector { _handler: EXTI9_5 },
284 Vector {
285 _handler: TIM1_BRK_TIM15,
286 },
287 Vector {
288 _handler: TIM1_UP_TIM16,
289 },
290 Vector {
291 _handler: TIM1_TRG_COM,
292 },
293 Vector { _handler: TIM1_CC },
294 Vector { _handler: TIM2 },
295 Vector { _reserved: 0 },
296 Vector { _reserved: 0 },
297 Vector { _handler: I2C1_EV },
298 Vector { _handler: I2C1_ER },
299 Vector { _handler: I2C2_EV },
300 Vector { _handler: I2C2_ER },
301 Vector { _handler: SPI1 },
302 Vector { _handler: SPI2 },
303 Vector { _handler: USART1 },
304 Vector { _handler: USART2 },
305 Vector { _handler: USART3 },
306 Vector {
307 _handler: EXTI15_10,
308 },
309 Vector {
310 _handler: RTC_Alarm,
311 },
312 Vector { _reserved: 0 },
313 Vector { _reserved: 0 },
314 Vector { _reserved: 0 },
315 Vector { _reserved: 0 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _reserved: 0 },
319 Vector { _handler: SDMMC1 },
320 Vector { _reserved: 0 },
321 Vector { _handler: SPI3 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _handler: TIM6_DAC },
325 Vector { _handler: TIM7 },
326 Vector {
327 _handler: DMA2_Channel1,
328 },
329 Vector {
330 _handler: DMA2_Channel2,
331 },
332 Vector {
333 _handler: DMA2_Channel3,
334 },
335 Vector {
336 _handler: DMA2_Channel4,
337 },
338 Vector {
339 _handler: DMA2_Channel5,
340 },
341 Vector { _reserved: 0 },
342 Vector { _reserved: 0 },
343 Vector { _reserved: 0 },
344 Vector { _handler: COMP },
345 Vector { _handler: LPTIM1 },
346 Vector { _handler: LPTIM2 },
347 Vector { _handler: USB },
348 Vector {
349 _handler: DMA2_Channel6,
350 },
351 Vector {
352 _handler: DMA2_Channel7,
353 },
354 Vector { _handler: LPUART1 },
355 Vector { _handler: QUADSPI },
356 Vector { _handler: I2C3_EV },
357 Vector { _handler: I2C3_ER },
358 Vector { _handler: SAI1 },
359 Vector { _reserved: 0 },
360 Vector { _handler: SWPMI1 },
361 Vector { _handler: TSC },
362 Vector { _handler: LCD },
363 Vector { _reserved: 0 },
364 Vector { _handler: RNG },
365 Vector { _handler: FPU },
366 Vector { _handler: CRS },
367 ];
368}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 369impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 370impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 371impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l433vc.rs b/embassy-stm32/src/chip/stm32l433vc.rs
index a61a3c53e..38d4b8310 100644
--- a/embassy-stm32/src/chip/stm32l433vc.rs
+++ b/embassy-stm32/src/chip/stm32l433vc.rs
@@ -1,18 +1,371 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, 11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7,
12 USART1, USART2, USART3, USB, WWDG 12 TSC, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DMA1_Channel1 = 11,
35 DMA1_Channel2 = 12,
36 DMA1_Channel3 = 13,
37 DMA1_Channel4 = 14,
38 DMA1_Channel5 = 15,
39 DMA1_Channel6 = 16,
40 DMA1_Channel7 = 17,
41 DMA2_Channel1 = 56,
42 DMA2_Channel2 = 57,
43 DMA2_Channel3 = 58,
44 DMA2_Channel4 = 59,
45 DMA2_Channel5 = 60,
46 DMA2_Channel6 = 68,
47 DMA2_Channel7 = 69,
48 EXTI0 = 6,
49 EXTI1 = 7,
50 EXTI15_10 = 40,
51 EXTI2 = 8,
52 EXTI3 = 9,
53 EXTI4 = 10,
54 EXTI9_5 = 23,
55 FLASH = 4,
56 FPU = 81,
57 I2C1_ER = 32,
58 I2C1_EV = 31,
59 I2C2_ER = 34,
60 I2C2_EV = 33,
61 I2C3_ER = 73,
62 I2C3_EV = 72,
63 LCD = 78,
64 LPTIM1 = 65,
65 LPTIM2 = 66,
66 LPUART1 = 70,
67 PVD_PVM = 1,
68 QUADSPI = 71,
69 RCC = 5,
70 RNG = 80,
71 RTC_Alarm = 41,
72 RTC_WKUP = 3,
73 SAI1 = 74,
74 SDMMC1 = 49,
75 SPI1 = 35,
76 SPI2 = 36,
77 SPI3 = 51,
78 SWPMI1 = 76,
79 TAMP_STAMP = 2,
80 TIM1_BRK_TIM15 = 24,
81 TIM1_CC = 27,
82 TIM1_TRG_COM = 26,
83 TIM1_UP_TIM16 = 25,
84 TIM2 = 28,
85 TIM6_DAC = 54,
86 TIM7 = 55,
87 TSC = 77,
88 USART1 = 37,
89 USART2 = 38,
90 USART3 = 39,
91 USB = 67,
92 WWDG = 0,
93 }
94 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
95 #[inline(always)]
96 fn number(self) -> u16 {
97 self as u16
98 }
99 }
100
101 declare!(ADC1);
102 declare!(CAN1_RX0);
103 declare!(CAN1_RX1);
104 declare!(CAN1_SCE);
105 declare!(CAN1_TX);
106 declare!(COMP);
107 declare!(CRS);
108 declare!(DMA1_Channel1);
109 declare!(DMA1_Channel2);
110 declare!(DMA1_Channel3);
111 declare!(DMA1_Channel4);
112 declare!(DMA1_Channel5);
113 declare!(DMA1_Channel6);
114 declare!(DMA1_Channel7);
115 declare!(DMA2_Channel1);
116 declare!(DMA2_Channel2);
117 declare!(DMA2_Channel3);
118 declare!(DMA2_Channel4);
119 declare!(DMA2_Channel5);
120 declare!(DMA2_Channel6);
121 declare!(DMA2_Channel7);
122 declare!(EXTI0);
123 declare!(EXTI1);
124 declare!(EXTI15_10);
125 declare!(EXTI2);
126 declare!(EXTI3);
127 declare!(EXTI4);
128 declare!(EXTI9_5);
129 declare!(FLASH);
130 declare!(FPU);
131 declare!(I2C1_ER);
132 declare!(I2C1_EV);
133 declare!(I2C2_ER);
134 declare!(I2C2_EV);
135 declare!(I2C3_ER);
136 declare!(I2C3_EV);
137 declare!(LCD);
138 declare!(LPTIM1);
139 declare!(LPTIM2);
140 declare!(LPUART1);
141 declare!(PVD_PVM);
142 declare!(QUADSPI);
143 declare!(RCC);
144 declare!(RNG);
145 declare!(RTC_Alarm);
146 declare!(RTC_WKUP);
147 declare!(SAI1);
148 declare!(SDMMC1);
149 declare!(SPI1);
150 declare!(SPI2);
151 declare!(SPI3);
152 declare!(SWPMI1);
153 declare!(TAMP_STAMP);
154 declare!(TIM1_BRK_TIM15);
155 declare!(TIM1_CC);
156 declare!(TIM1_TRG_COM);
157 declare!(TIM1_UP_TIM16);
158 declare!(TIM2);
159 declare!(TIM6_DAC);
160 declare!(TIM7);
161 declare!(TSC);
162 declare!(USART1);
163 declare!(USART2);
164 declare!(USART3);
165 declare!(USB);
166 declare!(WWDG);
167}
168mod interrupt_vector {
169 extern "C" {
170 fn ADC1();
171 fn CAN1_RX0();
172 fn CAN1_RX1();
173 fn CAN1_SCE();
174 fn CAN1_TX();
175 fn COMP();
176 fn CRS();
177 fn DMA1_Channel1();
178 fn DMA1_Channel2();
179 fn DMA1_Channel3();
180 fn DMA1_Channel4();
181 fn DMA1_Channel5();
182 fn DMA1_Channel6();
183 fn DMA1_Channel7();
184 fn DMA2_Channel1();
185 fn DMA2_Channel2();
186 fn DMA2_Channel3();
187 fn DMA2_Channel4();
188 fn DMA2_Channel5();
189 fn DMA2_Channel6();
190 fn DMA2_Channel7();
191 fn EXTI0();
192 fn EXTI1();
193 fn EXTI15_10();
194 fn EXTI2();
195 fn EXTI3();
196 fn EXTI4();
197 fn EXTI9_5();
198 fn FLASH();
199 fn FPU();
200 fn I2C1_ER();
201 fn I2C1_EV();
202 fn I2C2_ER();
203 fn I2C2_EV();
204 fn I2C3_ER();
205 fn I2C3_EV();
206 fn LCD();
207 fn LPTIM1();
208 fn LPTIM2();
209 fn LPUART1();
210 fn PVD_PVM();
211 fn QUADSPI();
212 fn RCC();
213 fn RNG();
214 fn RTC_Alarm();
215 fn RTC_WKUP();
216 fn SAI1();
217 fn SDMMC1();
218 fn SPI1();
219 fn SPI2();
220 fn SPI3();
221 fn SWPMI1();
222 fn TAMP_STAMP();
223 fn TIM1_BRK_TIM15();
224 fn TIM1_CC();
225 fn TIM1_TRG_COM();
226 fn TIM1_UP_TIM16();
227 fn TIM2();
228 fn TIM6_DAC();
229 fn TIM7();
230 fn TSC();
231 fn USART1();
232 fn USART2();
233 fn USART3();
234 fn USB();
235 fn WWDG();
236 }
237 pub union Vector {
238 _handler: unsafe extern "C" fn(),
239 _reserved: u32,
240 }
241 #[link_section = ".vector_table.interrupts"]
242 #[no_mangle]
243 pub static __INTERRUPTS: [Vector; 83] = [
244 Vector { _handler: WWDG },
245 Vector { _handler: PVD_PVM },
246 Vector {
247 _handler: TAMP_STAMP,
248 },
249 Vector { _handler: RTC_WKUP },
250 Vector { _handler: FLASH },
251 Vector { _handler: RCC },
252 Vector { _handler: EXTI0 },
253 Vector { _handler: EXTI1 },
254 Vector { _handler: EXTI2 },
255 Vector { _handler: EXTI3 },
256 Vector { _handler: EXTI4 },
257 Vector {
258 _handler: DMA1_Channel1,
259 },
260 Vector {
261 _handler: DMA1_Channel2,
262 },
263 Vector {
264 _handler: DMA1_Channel3,
265 },
266 Vector {
267 _handler: DMA1_Channel4,
268 },
269 Vector {
270 _handler: DMA1_Channel5,
271 },
272 Vector {
273 _handler: DMA1_Channel6,
274 },
275 Vector {
276 _handler: DMA1_Channel7,
277 },
278 Vector { _handler: ADC1 },
279 Vector { _handler: CAN1_TX },
280 Vector { _handler: CAN1_RX0 },
281 Vector { _handler: CAN1_RX1 },
282 Vector { _handler: CAN1_SCE },
283 Vector { _handler: EXTI9_5 },
284 Vector {
285 _handler: TIM1_BRK_TIM15,
286 },
287 Vector {
288 _handler: TIM1_UP_TIM16,
289 },
290 Vector {
291 _handler: TIM1_TRG_COM,
292 },
293 Vector { _handler: TIM1_CC },
294 Vector { _handler: TIM2 },
295 Vector { _reserved: 0 },
296 Vector { _reserved: 0 },
297 Vector { _handler: I2C1_EV },
298 Vector { _handler: I2C1_ER },
299 Vector { _handler: I2C2_EV },
300 Vector { _handler: I2C2_ER },
301 Vector { _handler: SPI1 },
302 Vector { _handler: SPI2 },
303 Vector { _handler: USART1 },
304 Vector { _handler: USART2 },
305 Vector { _handler: USART3 },
306 Vector {
307 _handler: EXTI15_10,
308 },
309 Vector {
310 _handler: RTC_Alarm,
311 },
312 Vector { _reserved: 0 },
313 Vector { _reserved: 0 },
314 Vector { _reserved: 0 },
315 Vector { _reserved: 0 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _reserved: 0 },
319 Vector { _handler: SDMMC1 },
320 Vector { _reserved: 0 },
321 Vector { _handler: SPI3 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _handler: TIM6_DAC },
325 Vector { _handler: TIM7 },
326 Vector {
327 _handler: DMA2_Channel1,
328 },
329 Vector {
330 _handler: DMA2_Channel2,
331 },
332 Vector {
333 _handler: DMA2_Channel3,
334 },
335 Vector {
336 _handler: DMA2_Channel4,
337 },
338 Vector {
339 _handler: DMA2_Channel5,
340 },
341 Vector { _reserved: 0 },
342 Vector { _reserved: 0 },
343 Vector { _reserved: 0 },
344 Vector { _handler: COMP },
345 Vector { _handler: LPTIM1 },
346 Vector { _handler: LPTIM2 },
347 Vector { _handler: USB },
348 Vector {
349 _handler: DMA2_Channel6,
350 },
351 Vector {
352 _handler: DMA2_Channel7,
353 },
354 Vector { _handler: LPUART1 },
355 Vector { _handler: QUADSPI },
356 Vector { _handler: I2C3_EV },
357 Vector { _handler: I2C3_ER },
358 Vector { _handler: SAI1 },
359 Vector { _reserved: 0 },
360 Vector { _handler: SWPMI1 },
361 Vector { _handler: TSC },
362 Vector { _handler: LCD },
363 Vector { _reserved: 0 },
364 Vector { _handler: RNG },
365 Vector { _handler: FPU },
366 Vector { _handler: CRS },
367 ];
368}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 369impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 370impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 371impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l442kc.rs b/embassy-stm32/src/chip/stm32l442kc.rs
index 331d152f3..4837adef1 100644
--- a/embassy-stm32/src/chip/stm32l442kc.rs
+++ b/embassy-stm32/src/chip/stm32l442kc.rs
@@ -1,16 +1,354 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9,
8 PH11, PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, 8 PH10, PH11, PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI,
9 RNG, RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, 9 RCC, RNG, RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC,
10 USART2, USB, WWDG 10 USART1, USART2, USB, WWDG
11); 11);
12pub const SYSCFG_BASE: usize = 0x40010000;
13pub const EXTI_BASE: usize = 0x40010400;
12pub const GPIO_BASE: usize = 0x48000000; 14pub const GPIO_BASE: usize = 0x48000000;
13pub const GPIO_STRIDE: usize = 0x400; 15pub const GPIO_STRIDE: usize = 0x400;
16
17pub mod interrupt {
18 pub use cortex_m::interrupt::{CriticalSection, Mutex};
19 pub use embassy::interrupt::{declare, take, Interrupt};
20 pub use embassy_extras::interrupt::Priority4 as Priority;
21
22 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
23 #[allow(non_camel_case_types)]
24 enum InterruptEnum {
25 ADC1 = 18,
26 AES = 79,
27 CAN1_RX0 = 20,
28 CAN1_RX1 = 21,
29 CAN1_SCE = 22,
30 CAN1_TX = 19,
31 COMP = 64,
32 CRS = 82,
33 DMA1_Channel1 = 11,
34 DMA1_Channel2 = 12,
35 DMA1_Channel3 = 13,
36 DMA1_Channel4 = 14,
37 DMA1_Channel5 = 15,
38 DMA1_Channel6 = 16,
39 DMA1_Channel7 = 17,
40 DMA2_Channel1 = 56,
41 DMA2_Channel2 = 57,
42 DMA2_Channel3 = 58,
43 DMA2_Channel4 = 59,
44 DMA2_Channel5 = 60,
45 DMA2_Channel6 = 68,
46 DMA2_Channel7 = 69,
47 EXTI0 = 6,
48 EXTI1 = 7,
49 EXTI15_10 = 40,
50 EXTI2 = 8,
51 EXTI3 = 9,
52 EXTI4 = 10,
53 EXTI9_5 = 23,
54 FLASH = 4,
55 FPU = 81,
56 I2C1_ER = 32,
57 I2C1_EV = 31,
58 I2C3_ER = 73,
59 I2C3_EV = 72,
60 LPTIM1 = 65,
61 LPTIM2 = 66,
62 LPUART1 = 70,
63 PVD_PVM = 1,
64 QUADSPI = 71,
65 RCC = 5,
66 RNG = 80,
67 RTC_Alarm = 41,
68 RTC_WKUP = 3,
69 SAI1 = 74,
70 SPI1 = 35,
71 SPI3 = 51,
72 SWPMI1 = 76,
73 TAMP_STAMP = 2,
74 TIM1_BRK_TIM15 = 24,
75 TIM1_CC = 27,
76 TIM1_TRG_COM = 26,
77 TIM1_UP_TIM16 = 25,
78 TIM2 = 28,
79 TIM6_DAC = 54,
80 TIM7 = 55,
81 TSC = 77,
82 USART1 = 37,
83 USART2 = 38,
84 USB = 67,
85 WWDG = 0,
86 }
87 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
88 #[inline(always)]
89 fn number(self) -> u16 {
90 self as u16
91 }
92 }
93
94 declare!(ADC1);
95 declare!(AES);
96 declare!(CAN1_RX0);
97 declare!(CAN1_RX1);
98 declare!(CAN1_SCE);
99 declare!(CAN1_TX);
100 declare!(COMP);
101 declare!(CRS);
102 declare!(DMA1_Channel1);
103 declare!(DMA1_Channel2);
104 declare!(DMA1_Channel3);
105 declare!(DMA1_Channel4);
106 declare!(DMA1_Channel5);
107 declare!(DMA1_Channel6);
108 declare!(DMA1_Channel7);
109 declare!(DMA2_Channel1);
110 declare!(DMA2_Channel2);
111 declare!(DMA2_Channel3);
112 declare!(DMA2_Channel4);
113 declare!(DMA2_Channel5);
114 declare!(DMA2_Channel6);
115 declare!(DMA2_Channel7);
116 declare!(EXTI0);
117 declare!(EXTI1);
118 declare!(EXTI15_10);
119 declare!(EXTI2);
120 declare!(EXTI3);
121 declare!(EXTI4);
122 declare!(EXTI9_5);
123 declare!(FLASH);
124 declare!(FPU);
125 declare!(I2C1_ER);
126 declare!(I2C1_EV);
127 declare!(I2C3_ER);
128 declare!(I2C3_EV);
129 declare!(LPTIM1);
130 declare!(LPTIM2);
131 declare!(LPUART1);
132 declare!(PVD_PVM);
133 declare!(QUADSPI);
134 declare!(RCC);
135 declare!(RNG);
136 declare!(RTC_Alarm);
137 declare!(RTC_WKUP);
138 declare!(SAI1);
139 declare!(SPI1);
140 declare!(SPI3);
141 declare!(SWPMI1);
142 declare!(TAMP_STAMP);
143 declare!(TIM1_BRK_TIM15);
144 declare!(TIM1_CC);
145 declare!(TIM1_TRG_COM);
146 declare!(TIM1_UP_TIM16);
147 declare!(TIM2);
148 declare!(TIM6_DAC);
149 declare!(TIM7);
150 declare!(TSC);
151 declare!(USART1);
152 declare!(USART2);
153 declare!(USB);
154 declare!(WWDG);
155}
156mod interrupt_vector {
157 extern "C" {
158 fn ADC1();
159 fn AES();
160 fn CAN1_RX0();
161 fn CAN1_RX1();
162 fn CAN1_SCE();
163 fn CAN1_TX();
164 fn COMP();
165 fn CRS();
166 fn DMA1_Channel1();
167 fn DMA1_Channel2();
168 fn DMA1_Channel3();
169 fn DMA1_Channel4();
170 fn DMA1_Channel5();
171 fn DMA1_Channel6();
172 fn DMA1_Channel7();
173 fn DMA2_Channel1();
174 fn DMA2_Channel2();
175 fn DMA2_Channel3();
176 fn DMA2_Channel4();
177 fn DMA2_Channel5();
178 fn DMA2_Channel6();
179 fn DMA2_Channel7();
180 fn EXTI0();
181 fn EXTI1();
182 fn EXTI15_10();
183 fn EXTI2();
184 fn EXTI3();
185 fn EXTI4();
186 fn EXTI9_5();
187 fn FLASH();
188 fn FPU();
189 fn I2C1_ER();
190 fn I2C1_EV();
191 fn I2C3_ER();
192 fn I2C3_EV();
193 fn LPTIM1();
194 fn LPTIM2();
195 fn LPUART1();
196 fn PVD_PVM();
197 fn QUADSPI();
198 fn RCC();
199 fn RNG();
200 fn RTC_Alarm();
201 fn RTC_WKUP();
202 fn SAI1();
203 fn SPI1();
204 fn SPI3();
205 fn SWPMI1();
206 fn TAMP_STAMP();
207 fn TIM1_BRK_TIM15();
208 fn TIM1_CC();
209 fn TIM1_TRG_COM();
210 fn TIM1_UP_TIM16();
211 fn TIM2();
212 fn TIM6_DAC();
213 fn TIM7();
214 fn TSC();
215 fn USART1();
216 fn USART2();
217 fn USB();
218 fn WWDG();
219 }
220 pub union Vector {
221 _handler: unsafe extern "C" fn(),
222 _reserved: u32,
223 }
224 #[link_section = ".vector_table.interrupts"]
225 #[no_mangle]
226 pub static __INTERRUPTS: [Vector; 83] = [
227 Vector { _handler: WWDG },
228 Vector { _handler: PVD_PVM },
229 Vector {
230 _handler: TAMP_STAMP,
231 },
232 Vector { _handler: RTC_WKUP },
233 Vector { _handler: FLASH },
234 Vector { _handler: RCC },
235 Vector { _handler: EXTI0 },
236 Vector { _handler: EXTI1 },
237 Vector { _handler: EXTI2 },
238 Vector { _handler: EXTI3 },
239 Vector { _handler: EXTI4 },
240 Vector {
241 _handler: DMA1_Channel1,
242 },
243 Vector {
244 _handler: DMA1_Channel2,
245 },
246 Vector {
247 _handler: DMA1_Channel3,
248 },
249 Vector {
250 _handler: DMA1_Channel4,
251 },
252 Vector {
253 _handler: DMA1_Channel5,
254 },
255 Vector {
256 _handler: DMA1_Channel6,
257 },
258 Vector {
259 _handler: DMA1_Channel7,
260 },
261 Vector { _handler: ADC1 },
262 Vector { _handler: CAN1_TX },
263 Vector { _handler: CAN1_RX0 },
264 Vector { _handler: CAN1_RX1 },
265 Vector { _handler: CAN1_SCE },
266 Vector { _handler: EXTI9_5 },
267 Vector {
268 _handler: TIM1_BRK_TIM15,
269 },
270 Vector {
271 _handler: TIM1_UP_TIM16,
272 },
273 Vector {
274 _handler: TIM1_TRG_COM,
275 },
276 Vector { _handler: TIM1_CC },
277 Vector { _handler: TIM2 },
278 Vector { _reserved: 0 },
279 Vector { _reserved: 0 },
280 Vector { _handler: I2C1_EV },
281 Vector { _handler: I2C1_ER },
282 Vector { _reserved: 0 },
283 Vector { _reserved: 0 },
284 Vector { _handler: SPI1 },
285 Vector { _reserved: 0 },
286 Vector { _handler: USART1 },
287 Vector { _handler: USART2 },
288 Vector { _reserved: 0 },
289 Vector {
290 _handler: EXTI15_10,
291 },
292 Vector {
293 _handler: RTC_Alarm,
294 },
295 Vector { _reserved: 0 },
296 Vector { _reserved: 0 },
297 Vector { _reserved: 0 },
298 Vector { _reserved: 0 },
299 Vector { _reserved: 0 },
300 Vector { _reserved: 0 },
301 Vector { _reserved: 0 },
302 Vector { _reserved: 0 },
303 Vector { _reserved: 0 },
304 Vector { _handler: SPI3 },
305 Vector { _reserved: 0 },
306 Vector { _reserved: 0 },
307 Vector { _handler: TIM6_DAC },
308 Vector { _handler: TIM7 },
309 Vector {
310 _handler: DMA2_Channel1,
311 },
312 Vector {
313 _handler: DMA2_Channel2,
314 },
315 Vector {
316 _handler: DMA2_Channel3,
317 },
318 Vector {
319 _handler: DMA2_Channel4,
320 },
321 Vector {
322 _handler: DMA2_Channel5,
323 },
324 Vector { _reserved: 0 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _handler: COMP },
328 Vector { _handler: LPTIM1 },
329 Vector { _handler: LPTIM2 },
330 Vector { _handler: USB },
331 Vector {
332 _handler: DMA2_Channel6,
333 },
334 Vector {
335 _handler: DMA2_Channel7,
336 },
337 Vector { _handler: LPUART1 },
338 Vector { _handler: QUADSPI },
339 Vector { _handler: I2C3_EV },
340 Vector { _handler: I2C3_ER },
341 Vector { _handler: SAI1 },
342 Vector { _reserved: 0 },
343 Vector { _handler: SWPMI1 },
344 Vector { _handler: TSC },
345 Vector { _reserved: 0 },
346 Vector { _handler: AES },
347 Vector { _handler: RNG },
348 Vector { _handler: FPU },
349 Vector { _handler: CRS },
350 ];
351}
14impl_gpio_pin!(PA0, 0, 0, EXTI0); 352impl_gpio_pin!(PA0, 0, 0, EXTI0);
15impl_gpio_pin!(PA1, 0, 1, EXTI1); 353impl_gpio_pin!(PA1, 0, 1, EXTI1);
16impl_gpio_pin!(PA2, 0, 2, EXTI2); 354impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l443cc.rs b/embassy-stm32/src/chip/stm32l443cc.rs
index 10d538aef..aa21e3322 100644
--- a/embassy-stm32/src/chip/stm32l443cc.rs
+++ b/embassy-stm32/src/chip/stm32l443cc.rs
@@ -1,18 +1,374 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 9 PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, 10 PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI,
11 RNG, RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, 11 RCC, RNG, RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7,
12 USART1, USART2, USART3, USB, WWDG 12 TSC, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 AES = 79,
29 CAN1_RX0 = 20,
30 CAN1_RX1 = 21,
31 CAN1_SCE = 22,
32 CAN1_TX = 19,
33 COMP = 64,
34 CRS = 82,
35 DMA1_Channel1 = 11,
36 DMA1_Channel2 = 12,
37 DMA1_Channel3 = 13,
38 DMA1_Channel4 = 14,
39 DMA1_Channel5 = 15,
40 DMA1_Channel6 = 16,
41 DMA1_Channel7 = 17,
42 DMA2_Channel1 = 56,
43 DMA2_Channel2 = 57,
44 DMA2_Channel3 = 58,
45 DMA2_Channel4 = 59,
46 DMA2_Channel5 = 60,
47 DMA2_Channel6 = 68,
48 DMA2_Channel7 = 69,
49 EXTI0 = 6,
50 EXTI1 = 7,
51 EXTI15_10 = 40,
52 EXTI2 = 8,
53 EXTI3 = 9,
54 EXTI4 = 10,
55 EXTI9_5 = 23,
56 FLASH = 4,
57 FPU = 81,
58 I2C1_ER = 32,
59 I2C1_EV = 31,
60 I2C2_ER = 34,
61 I2C2_EV = 33,
62 I2C3_ER = 73,
63 I2C3_EV = 72,
64 LCD = 78,
65 LPTIM1 = 65,
66 LPTIM2 = 66,
67 LPUART1 = 70,
68 PVD_PVM = 1,
69 QUADSPI = 71,
70 RCC = 5,
71 RNG = 80,
72 RTC_Alarm = 41,
73 RTC_WKUP = 3,
74 SAI1 = 74,
75 SDMMC1 = 49,
76 SPI1 = 35,
77 SPI2 = 36,
78 SPI3 = 51,
79 SWPMI1 = 76,
80 TAMP_STAMP = 2,
81 TIM1_BRK_TIM15 = 24,
82 TIM1_CC = 27,
83 TIM1_TRG_COM = 26,
84 TIM1_UP_TIM16 = 25,
85 TIM2 = 28,
86 TIM6_DAC = 54,
87 TIM7 = 55,
88 TSC = 77,
89 USART1 = 37,
90 USART2 = 38,
91 USART3 = 39,
92 USB = 67,
93 WWDG = 0,
94 }
95 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
96 #[inline(always)]
97 fn number(self) -> u16 {
98 self as u16
99 }
100 }
101
102 declare!(ADC1);
103 declare!(AES);
104 declare!(CAN1_RX0);
105 declare!(CAN1_RX1);
106 declare!(CAN1_SCE);
107 declare!(CAN1_TX);
108 declare!(COMP);
109 declare!(CRS);
110 declare!(DMA1_Channel1);
111 declare!(DMA1_Channel2);
112 declare!(DMA1_Channel3);
113 declare!(DMA1_Channel4);
114 declare!(DMA1_Channel5);
115 declare!(DMA1_Channel6);
116 declare!(DMA1_Channel7);
117 declare!(DMA2_Channel1);
118 declare!(DMA2_Channel2);
119 declare!(DMA2_Channel3);
120 declare!(DMA2_Channel4);
121 declare!(DMA2_Channel5);
122 declare!(DMA2_Channel6);
123 declare!(DMA2_Channel7);
124 declare!(EXTI0);
125 declare!(EXTI1);
126 declare!(EXTI15_10);
127 declare!(EXTI2);
128 declare!(EXTI3);
129 declare!(EXTI4);
130 declare!(EXTI9_5);
131 declare!(FLASH);
132 declare!(FPU);
133 declare!(I2C1_ER);
134 declare!(I2C1_EV);
135 declare!(I2C2_ER);
136 declare!(I2C2_EV);
137 declare!(I2C3_ER);
138 declare!(I2C3_EV);
139 declare!(LCD);
140 declare!(LPTIM1);
141 declare!(LPTIM2);
142 declare!(LPUART1);
143 declare!(PVD_PVM);
144 declare!(QUADSPI);
145 declare!(RCC);
146 declare!(RNG);
147 declare!(RTC_Alarm);
148 declare!(RTC_WKUP);
149 declare!(SAI1);
150 declare!(SDMMC1);
151 declare!(SPI1);
152 declare!(SPI2);
153 declare!(SPI3);
154 declare!(SWPMI1);
155 declare!(TAMP_STAMP);
156 declare!(TIM1_BRK_TIM15);
157 declare!(TIM1_CC);
158 declare!(TIM1_TRG_COM);
159 declare!(TIM1_UP_TIM16);
160 declare!(TIM2);
161 declare!(TIM6_DAC);
162 declare!(TIM7);
163 declare!(TSC);
164 declare!(USART1);
165 declare!(USART2);
166 declare!(USART3);
167 declare!(USB);
168 declare!(WWDG);
169}
170mod interrupt_vector {
171 extern "C" {
172 fn ADC1();
173 fn AES();
174 fn CAN1_RX0();
175 fn CAN1_RX1();
176 fn CAN1_SCE();
177 fn CAN1_TX();
178 fn COMP();
179 fn CRS();
180 fn DMA1_Channel1();
181 fn DMA1_Channel2();
182 fn DMA1_Channel3();
183 fn DMA1_Channel4();
184 fn DMA1_Channel5();
185 fn DMA1_Channel6();
186 fn DMA1_Channel7();
187 fn DMA2_Channel1();
188 fn DMA2_Channel2();
189 fn DMA2_Channel3();
190 fn DMA2_Channel4();
191 fn DMA2_Channel5();
192 fn DMA2_Channel6();
193 fn DMA2_Channel7();
194 fn EXTI0();
195 fn EXTI1();
196 fn EXTI15_10();
197 fn EXTI2();
198 fn EXTI3();
199 fn EXTI4();
200 fn EXTI9_5();
201 fn FLASH();
202 fn FPU();
203 fn I2C1_ER();
204 fn I2C1_EV();
205 fn I2C2_ER();
206 fn I2C2_EV();
207 fn I2C3_ER();
208 fn I2C3_EV();
209 fn LCD();
210 fn LPTIM1();
211 fn LPTIM2();
212 fn LPUART1();
213 fn PVD_PVM();
214 fn QUADSPI();
215 fn RCC();
216 fn RNG();
217 fn RTC_Alarm();
218 fn RTC_WKUP();
219 fn SAI1();
220 fn SDMMC1();
221 fn SPI1();
222 fn SPI2();
223 fn SPI3();
224 fn SWPMI1();
225 fn TAMP_STAMP();
226 fn TIM1_BRK_TIM15();
227 fn TIM1_CC();
228 fn TIM1_TRG_COM();
229 fn TIM1_UP_TIM16();
230 fn TIM2();
231 fn TIM6_DAC();
232 fn TIM7();
233 fn TSC();
234 fn USART1();
235 fn USART2();
236 fn USART3();
237 fn USB();
238 fn WWDG();
239 }
240 pub union Vector {
241 _handler: unsafe extern "C" fn(),
242 _reserved: u32,
243 }
244 #[link_section = ".vector_table.interrupts"]
245 #[no_mangle]
246 pub static __INTERRUPTS: [Vector; 83] = [
247 Vector { _handler: WWDG },
248 Vector { _handler: PVD_PVM },
249 Vector {
250 _handler: TAMP_STAMP,
251 },
252 Vector { _handler: RTC_WKUP },
253 Vector { _handler: FLASH },
254 Vector { _handler: RCC },
255 Vector { _handler: EXTI0 },
256 Vector { _handler: EXTI1 },
257 Vector { _handler: EXTI2 },
258 Vector { _handler: EXTI3 },
259 Vector { _handler: EXTI4 },
260 Vector {
261 _handler: DMA1_Channel1,
262 },
263 Vector {
264 _handler: DMA1_Channel2,
265 },
266 Vector {
267 _handler: DMA1_Channel3,
268 },
269 Vector {
270 _handler: DMA1_Channel4,
271 },
272 Vector {
273 _handler: DMA1_Channel5,
274 },
275 Vector {
276 _handler: DMA1_Channel6,
277 },
278 Vector {
279 _handler: DMA1_Channel7,
280 },
281 Vector { _handler: ADC1 },
282 Vector { _handler: CAN1_TX },
283 Vector { _handler: CAN1_RX0 },
284 Vector { _handler: CAN1_RX1 },
285 Vector { _handler: CAN1_SCE },
286 Vector { _handler: EXTI9_5 },
287 Vector {
288 _handler: TIM1_BRK_TIM15,
289 },
290 Vector {
291 _handler: TIM1_UP_TIM16,
292 },
293 Vector {
294 _handler: TIM1_TRG_COM,
295 },
296 Vector { _handler: TIM1_CC },
297 Vector { _handler: TIM2 },
298 Vector { _reserved: 0 },
299 Vector { _reserved: 0 },
300 Vector { _handler: I2C1_EV },
301 Vector { _handler: I2C1_ER },
302 Vector { _handler: I2C2_EV },
303 Vector { _handler: I2C2_ER },
304 Vector { _handler: SPI1 },
305 Vector { _handler: SPI2 },
306 Vector { _handler: USART1 },
307 Vector { _handler: USART2 },
308 Vector { _handler: USART3 },
309 Vector {
310 _handler: EXTI15_10,
311 },
312 Vector {
313 _handler: RTC_Alarm,
314 },
315 Vector { _reserved: 0 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _reserved: 0 },
319 Vector { _reserved: 0 },
320 Vector { _reserved: 0 },
321 Vector { _reserved: 0 },
322 Vector { _handler: SDMMC1 },
323 Vector { _reserved: 0 },
324 Vector { _handler: SPI3 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _handler: TIM6_DAC },
328 Vector { _handler: TIM7 },
329 Vector {
330 _handler: DMA2_Channel1,
331 },
332 Vector {
333 _handler: DMA2_Channel2,
334 },
335 Vector {
336 _handler: DMA2_Channel3,
337 },
338 Vector {
339 _handler: DMA2_Channel4,
340 },
341 Vector {
342 _handler: DMA2_Channel5,
343 },
344 Vector { _reserved: 0 },
345 Vector { _reserved: 0 },
346 Vector { _reserved: 0 },
347 Vector { _handler: COMP },
348 Vector { _handler: LPTIM1 },
349 Vector { _handler: LPTIM2 },
350 Vector { _handler: USB },
351 Vector {
352 _handler: DMA2_Channel6,
353 },
354 Vector {
355 _handler: DMA2_Channel7,
356 },
357 Vector { _handler: LPUART1 },
358 Vector { _handler: QUADSPI },
359 Vector { _handler: I2C3_EV },
360 Vector { _handler: I2C3_ER },
361 Vector { _handler: SAI1 },
362 Vector { _reserved: 0 },
363 Vector { _handler: SWPMI1 },
364 Vector { _handler: TSC },
365 Vector { _handler: LCD },
366 Vector { _handler: AES },
367 Vector { _handler: RNG },
368 Vector { _handler: FPU },
369 Vector { _handler: CRS },
370 ];
371}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 372impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 373impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 374impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l443rc.rs b/embassy-stm32/src/chip/stm32l443rc.rs
index 4842bf0f6..f3139bc11 100644
--- a/embassy-stm32/src/chip/stm32l443rc.rs
+++ b/embassy-stm32/src/chip/stm32l443rc.rs
@@ -1,18 +1,374 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 9 PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, 10 PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI,
11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, 11 RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6,
12 TSC, USART1, USART2, USART3, USB, WWDG 12 TIM7, TSC, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 AES = 79,
29 CAN1_RX0 = 20,
30 CAN1_RX1 = 21,
31 CAN1_SCE = 22,
32 CAN1_TX = 19,
33 COMP = 64,
34 CRS = 82,
35 DMA1_Channel1 = 11,
36 DMA1_Channel2 = 12,
37 DMA1_Channel3 = 13,
38 DMA1_Channel4 = 14,
39 DMA1_Channel5 = 15,
40 DMA1_Channel6 = 16,
41 DMA1_Channel7 = 17,
42 DMA2_Channel1 = 56,
43 DMA2_Channel2 = 57,
44 DMA2_Channel3 = 58,
45 DMA2_Channel4 = 59,
46 DMA2_Channel5 = 60,
47 DMA2_Channel6 = 68,
48 DMA2_Channel7 = 69,
49 EXTI0 = 6,
50 EXTI1 = 7,
51 EXTI15_10 = 40,
52 EXTI2 = 8,
53 EXTI3 = 9,
54 EXTI4 = 10,
55 EXTI9_5 = 23,
56 FLASH = 4,
57 FPU = 81,
58 I2C1_ER = 32,
59 I2C1_EV = 31,
60 I2C2_ER = 34,
61 I2C2_EV = 33,
62 I2C3_ER = 73,
63 I2C3_EV = 72,
64 LCD = 78,
65 LPTIM1 = 65,
66 LPTIM2 = 66,
67 LPUART1 = 70,
68 PVD_PVM = 1,
69 QUADSPI = 71,
70 RCC = 5,
71 RNG = 80,
72 RTC_Alarm = 41,
73 RTC_WKUP = 3,
74 SAI1 = 74,
75 SDMMC1 = 49,
76 SPI1 = 35,
77 SPI2 = 36,
78 SPI3 = 51,
79 SWPMI1 = 76,
80 TAMP_STAMP = 2,
81 TIM1_BRK_TIM15 = 24,
82 TIM1_CC = 27,
83 TIM1_TRG_COM = 26,
84 TIM1_UP_TIM16 = 25,
85 TIM2 = 28,
86 TIM6_DAC = 54,
87 TIM7 = 55,
88 TSC = 77,
89 USART1 = 37,
90 USART2 = 38,
91 USART3 = 39,
92 USB = 67,
93 WWDG = 0,
94 }
95 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
96 #[inline(always)]
97 fn number(self) -> u16 {
98 self as u16
99 }
100 }
101
102 declare!(ADC1);
103 declare!(AES);
104 declare!(CAN1_RX0);
105 declare!(CAN1_RX1);
106 declare!(CAN1_SCE);
107 declare!(CAN1_TX);
108 declare!(COMP);
109 declare!(CRS);
110 declare!(DMA1_Channel1);
111 declare!(DMA1_Channel2);
112 declare!(DMA1_Channel3);
113 declare!(DMA1_Channel4);
114 declare!(DMA1_Channel5);
115 declare!(DMA1_Channel6);
116 declare!(DMA1_Channel7);
117 declare!(DMA2_Channel1);
118 declare!(DMA2_Channel2);
119 declare!(DMA2_Channel3);
120 declare!(DMA2_Channel4);
121 declare!(DMA2_Channel5);
122 declare!(DMA2_Channel6);
123 declare!(DMA2_Channel7);
124 declare!(EXTI0);
125 declare!(EXTI1);
126 declare!(EXTI15_10);
127 declare!(EXTI2);
128 declare!(EXTI3);
129 declare!(EXTI4);
130 declare!(EXTI9_5);
131 declare!(FLASH);
132 declare!(FPU);
133 declare!(I2C1_ER);
134 declare!(I2C1_EV);
135 declare!(I2C2_ER);
136 declare!(I2C2_EV);
137 declare!(I2C3_ER);
138 declare!(I2C3_EV);
139 declare!(LCD);
140 declare!(LPTIM1);
141 declare!(LPTIM2);
142 declare!(LPUART1);
143 declare!(PVD_PVM);
144 declare!(QUADSPI);
145 declare!(RCC);
146 declare!(RNG);
147 declare!(RTC_Alarm);
148 declare!(RTC_WKUP);
149 declare!(SAI1);
150 declare!(SDMMC1);
151 declare!(SPI1);
152 declare!(SPI2);
153 declare!(SPI3);
154 declare!(SWPMI1);
155 declare!(TAMP_STAMP);
156 declare!(TIM1_BRK_TIM15);
157 declare!(TIM1_CC);
158 declare!(TIM1_TRG_COM);
159 declare!(TIM1_UP_TIM16);
160 declare!(TIM2);
161 declare!(TIM6_DAC);
162 declare!(TIM7);
163 declare!(TSC);
164 declare!(USART1);
165 declare!(USART2);
166 declare!(USART3);
167 declare!(USB);
168 declare!(WWDG);
169}
170mod interrupt_vector {
171 extern "C" {
172 fn ADC1();
173 fn AES();
174 fn CAN1_RX0();
175 fn CAN1_RX1();
176 fn CAN1_SCE();
177 fn CAN1_TX();
178 fn COMP();
179 fn CRS();
180 fn DMA1_Channel1();
181 fn DMA1_Channel2();
182 fn DMA1_Channel3();
183 fn DMA1_Channel4();
184 fn DMA1_Channel5();
185 fn DMA1_Channel6();
186 fn DMA1_Channel7();
187 fn DMA2_Channel1();
188 fn DMA2_Channel2();
189 fn DMA2_Channel3();
190 fn DMA2_Channel4();
191 fn DMA2_Channel5();
192 fn DMA2_Channel6();
193 fn DMA2_Channel7();
194 fn EXTI0();
195 fn EXTI1();
196 fn EXTI15_10();
197 fn EXTI2();
198 fn EXTI3();
199 fn EXTI4();
200 fn EXTI9_5();
201 fn FLASH();
202 fn FPU();
203 fn I2C1_ER();
204 fn I2C1_EV();
205 fn I2C2_ER();
206 fn I2C2_EV();
207 fn I2C3_ER();
208 fn I2C3_EV();
209 fn LCD();
210 fn LPTIM1();
211 fn LPTIM2();
212 fn LPUART1();
213 fn PVD_PVM();
214 fn QUADSPI();
215 fn RCC();
216 fn RNG();
217 fn RTC_Alarm();
218 fn RTC_WKUP();
219 fn SAI1();
220 fn SDMMC1();
221 fn SPI1();
222 fn SPI2();
223 fn SPI3();
224 fn SWPMI1();
225 fn TAMP_STAMP();
226 fn TIM1_BRK_TIM15();
227 fn TIM1_CC();
228 fn TIM1_TRG_COM();
229 fn TIM1_UP_TIM16();
230 fn TIM2();
231 fn TIM6_DAC();
232 fn TIM7();
233 fn TSC();
234 fn USART1();
235 fn USART2();
236 fn USART3();
237 fn USB();
238 fn WWDG();
239 }
240 pub union Vector {
241 _handler: unsafe extern "C" fn(),
242 _reserved: u32,
243 }
244 #[link_section = ".vector_table.interrupts"]
245 #[no_mangle]
246 pub static __INTERRUPTS: [Vector; 83] = [
247 Vector { _handler: WWDG },
248 Vector { _handler: PVD_PVM },
249 Vector {
250 _handler: TAMP_STAMP,
251 },
252 Vector { _handler: RTC_WKUP },
253 Vector { _handler: FLASH },
254 Vector { _handler: RCC },
255 Vector { _handler: EXTI0 },
256 Vector { _handler: EXTI1 },
257 Vector { _handler: EXTI2 },
258 Vector { _handler: EXTI3 },
259 Vector { _handler: EXTI4 },
260 Vector {
261 _handler: DMA1_Channel1,
262 },
263 Vector {
264 _handler: DMA1_Channel2,
265 },
266 Vector {
267 _handler: DMA1_Channel3,
268 },
269 Vector {
270 _handler: DMA1_Channel4,
271 },
272 Vector {
273 _handler: DMA1_Channel5,
274 },
275 Vector {
276 _handler: DMA1_Channel6,
277 },
278 Vector {
279 _handler: DMA1_Channel7,
280 },
281 Vector { _handler: ADC1 },
282 Vector { _handler: CAN1_TX },
283 Vector { _handler: CAN1_RX0 },
284 Vector { _handler: CAN1_RX1 },
285 Vector { _handler: CAN1_SCE },
286 Vector { _handler: EXTI9_5 },
287 Vector {
288 _handler: TIM1_BRK_TIM15,
289 },
290 Vector {
291 _handler: TIM1_UP_TIM16,
292 },
293 Vector {
294 _handler: TIM1_TRG_COM,
295 },
296 Vector { _handler: TIM1_CC },
297 Vector { _handler: TIM2 },
298 Vector { _reserved: 0 },
299 Vector { _reserved: 0 },
300 Vector { _handler: I2C1_EV },
301 Vector { _handler: I2C1_ER },
302 Vector { _handler: I2C2_EV },
303 Vector { _handler: I2C2_ER },
304 Vector { _handler: SPI1 },
305 Vector { _handler: SPI2 },
306 Vector { _handler: USART1 },
307 Vector { _handler: USART2 },
308 Vector { _handler: USART3 },
309 Vector {
310 _handler: EXTI15_10,
311 },
312 Vector {
313 _handler: RTC_Alarm,
314 },
315 Vector { _reserved: 0 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _reserved: 0 },
319 Vector { _reserved: 0 },
320 Vector { _reserved: 0 },
321 Vector { _reserved: 0 },
322 Vector { _handler: SDMMC1 },
323 Vector { _reserved: 0 },
324 Vector { _handler: SPI3 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _handler: TIM6_DAC },
328 Vector { _handler: TIM7 },
329 Vector {
330 _handler: DMA2_Channel1,
331 },
332 Vector {
333 _handler: DMA2_Channel2,
334 },
335 Vector {
336 _handler: DMA2_Channel3,
337 },
338 Vector {
339 _handler: DMA2_Channel4,
340 },
341 Vector {
342 _handler: DMA2_Channel5,
343 },
344 Vector { _reserved: 0 },
345 Vector { _reserved: 0 },
346 Vector { _reserved: 0 },
347 Vector { _handler: COMP },
348 Vector { _handler: LPTIM1 },
349 Vector { _handler: LPTIM2 },
350 Vector { _handler: USB },
351 Vector {
352 _handler: DMA2_Channel6,
353 },
354 Vector {
355 _handler: DMA2_Channel7,
356 },
357 Vector { _handler: LPUART1 },
358 Vector { _handler: QUADSPI },
359 Vector { _handler: I2C3_EV },
360 Vector { _handler: I2C3_ER },
361 Vector { _handler: SAI1 },
362 Vector { _reserved: 0 },
363 Vector { _handler: SWPMI1 },
364 Vector { _handler: TSC },
365 Vector { _handler: LCD },
366 Vector { _handler: AES },
367 Vector { _handler: RNG },
368 Vector { _handler: FPU },
369 Vector { _handler: CRS },
370 ];
371}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 372impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 373impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 374impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l443vc.rs b/embassy-stm32/src/chip/stm32l443vc.rs
index 4842bf0f6..f3139bc11 100644
--- a/embassy-stm32/src/chip/stm32l443vc.rs
+++ b/embassy-stm32/src/chip/stm32l443vc.rs
@@ -1,18 +1,374 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 9 PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
10 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, 10 PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI,
11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, 11 RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6,
12 TSC, USART1, USART2, USART3, USB, WWDG 12 TIM7, TSC, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 AES = 79,
29 CAN1_RX0 = 20,
30 CAN1_RX1 = 21,
31 CAN1_SCE = 22,
32 CAN1_TX = 19,
33 COMP = 64,
34 CRS = 82,
35 DMA1_Channel1 = 11,
36 DMA1_Channel2 = 12,
37 DMA1_Channel3 = 13,
38 DMA1_Channel4 = 14,
39 DMA1_Channel5 = 15,
40 DMA1_Channel6 = 16,
41 DMA1_Channel7 = 17,
42 DMA2_Channel1 = 56,
43 DMA2_Channel2 = 57,
44 DMA2_Channel3 = 58,
45 DMA2_Channel4 = 59,
46 DMA2_Channel5 = 60,
47 DMA2_Channel6 = 68,
48 DMA2_Channel7 = 69,
49 EXTI0 = 6,
50 EXTI1 = 7,
51 EXTI15_10 = 40,
52 EXTI2 = 8,
53 EXTI3 = 9,
54 EXTI4 = 10,
55 EXTI9_5 = 23,
56 FLASH = 4,
57 FPU = 81,
58 I2C1_ER = 32,
59 I2C1_EV = 31,
60 I2C2_ER = 34,
61 I2C2_EV = 33,
62 I2C3_ER = 73,
63 I2C3_EV = 72,
64 LCD = 78,
65 LPTIM1 = 65,
66 LPTIM2 = 66,
67 LPUART1 = 70,
68 PVD_PVM = 1,
69 QUADSPI = 71,
70 RCC = 5,
71 RNG = 80,
72 RTC_Alarm = 41,
73 RTC_WKUP = 3,
74 SAI1 = 74,
75 SDMMC1 = 49,
76 SPI1 = 35,
77 SPI2 = 36,
78 SPI3 = 51,
79 SWPMI1 = 76,
80 TAMP_STAMP = 2,
81 TIM1_BRK_TIM15 = 24,
82 TIM1_CC = 27,
83 TIM1_TRG_COM = 26,
84 TIM1_UP_TIM16 = 25,
85 TIM2 = 28,
86 TIM6_DAC = 54,
87 TIM7 = 55,
88 TSC = 77,
89 USART1 = 37,
90 USART2 = 38,
91 USART3 = 39,
92 USB = 67,
93 WWDG = 0,
94 }
95 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
96 #[inline(always)]
97 fn number(self) -> u16 {
98 self as u16
99 }
100 }
101
102 declare!(ADC1);
103 declare!(AES);
104 declare!(CAN1_RX0);
105 declare!(CAN1_RX1);
106 declare!(CAN1_SCE);
107 declare!(CAN1_TX);
108 declare!(COMP);
109 declare!(CRS);
110 declare!(DMA1_Channel1);
111 declare!(DMA1_Channel2);
112 declare!(DMA1_Channel3);
113 declare!(DMA1_Channel4);
114 declare!(DMA1_Channel5);
115 declare!(DMA1_Channel6);
116 declare!(DMA1_Channel7);
117 declare!(DMA2_Channel1);
118 declare!(DMA2_Channel2);
119 declare!(DMA2_Channel3);
120 declare!(DMA2_Channel4);
121 declare!(DMA2_Channel5);
122 declare!(DMA2_Channel6);
123 declare!(DMA2_Channel7);
124 declare!(EXTI0);
125 declare!(EXTI1);
126 declare!(EXTI15_10);
127 declare!(EXTI2);
128 declare!(EXTI3);
129 declare!(EXTI4);
130 declare!(EXTI9_5);
131 declare!(FLASH);
132 declare!(FPU);
133 declare!(I2C1_ER);
134 declare!(I2C1_EV);
135 declare!(I2C2_ER);
136 declare!(I2C2_EV);
137 declare!(I2C3_ER);
138 declare!(I2C3_EV);
139 declare!(LCD);
140 declare!(LPTIM1);
141 declare!(LPTIM2);
142 declare!(LPUART1);
143 declare!(PVD_PVM);
144 declare!(QUADSPI);
145 declare!(RCC);
146 declare!(RNG);
147 declare!(RTC_Alarm);
148 declare!(RTC_WKUP);
149 declare!(SAI1);
150 declare!(SDMMC1);
151 declare!(SPI1);
152 declare!(SPI2);
153 declare!(SPI3);
154 declare!(SWPMI1);
155 declare!(TAMP_STAMP);
156 declare!(TIM1_BRK_TIM15);
157 declare!(TIM1_CC);
158 declare!(TIM1_TRG_COM);
159 declare!(TIM1_UP_TIM16);
160 declare!(TIM2);
161 declare!(TIM6_DAC);
162 declare!(TIM7);
163 declare!(TSC);
164 declare!(USART1);
165 declare!(USART2);
166 declare!(USART3);
167 declare!(USB);
168 declare!(WWDG);
169}
170mod interrupt_vector {
171 extern "C" {
172 fn ADC1();
173 fn AES();
174 fn CAN1_RX0();
175 fn CAN1_RX1();
176 fn CAN1_SCE();
177 fn CAN1_TX();
178 fn COMP();
179 fn CRS();
180 fn DMA1_Channel1();
181 fn DMA1_Channel2();
182 fn DMA1_Channel3();
183 fn DMA1_Channel4();
184 fn DMA1_Channel5();
185 fn DMA1_Channel6();
186 fn DMA1_Channel7();
187 fn DMA2_Channel1();
188 fn DMA2_Channel2();
189 fn DMA2_Channel3();
190 fn DMA2_Channel4();
191 fn DMA2_Channel5();
192 fn DMA2_Channel6();
193 fn DMA2_Channel7();
194 fn EXTI0();
195 fn EXTI1();
196 fn EXTI15_10();
197 fn EXTI2();
198 fn EXTI3();
199 fn EXTI4();
200 fn EXTI9_5();
201 fn FLASH();
202 fn FPU();
203 fn I2C1_ER();
204 fn I2C1_EV();
205 fn I2C2_ER();
206 fn I2C2_EV();
207 fn I2C3_ER();
208 fn I2C3_EV();
209 fn LCD();
210 fn LPTIM1();
211 fn LPTIM2();
212 fn LPUART1();
213 fn PVD_PVM();
214 fn QUADSPI();
215 fn RCC();
216 fn RNG();
217 fn RTC_Alarm();
218 fn RTC_WKUP();
219 fn SAI1();
220 fn SDMMC1();
221 fn SPI1();
222 fn SPI2();
223 fn SPI3();
224 fn SWPMI1();
225 fn TAMP_STAMP();
226 fn TIM1_BRK_TIM15();
227 fn TIM1_CC();
228 fn TIM1_TRG_COM();
229 fn TIM1_UP_TIM16();
230 fn TIM2();
231 fn TIM6_DAC();
232 fn TIM7();
233 fn TSC();
234 fn USART1();
235 fn USART2();
236 fn USART3();
237 fn USB();
238 fn WWDG();
239 }
240 pub union Vector {
241 _handler: unsafe extern "C" fn(),
242 _reserved: u32,
243 }
244 #[link_section = ".vector_table.interrupts"]
245 #[no_mangle]
246 pub static __INTERRUPTS: [Vector; 83] = [
247 Vector { _handler: WWDG },
248 Vector { _handler: PVD_PVM },
249 Vector {
250 _handler: TAMP_STAMP,
251 },
252 Vector { _handler: RTC_WKUP },
253 Vector { _handler: FLASH },
254 Vector { _handler: RCC },
255 Vector { _handler: EXTI0 },
256 Vector { _handler: EXTI1 },
257 Vector { _handler: EXTI2 },
258 Vector { _handler: EXTI3 },
259 Vector { _handler: EXTI4 },
260 Vector {
261 _handler: DMA1_Channel1,
262 },
263 Vector {
264 _handler: DMA1_Channel2,
265 },
266 Vector {
267 _handler: DMA1_Channel3,
268 },
269 Vector {
270 _handler: DMA1_Channel4,
271 },
272 Vector {
273 _handler: DMA1_Channel5,
274 },
275 Vector {
276 _handler: DMA1_Channel6,
277 },
278 Vector {
279 _handler: DMA1_Channel7,
280 },
281 Vector { _handler: ADC1 },
282 Vector { _handler: CAN1_TX },
283 Vector { _handler: CAN1_RX0 },
284 Vector { _handler: CAN1_RX1 },
285 Vector { _handler: CAN1_SCE },
286 Vector { _handler: EXTI9_5 },
287 Vector {
288 _handler: TIM1_BRK_TIM15,
289 },
290 Vector {
291 _handler: TIM1_UP_TIM16,
292 },
293 Vector {
294 _handler: TIM1_TRG_COM,
295 },
296 Vector { _handler: TIM1_CC },
297 Vector { _handler: TIM2 },
298 Vector { _reserved: 0 },
299 Vector { _reserved: 0 },
300 Vector { _handler: I2C1_EV },
301 Vector { _handler: I2C1_ER },
302 Vector { _handler: I2C2_EV },
303 Vector { _handler: I2C2_ER },
304 Vector { _handler: SPI1 },
305 Vector { _handler: SPI2 },
306 Vector { _handler: USART1 },
307 Vector { _handler: USART2 },
308 Vector { _handler: USART3 },
309 Vector {
310 _handler: EXTI15_10,
311 },
312 Vector {
313 _handler: RTC_Alarm,
314 },
315 Vector { _reserved: 0 },
316 Vector { _reserved: 0 },
317 Vector { _reserved: 0 },
318 Vector { _reserved: 0 },
319 Vector { _reserved: 0 },
320 Vector { _reserved: 0 },
321 Vector { _reserved: 0 },
322 Vector { _handler: SDMMC1 },
323 Vector { _reserved: 0 },
324 Vector { _handler: SPI3 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _handler: TIM6_DAC },
328 Vector { _handler: TIM7 },
329 Vector {
330 _handler: DMA2_Channel1,
331 },
332 Vector {
333 _handler: DMA2_Channel2,
334 },
335 Vector {
336 _handler: DMA2_Channel3,
337 },
338 Vector {
339 _handler: DMA2_Channel4,
340 },
341 Vector {
342 _handler: DMA2_Channel5,
343 },
344 Vector { _reserved: 0 },
345 Vector { _reserved: 0 },
346 Vector { _reserved: 0 },
347 Vector { _handler: COMP },
348 Vector { _handler: LPTIM1 },
349 Vector { _handler: LPTIM2 },
350 Vector { _handler: USB },
351 Vector {
352 _handler: DMA2_Channel6,
353 },
354 Vector {
355 _handler: DMA2_Channel7,
356 },
357 Vector { _handler: LPUART1 },
358 Vector { _handler: QUADSPI },
359 Vector { _handler: I2C3_EV },
360 Vector { _handler: I2C3_ER },
361 Vector { _handler: SAI1 },
362 Vector { _reserved: 0 },
363 Vector { _handler: SWPMI1 },
364 Vector { _handler: TSC },
365 Vector { _handler: LCD },
366 Vector { _handler: AES },
367 Vector { _handler: RNG },
368 Vector { _handler: FPU },
369 Vector { _handler: CRS },
370 ];
371}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 372impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 373impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 374impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l451cc.rs b/embassy-stm32/src/chip/stm32l451cc.rs
index 59132f492..6d8463347 100644
--- a/embassy-stm32/src/chip/stm32l451cc.rs
+++ b/embassy-stm32/src/chip/stm32l451cc.rs
@@ -1,18 +1,383 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, USART1, 11 RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4,
12 USART2, USART3, WWDG 12 USART1, USART2, USART3, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 WWDG = 0,
95 }
96 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
97 #[inline(always)]
98 fn number(self) -> u16 {
99 self as u16
100 }
101 }
102
103 declare!(ADC1);
104 declare!(CAN1_RX0);
105 declare!(CAN1_RX1);
106 declare!(CAN1_SCE);
107 declare!(CAN1_TX);
108 declare!(COMP);
109 declare!(CRS);
110 declare!(DFSDM1_FLT0);
111 declare!(DFSDM1_FLT1);
112 declare!(DMA1_Channel1);
113 declare!(DMA1_Channel2);
114 declare!(DMA1_Channel3);
115 declare!(DMA1_Channel4);
116 declare!(DMA1_Channel5);
117 declare!(DMA1_Channel6);
118 declare!(DMA1_Channel7);
119 declare!(DMA2_Channel1);
120 declare!(DMA2_Channel2);
121 declare!(DMA2_Channel3);
122 declare!(DMA2_Channel4);
123 declare!(DMA2_Channel5);
124 declare!(DMA2_Channel6);
125 declare!(DMA2_Channel7);
126 declare!(EXTI0);
127 declare!(EXTI1);
128 declare!(EXTI15_10);
129 declare!(EXTI2);
130 declare!(EXTI3);
131 declare!(EXTI4);
132 declare!(EXTI9_5);
133 declare!(FLASH);
134 declare!(FPU);
135 declare!(I2C1_ER);
136 declare!(I2C1_EV);
137 declare!(I2C2_ER);
138 declare!(I2C2_EV);
139 declare!(I2C3_ER);
140 declare!(I2C3_EV);
141 declare!(I2C4_ER);
142 declare!(I2C4_EV);
143 declare!(LPTIM1);
144 declare!(LPTIM2);
145 declare!(LPUART1);
146 declare!(PVD_PVM);
147 declare!(QUADSPI);
148 declare!(RCC);
149 declare!(RNG);
150 declare!(RTC_Alarm);
151 declare!(RTC_WKUP);
152 declare!(SAI1);
153 declare!(SDMMC1);
154 declare!(SPI1);
155 declare!(SPI2);
156 declare!(SPI3);
157 declare!(TAMP_STAMP);
158 declare!(TIM1_BRK_TIM15);
159 declare!(TIM1_CC);
160 declare!(TIM1_TRG_COM);
161 declare!(TIM1_UP_TIM16);
162 declare!(TIM2);
163 declare!(TIM3);
164 declare!(TIM6_DAC);
165 declare!(TSC);
166 declare!(UART4);
167 declare!(USART1);
168 declare!(USART2);
169 declare!(USART3);
170 declare!(WWDG);
171}
172mod interrupt_vector {
173 extern "C" {
174 fn ADC1();
175 fn CAN1_RX0();
176 fn CAN1_RX1();
177 fn CAN1_SCE();
178 fn CAN1_TX();
179 fn COMP();
180 fn CRS();
181 fn DFSDM1_FLT0();
182 fn DFSDM1_FLT1();
183 fn DMA1_Channel1();
184 fn DMA1_Channel2();
185 fn DMA1_Channel3();
186 fn DMA1_Channel4();
187 fn DMA1_Channel5();
188 fn DMA1_Channel6();
189 fn DMA1_Channel7();
190 fn DMA2_Channel1();
191 fn DMA2_Channel2();
192 fn DMA2_Channel3();
193 fn DMA2_Channel4();
194 fn DMA2_Channel5();
195 fn DMA2_Channel6();
196 fn DMA2_Channel7();
197 fn EXTI0();
198 fn EXTI1();
199 fn EXTI15_10();
200 fn EXTI2();
201 fn EXTI3();
202 fn EXTI4();
203 fn EXTI9_5();
204 fn FLASH();
205 fn FPU();
206 fn I2C1_ER();
207 fn I2C1_EV();
208 fn I2C2_ER();
209 fn I2C2_EV();
210 fn I2C3_ER();
211 fn I2C3_EV();
212 fn I2C4_ER();
213 fn I2C4_EV();
214 fn LPTIM1();
215 fn LPTIM2();
216 fn LPUART1();
217 fn PVD_PVM();
218 fn QUADSPI();
219 fn RCC();
220 fn RNG();
221 fn RTC_Alarm();
222 fn RTC_WKUP();
223 fn SAI1();
224 fn SDMMC1();
225 fn SPI1();
226 fn SPI2();
227 fn SPI3();
228 fn TAMP_STAMP();
229 fn TIM1_BRK_TIM15();
230 fn TIM1_CC();
231 fn TIM1_TRG_COM();
232 fn TIM1_UP_TIM16();
233 fn TIM2();
234 fn TIM3();
235 fn TIM6_DAC();
236 fn TSC();
237 fn UART4();
238 fn USART1();
239 fn USART2();
240 fn USART3();
241 fn WWDG();
242 }
243 pub union Vector {
244 _handler: unsafe extern "C" fn(),
245 _reserved: u32,
246 }
247 #[link_section = ".vector_table.interrupts"]
248 #[no_mangle]
249 pub static __INTERRUPTS: [Vector; 85] = [
250 Vector { _handler: WWDG },
251 Vector { _handler: PVD_PVM },
252 Vector {
253 _handler: TAMP_STAMP,
254 },
255 Vector { _handler: RTC_WKUP },
256 Vector { _handler: FLASH },
257 Vector { _handler: RCC },
258 Vector { _handler: EXTI0 },
259 Vector { _handler: EXTI1 },
260 Vector { _handler: EXTI2 },
261 Vector { _handler: EXTI3 },
262 Vector { _handler: EXTI4 },
263 Vector {
264 _handler: DMA1_Channel1,
265 },
266 Vector {
267 _handler: DMA1_Channel2,
268 },
269 Vector {
270 _handler: DMA1_Channel3,
271 },
272 Vector {
273 _handler: DMA1_Channel4,
274 },
275 Vector {
276 _handler: DMA1_Channel5,
277 },
278 Vector {
279 _handler: DMA1_Channel6,
280 },
281 Vector {
282 _handler: DMA1_Channel7,
283 },
284 Vector { _handler: ADC1 },
285 Vector { _handler: CAN1_TX },
286 Vector { _handler: CAN1_RX0 },
287 Vector { _handler: CAN1_RX1 },
288 Vector { _handler: CAN1_SCE },
289 Vector { _handler: EXTI9_5 },
290 Vector {
291 _handler: TIM1_BRK_TIM15,
292 },
293 Vector {
294 _handler: TIM1_UP_TIM16,
295 },
296 Vector {
297 _handler: TIM1_TRG_COM,
298 },
299 Vector { _handler: TIM1_CC },
300 Vector { _handler: TIM2 },
301 Vector { _handler: TIM3 },
302 Vector { _reserved: 0 },
303 Vector { _handler: I2C1_EV },
304 Vector { _handler: I2C1_ER },
305 Vector { _handler: I2C2_EV },
306 Vector { _handler: I2C2_ER },
307 Vector { _handler: SPI1 },
308 Vector { _handler: SPI2 },
309 Vector { _handler: USART1 },
310 Vector { _handler: USART2 },
311 Vector { _handler: USART3 },
312 Vector {
313 _handler: EXTI15_10,
314 },
315 Vector {
316 _handler: RTC_Alarm,
317 },
318 Vector { _reserved: 0 },
319 Vector { _reserved: 0 },
320 Vector { _reserved: 0 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _handler: SDMMC1 },
326 Vector { _reserved: 0 },
327 Vector { _handler: SPI3 },
328 Vector { _handler: UART4 },
329 Vector { _reserved: 0 },
330 Vector { _handler: TIM6_DAC },
331 Vector { _reserved: 0 },
332 Vector {
333 _handler: DMA2_Channel1,
334 },
335 Vector {
336 _handler: DMA2_Channel2,
337 },
338 Vector {
339 _handler: DMA2_Channel3,
340 },
341 Vector {
342 _handler: DMA2_Channel4,
343 },
344 Vector {
345 _handler: DMA2_Channel5,
346 },
347 Vector {
348 _handler: DFSDM1_FLT0,
349 },
350 Vector {
351 _handler: DFSDM1_FLT1,
352 },
353 Vector { _reserved: 0 },
354 Vector { _handler: COMP },
355 Vector { _handler: LPTIM1 },
356 Vector { _handler: LPTIM2 },
357 Vector { _reserved: 0 },
358 Vector {
359 _handler: DMA2_Channel6,
360 },
361 Vector {
362 _handler: DMA2_Channel7,
363 },
364 Vector { _handler: LPUART1 },
365 Vector { _handler: QUADSPI },
366 Vector { _handler: I2C3_EV },
367 Vector { _handler: I2C3_ER },
368 Vector { _handler: SAI1 },
369 Vector { _reserved: 0 },
370 Vector { _reserved: 0 },
371 Vector { _handler: TSC },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: RNG },
375 Vector { _handler: FPU },
376 Vector { _handler: CRS },
377 Vector { _handler: I2C4_EV },
378 Vector { _handler: I2C4_ER },
379 ];
380}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 381impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 382impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 383impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l451ce.rs b/embassy-stm32/src/chip/stm32l451ce.rs
index 59132f492..6d8463347 100644
--- a/embassy-stm32/src/chip/stm32l451ce.rs
+++ b/embassy-stm32/src/chip/stm32l451ce.rs
@@ -1,18 +1,383 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, USART1, 11 RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4,
12 USART2, USART3, WWDG 12 USART1, USART2, USART3, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 WWDG = 0,
95 }
96 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
97 #[inline(always)]
98 fn number(self) -> u16 {
99 self as u16
100 }
101 }
102
103 declare!(ADC1);
104 declare!(CAN1_RX0);
105 declare!(CAN1_RX1);
106 declare!(CAN1_SCE);
107 declare!(CAN1_TX);
108 declare!(COMP);
109 declare!(CRS);
110 declare!(DFSDM1_FLT0);
111 declare!(DFSDM1_FLT1);
112 declare!(DMA1_Channel1);
113 declare!(DMA1_Channel2);
114 declare!(DMA1_Channel3);
115 declare!(DMA1_Channel4);
116 declare!(DMA1_Channel5);
117 declare!(DMA1_Channel6);
118 declare!(DMA1_Channel7);
119 declare!(DMA2_Channel1);
120 declare!(DMA2_Channel2);
121 declare!(DMA2_Channel3);
122 declare!(DMA2_Channel4);
123 declare!(DMA2_Channel5);
124 declare!(DMA2_Channel6);
125 declare!(DMA2_Channel7);
126 declare!(EXTI0);
127 declare!(EXTI1);
128 declare!(EXTI15_10);
129 declare!(EXTI2);
130 declare!(EXTI3);
131 declare!(EXTI4);
132 declare!(EXTI9_5);
133 declare!(FLASH);
134 declare!(FPU);
135 declare!(I2C1_ER);
136 declare!(I2C1_EV);
137 declare!(I2C2_ER);
138 declare!(I2C2_EV);
139 declare!(I2C3_ER);
140 declare!(I2C3_EV);
141 declare!(I2C4_ER);
142 declare!(I2C4_EV);
143 declare!(LPTIM1);
144 declare!(LPTIM2);
145 declare!(LPUART1);
146 declare!(PVD_PVM);
147 declare!(QUADSPI);
148 declare!(RCC);
149 declare!(RNG);
150 declare!(RTC_Alarm);
151 declare!(RTC_WKUP);
152 declare!(SAI1);
153 declare!(SDMMC1);
154 declare!(SPI1);
155 declare!(SPI2);
156 declare!(SPI3);
157 declare!(TAMP_STAMP);
158 declare!(TIM1_BRK_TIM15);
159 declare!(TIM1_CC);
160 declare!(TIM1_TRG_COM);
161 declare!(TIM1_UP_TIM16);
162 declare!(TIM2);
163 declare!(TIM3);
164 declare!(TIM6_DAC);
165 declare!(TSC);
166 declare!(UART4);
167 declare!(USART1);
168 declare!(USART2);
169 declare!(USART3);
170 declare!(WWDG);
171}
172mod interrupt_vector {
173 extern "C" {
174 fn ADC1();
175 fn CAN1_RX0();
176 fn CAN1_RX1();
177 fn CAN1_SCE();
178 fn CAN1_TX();
179 fn COMP();
180 fn CRS();
181 fn DFSDM1_FLT0();
182 fn DFSDM1_FLT1();
183 fn DMA1_Channel1();
184 fn DMA1_Channel2();
185 fn DMA1_Channel3();
186 fn DMA1_Channel4();
187 fn DMA1_Channel5();
188 fn DMA1_Channel6();
189 fn DMA1_Channel7();
190 fn DMA2_Channel1();
191 fn DMA2_Channel2();
192 fn DMA2_Channel3();
193 fn DMA2_Channel4();
194 fn DMA2_Channel5();
195 fn DMA2_Channel6();
196 fn DMA2_Channel7();
197 fn EXTI0();
198 fn EXTI1();
199 fn EXTI15_10();
200 fn EXTI2();
201 fn EXTI3();
202 fn EXTI4();
203 fn EXTI9_5();
204 fn FLASH();
205 fn FPU();
206 fn I2C1_ER();
207 fn I2C1_EV();
208 fn I2C2_ER();
209 fn I2C2_EV();
210 fn I2C3_ER();
211 fn I2C3_EV();
212 fn I2C4_ER();
213 fn I2C4_EV();
214 fn LPTIM1();
215 fn LPTIM2();
216 fn LPUART1();
217 fn PVD_PVM();
218 fn QUADSPI();
219 fn RCC();
220 fn RNG();
221 fn RTC_Alarm();
222 fn RTC_WKUP();
223 fn SAI1();
224 fn SDMMC1();
225 fn SPI1();
226 fn SPI2();
227 fn SPI3();
228 fn TAMP_STAMP();
229 fn TIM1_BRK_TIM15();
230 fn TIM1_CC();
231 fn TIM1_TRG_COM();
232 fn TIM1_UP_TIM16();
233 fn TIM2();
234 fn TIM3();
235 fn TIM6_DAC();
236 fn TSC();
237 fn UART4();
238 fn USART1();
239 fn USART2();
240 fn USART3();
241 fn WWDG();
242 }
243 pub union Vector {
244 _handler: unsafe extern "C" fn(),
245 _reserved: u32,
246 }
247 #[link_section = ".vector_table.interrupts"]
248 #[no_mangle]
249 pub static __INTERRUPTS: [Vector; 85] = [
250 Vector { _handler: WWDG },
251 Vector { _handler: PVD_PVM },
252 Vector {
253 _handler: TAMP_STAMP,
254 },
255 Vector { _handler: RTC_WKUP },
256 Vector { _handler: FLASH },
257 Vector { _handler: RCC },
258 Vector { _handler: EXTI0 },
259 Vector { _handler: EXTI1 },
260 Vector { _handler: EXTI2 },
261 Vector { _handler: EXTI3 },
262 Vector { _handler: EXTI4 },
263 Vector {
264 _handler: DMA1_Channel1,
265 },
266 Vector {
267 _handler: DMA1_Channel2,
268 },
269 Vector {
270 _handler: DMA1_Channel3,
271 },
272 Vector {
273 _handler: DMA1_Channel4,
274 },
275 Vector {
276 _handler: DMA1_Channel5,
277 },
278 Vector {
279 _handler: DMA1_Channel6,
280 },
281 Vector {
282 _handler: DMA1_Channel7,
283 },
284 Vector { _handler: ADC1 },
285 Vector { _handler: CAN1_TX },
286 Vector { _handler: CAN1_RX0 },
287 Vector { _handler: CAN1_RX1 },
288 Vector { _handler: CAN1_SCE },
289 Vector { _handler: EXTI9_5 },
290 Vector {
291 _handler: TIM1_BRK_TIM15,
292 },
293 Vector {
294 _handler: TIM1_UP_TIM16,
295 },
296 Vector {
297 _handler: TIM1_TRG_COM,
298 },
299 Vector { _handler: TIM1_CC },
300 Vector { _handler: TIM2 },
301 Vector { _handler: TIM3 },
302 Vector { _reserved: 0 },
303 Vector { _handler: I2C1_EV },
304 Vector { _handler: I2C1_ER },
305 Vector { _handler: I2C2_EV },
306 Vector { _handler: I2C2_ER },
307 Vector { _handler: SPI1 },
308 Vector { _handler: SPI2 },
309 Vector { _handler: USART1 },
310 Vector { _handler: USART2 },
311 Vector { _handler: USART3 },
312 Vector {
313 _handler: EXTI15_10,
314 },
315 Vector {
316 _handler: RTC_Alarm,
317 },
318 Vector { _reserved: 0 },
319 Vector { _reserved: 0 },
320 Vector { _reserved: 0 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _handler: SDMMC1 },
326 Vector { _reserved: 0 },
327 Vector { _handler: SPI3 },
328 Vector { _handler: UART4 },
329 Vector { _reserved: 0 },
330 Vector { _handler: TIM6_DAC },
331 Vector { _reserved: 0 },
332 Vector {
333 _handler: DMA2_Channel1,
334 },
335 Vector {
336 _handler: DMA2_Channel2,
337 },
338 Vector {
339 _handler: DMA2_Channel3,
340 },
341 Vector {
342 _handler: DMA2_Channel4,
343 },
344 Vector {
345 _handler: DMA2_Channel5,
346 },
347 Vector {
348 _handler: DFSDM1_FLT0,
349 },
350 Vector {
351 _handler: DFSDM1_FLT1,
352 },
353 Vector { _reserved: 0 },
354 Vector { _handler: COMP },
355 Vector { _handler: LPTIM1 },
356 Vector { _handler: LPTIM2 },
357 Vector { _reserved: 0 },
358 Vector {
359 _handler: DMA2_Channel6,
360 },
361 Vector {
362 _handler: DMA2_Channel7,
363 },
364 Vector { _handler: LPUART1 },
365 Vector { _handler: QUADSPI },
366 Vector { _handler: I2C3_EV },
367 Vector { _handler: I2C3_ER },
368 Vector { _handler: SAI1 },
369 Vector { _reserved: 0 },
370 Vector { _reserved: 0 },
371 Vector { _handler: TSC },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: RNG },
375 Vector { _handler: FPU },
376 Vector { _handler: CRS },
377 Vector { _handler: I2C4_EV },
378 Vector { _handler: I2C4_ER },
379 ];
380}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 381impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 382impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 383impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l451rc.rs b/embassy-stm32/src/chip/stm32l451rc.rs
index af1f601c7..464fdc4ac 100644
--- a/embassy-stm32/src/chip/stm32l451rc.rs
+++ b/embassy-stm32/src/chip/stm32l451rc.rs
@@ -1,18 +1,383 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, 11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC,
12 USART1, USART2, USART3, WWDG 12 UART4, USART1, USART2, USART3, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 WWDG = 0,
95 }
96 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
97 #[inline(always)]
98 fn number(self) -> u16 {
99 self as u16
100 }
101 }
102
103 declare!(ADC1);
104 declare!(CAN1_RX0);
105 declare!(CAN1_RX1);
106 declare!(CAN1_SCE);
107 declare!(CAN1_TX);
108 declare!(COMP);
109 declare!(CRS);
110 declare!(DFSDM1_FLT0);
111 declare!(DFSDM1_FLT1);
112 declare!(DMA1_Channel1);
113 declare!(DMA1_Channel2);
114 declare!(DMA1_Channel3);
115 declare!(DMA1_Channel4);
116 declare!(DMA1_Channel5);
117 declare!(DMA1_Channel6);
118 declare!(DMA1_Channel7);
119 declare!(DMA2_Channel1);
120 declare!(DMA2_Channel2);
121 declare!(DMA2_Channel3);
122 declare!(DMA2_Channel4);
123 declare!(DMA2_Channel5);
124 declare!(DMA2_Channel6);
125 declare!(DMA2_Channel7);
126 declare!(EXTI0);
127 declare!(EXTI1);
128 declare!(EXTI15_10);
129 declare!(EXTI2);
130 declare!(EXTI3);
131 declare!(EXTI4);
132 declare!(EXTI9_5);
133 declare!(FLASH);
134 declare!(FPU);
135 declare!(I2C1_ER);
136 declare!(I2C1_EV);
137 declare!(I2C2_ER);
138 declare!(I2C2_EV);
139 declare!(I2C3_ER);
140 declare!(I2C3_EV);
141 declare!(I2C4_ER);
142 declare!(I2C4_EV);
143 declare!(LPTIM1);
144 declare!(LPTIM2);
145 declare!(LPUART1);
146 declare!(PVD_PVM);
147 declare!(QUADSPI);
148 declare!(RCC);
149 declare!(RNG);
150 declare!(RTC_Alarm);
151 declare!(RTC_WKUP);
152 declare!(SAI1);
153 declare!(SDMMC1);
154 declare!(SPI1);
155 declare!(SPI2);
156 declare!(SPI3);
157 declare!(TAMP_STAMP);
158 declare!(TIM1_BRK_TIM15);
159 declare!(TIM1_CC);
160 declare!(TIM1_TRG_COM);
161 declare!(TIM1_UP_TIM16);
162 declare!(TIM2);
163 declare!(TIM3);
164 declare!(TIM6_DAC);
165 declare!(TSC);
166 declare!(UART4);
167 declare!(USART1);
168 declare!(USART2);
169 declare!(USART3);
170 declare!(WWDG);
171}
172mod interrupt_vector {
173 extern "C" {
174 fn ADC1();
175 fn CAN1_RX0();
176 fn CAN1_RX1();
177 fn CAN1_SCE();
178 fn CAN1_TX();
179 fn COMP();
180 fn CRS();
181 fn DFSDM1_FLT0();
182 fn DFSDM1_FLT1();
183 fn DMA1_Channel1();
184 fn DMA1_Channel2();
185 fn DMA1_Channel3();
186 fn DMA1_Channel4();
187 fn DMA1_Channel5();
188 fn DMA1_Channel6();
189 fn DMA1_Channel7();
190 fn DMA2_Channel1();
191 fn DMA2_Channel2();
192 fn DMA2_Channel3();
193 fn DMA2_Channel4();
194 fn DMA2_Channel5();
195 fn DMA2_Channel6();
196 fn DMA2_Channel7();
197 fn EXTI0();
198 fn EXTI1();
199 fn EXTI15_10();
200 fn EXTI2();
201 fn EXTI3();
202 fn EXTI4();
203 fn EXTI9_5();
204 fn FLASH();
205 fn FPU();
206 fn I2C1_ER();
207 fn I2C1_EV();
208 fn I2C2_ER();
209 fn I2C2_EV();
210 fn I2C3_ER();
211 fn I2C3_EV();
212 fn I2C4_ER();
213 fn I2C4_EV();
214 fn LPTIM1();
215 fn LPTIM2();
216 fn LPUART1();
217 fn PVD_PVM();
218 fn QUADSPI();
219 fn RCC();
220 fn RNG();
221 fn RTC_Alarm();
222 fn RTC_WKUP();
223 fn SAI1();
224 fn SDMMC1();
225 fn SPI1();
226 fn SPI2();
227 fn SPI3();
228 fn TAMP_STAMP();
229 fn TIM1_BRK_TIM15();
230 fn TIM1_CC();
231 fn TIM1_TRG_COM();
232 fn TIM1_UP_TIM16();
233 fn TIM2();
234 fn TIM3();
235 fn TIM6_DAC();
236 fn TSC();
237 fn UART4();
238 fn USART1();
239 fn USART2();
240 fn USART3();
241 fn WWDG();
242 }
243 pub union Vector {
244 _handler: unsafe extern "C" fn(),
245 _reserved: u32,
246 }
247 #[link_section = ".vector_table.interrupts"]
248 #[no_mangle]
249 pub static __INTERRUPTS: [Vector; 85] = [
250 Vector { _handler: WWDG },
251 Vector { _handler: PVD_PVM },
252 Vector {
253 _handler: TAMP_STAMP,
254 },
255 Vector { _handler: RTC_WKUP },
256 Vector { _handler: FLASH },
257 Vector { _handler: RCC },
258 Vector { _handler: EXTI0 },
259 Vector { _handler: EXTI1 },
260 Vector { _handler: EXTI2 },
261 Vector { _handler: EXTI3 },
262 Vector { _handler: EXTI4 },
263 Vector {
264 _handler: DMA1_Channel1,
265 },
266 Vector {
267 _handler: DMA1_Channel2,
268 },
269 Vector {
270 _handler: DMA1_Channel3,
271 },
272 Vector {
273 _handler: DMA1_Channel4,
274 },
275 Vector {
276 _handler: DMA1_Channel5,
277 },
278 Vector {
279 _handler: DMA1_Channel6,
280 },
281 Vector {
282 _handler: DMA1_Channel7,
283 },
284 Vector { _handler: ADC1 },
285 Vector { _handler: CAN1_TX },
286 Vector { _handler: CAN1_RX0 },
287 Vector { _handler: CAN1_RX1 },
288 Vector { _handler: CAN1_SCE },
289 Vector { _handler: EXTI9_5 },
290 Vector {
291 _handler: TIM1_BRK_TIM15,
292 },
293 Vector {
294 _handler: TIM1_UP_TIM16,
295 },
296 Vector {
297 _handler: TIM1_TRG_COM,
298 },
299 Vector { _handler: TIM1_CC },
300 Vector { _handler: TIM2 },
301 Vector { _handler: TIM3 },
302 Vector { _reserved: 0 },
303 Vector { _handler: I2C1_EV },
304 Vector { _handler: I2C1_ER },
305 Vector { _handler: I2C2_EV },
306 Vector { _handler: I2C2_ER },
307 Vector { _handler: SPI1 },
308 Vector { _handler: SPI2 },
309 Vector { _handler: USART1 },
310 Vector { _handler: USART2 },
311 Vector { _handler: USART3 },
312 Vector {
313 _handler: EXTI15_10,
314 },
315 Vector {
316 _handler: RTC_Alarm,
317 },
318 Vector { _reserved: 0 },
319 Vector { _reserved: 0 },
320 Vector { _reserved: 0 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _handler: SDMMC1 },
326 Vector { _reserved: 0 },
327 Vector { _handler: SPI3 },
328 Vector { _handler: UART4 },
329 Vector { _reserved: 0 },
330 Vector { _handler: TIM6_DAC },
331 Vector { _reserved: 0 },
332 Vector {
333 _handler: DMA2_Channel1,
334 },
335 Vector {
336 _handler: DMA2_Channel2,
337 },
338 Vector {
339 _handler: DMA2_Channel3,
340 },
341 Vector {
342 _handler: DMA2_Channel4,
343 },
344 Vector {
345 _handler: DMA2_Channel5,
346 },
347 Vector {
348 _handler: DFSDM1_FLT0,
349 },
350 Vector {
351 _handler: DFSDM1_FLT1,
352 },
353 Vector { _reserved: 0 },
354 Vector { _handler: COMP },
355 Vector { _handler: LPTIM1 },
356 Vector { _handler: LPTIM2 },
357 Vector { _reserved: 0 },
358 Vector {
359 _handler: DMA2_Channel6,
360 },
361 Vector {
362 _handler: DMA2_Channel7,
363 },
364 Vector { _handler: LPUART1 },
365 Vector { _handler: QUADSPI },
366 Vector { _handler: I2C3_EV },
367 Vector { _handler: I2C3_ER },
368 Vector { _handler: SAI1 },
369 Vector { _reserved: 0 },
370 Vector { _reserved: 0 },
371 Vector { _handler: TSC },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: RNG },
375 Vector { _handler: FPU },
376 Vector { _handler: CRS },
377 Vector { _handler: I2C4_EV },
378 Vector { _handler: I2C4_ER },
379 ];
380}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 381impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 382impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 383impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l451re.rs b/embassy-stm32/src/chip/stm32l451re.rs
index af1f601c7..464fdc4ac 100644
--- a/embassy-stm32/src/chip/stm32l451re.rs
+++ b/embassy-stm32/src/chip/stm32l451re.rs
@@ -1,18 +1,383 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, 11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC,
12 USART1, USART2, USART3, WWDG 12 UART4, USART1, USART2, USART3, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 WWDG = 0,
95 }
96 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
97 #[inline(always)]
98 fn number(self) -> u16 {
99 self as u16
100 }
101 }
102
103 declare!(ADC1);
104 declare!(CAN1_RX0);
105 declare!(CAN1_RX1);
106 declare!(CAN1_SCE);
107 declare!(CAN1_TX);
108 declare!(COMP);
109 declare!(CRS);
110 declare!(DFSDM1_FLT0);
111 declare!(DFSDM1_FLT1);
112 declare!(DMA1_Channel1);
113 declare!(DMA1_Channel2);
114 declare!(DMA1_Channel3);
115 declare!(DMA1_Channel4);
116 declare!(DMA1_Channel5);
117 declare!(DMA1_Channel6);
118 declare!(DMA1_Channel7);
119 declare!(DMA2_Channel1);
120 declare!(DMA2_Channel2);
121 declare!(DMA2_Channel3);
122 declare!(DMA2_Channel4);
123 declare!(DMA2_Channel5);
124 declare!(DMA2_Channel6);
125 declare!(DMA2_Channel7);
126 declare!(EXTI0);
127 declare!(EXTI1);
128 declare!(EXTI15_10);
129 declare!(EXTI2);
130 declare!(EXTI3);
131 declare!(EXTI4);
132 declare!(EXTI9_5);
133 declare!(FLASH);
134 declare!(FPU);
135 declare!(I2C1_ER);
136 declare!(I2C1_EV);
137 declare!(I2C2_ER);
138 declare!(I2C2_EV);
139 declare!(I2C3_ER);
140 declare!(I2C3_EV);
141 declare!(I2C4_ER);
142 declare!(I2C4_EV);
143 declare!(LPTIM1);
144 declare!(LPTIM2);
145 declare!(LPUART1);
146 declare!(PVD_PVM);
147 declare!(QUADSPI);
148 declare!(RCC);
149 declare!(RNG);
150 declare!(RTC_Alarm);
151 declare!(RTC_WKUP);
152 declare!(SAI1);
153 declare!(SDMMC1);
154 declare!(SPI1);
155 declare!(SPI2);
156 declare!(SPI3);
157 declare!(TAMP_STAMP);
158 declare!(TIM1_BRK_TIM15);
159 declare!(TIM1_CC);
160 declare!(TIM1_TRG_COM);
161 declare!(TIM1_UP_TIM16);
162 declare!(TIM2);
163 declare!(TIM3);
164 declare!(TIM6_DAC);
165 declare!(TSC);
166 declare!(UART4);
167 declare!(USART1);
168 declare!(USART2);
169 declare!(USART3);
170 declare!(WWDG);
171}
172mod interrupt_vector {
173 extern "C" {
174 fn ADC1();
175 fn CAN1_RX0();
176 fn CAN1_RX1();
177 fn CAN1_SCE();
178 fn CAN1_TX();
179 fn COMP();
180 fn CRS();
181 fn DFSDM1_FLT0();
182 fn DFSDM1_FLT1();
183 fn DMA1_Channel1();
184 fn DMA1_Channel2();
185 fn DMA1_Channel3();
186 fn DMA1_Channel4();
187 fn DMA1_Channel5();
188 fn DMA1_Channel6();
189 fn DMA1_Channel7();
190 fn DMA2_Channel1();
191 fn DMA2_Channel2();
192 fn DMA2_Channel3();
193 fn DMA2_Channel4();
194 fn DMA2_Channel5();
195 fn DMA2_Channel6();
196 fn DMA2_Channel7();
197 fn EXTI0();
198 fn EXTI1();
199 fn EXTI15_10();
200 fn EXTI2();
201 fn EXTI3();
202 fn EXTI4();
203 fn EXTI9_5();
204 fn FLASH();
205 fn FPU();
206 fn I2C1_ER();
207 fn I2C1_EV();
208 fn I2C2_ER();
209 fn I2C2_EV();
210 fn I2C3_ER();
211 fn I2C3_EV();
212 fn I2C4_ER();
213 fn I2C4_EV();
214 fn LPTIM1();
215 fn LPTIM2();
216 fn LPUART1();
217 fn PVD_PVM();
218 fn QUADSPI();
219 fn RCC();
220 fn RNG();
221 fn RTC_Alarm();
222 fn RTC_WKUP();
223 fn SAI1();
224 fn SDMMC1();
225 fn SPI1();
226 fn SPI2();
227 fn SPI3();
228 fn TAMP_STAMP();
229 fn TIM1_BRK_TIM15();
230 fn TIM1_CC();
231 fn TIM1_TRG_COM();
232 fn TIM1_UP_TIM16();
233 fn TIM2();
234 fn TIM3();
235 fn TIM6_DAC();
236 fn TSC();
237 fn UART4();
238 fn USART1();
239 fn USART2();
240 fn USART3();
241 fn WWDG();
242 }
243 pub union Vector {
244 _handler: unsafe extern "C" fn(),
245 _reserved: u32,
246 }
247 #[link_section = ".vector_table.interrupts"]
248 #[no_mangle]
249 pub static __INTERRUPTS: [Vector; 85] = [
250 Vector { _handler: WWDG },
251 Vector { _handler: PVD_PVM },
252 Vector {
253 _handler: TAMP_STAMP,
254 },
255 Vector { _handler: RTC_WKUP },
256 Vector { _handler: FLASH },
257 Vector { _handler: RCC },
258 Vector { _handler: EXTI0 },
259 Vector { _handler: EXTI1 },
260 Vector { _handler: EXTI2 },
261 Vector { _handler: EXTI3 },
262 Vector { _handler: EXTI4 },
263 Vector {
264 _handler: DMA1_Channel1,
265 },
266 Vector {
267 _handler: DMA1_Channel2,
268 },
269 Vector {
270 _handler: DMA1_Channel3,
271 },
272 Vector {
273 _handler: DMA1_Channel4,
274 },
275 Vector {
276 _handler: DMA1_Channel5,
277 },
278 Vector {
279 _handler: DMA1_Channel6,
280 },
281 Vector {
282 _handler: DMA1_Channel7,
283 },
284 Vector { _handler: ADC1 },
285 Vector { _handler: CAN1_TX },
286 Vector { _handler: CAN1_RX0 },
287 Vector { _handler: CAN1_RX1 },
288 Vector { _handler: CAN1_SCE },
289 Vector { _handler: EXTI9_5 },
290 Vector {
291 _handler: TIM1_BRK_TIM15,
292 },
293 Vector {
294 _handler: TIM1_UP_TIM16,
295 },
296 Vector {
297 _handler: TIM1_TRG_COM,
298 },
299 Vector { _handler: TIM1_CC },
300 Vector { _handler: TIM2 },
301 Vector { _handler: TIM3 },
302 Vector { _reserved: 0 },
303 Vector { _handler: I2C1_EV },
304 Vector { _handler: I2C1_ER },
305 Vector { _handler: I2C2_EV },
306 Vector { _handler: I2C2_ER },
307 Vector { _handler: SPI1 },
308 Vector { _handler: SPI2 },
309 Vector { _handler: USART1 },
310 Vector { _handler: USART2 },
311 Vector { _handler: USART3 },
312 Vector {
313 _handler: EXTI15_10,
314 },
315 Vector {
316 _handler: RTC_Alarm,
317 },
318 Vector { _reserved: 0 },
319 Vector { _reserved: 0 },
320 Vector { _reserved: 0 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _handler: SDMMC1 },
326 Vector { _reserved: 0 },
327 Vector { _handler: SPI3 },
328 Vector { _handler: UART4 },
329 Vector { _reserved: 0 },
330 Vector { _handler: TIM6_DAC },
331 Vector { _reserved: 0 },
332 Vector {
333 _handler: DMA2_Channel1,
334 },
335 Vector {
336 _handler: DMA2_Channel2,
337 },
338 Vector {
339 _handler: DMA2_Channel3,
340 },
341 Vector {
342 _handler: DMA2_Channel4,
343 },
344 Vector {
345 _handler: DMA2_Channel5,
346 },
347 Vector {
348 _handler: DFSDM1_FLT0,
349 },
350 Vector {
351 _handler: DFSDM1_FLT1,
352 },
353 Vector { _reserved: 0 },
354 Vector { _handler: COMP },
355 Vector { _handler: LPTIM1 },
356 Vector { _handler: LPTIM2 },
357 Vector { _reserved: 0 },
358 Vector {
359 _handler: DMA2_Channel6,
360 },
361 Vector {
362 _handler: DMA2_Channel7,
363 },
364 Vector { _handler: LPUART1 },
365 Vector { _handler: QUADSPI },
366 Vector { _handler: I2C3_EV },
367 Vector { _handler: I2C3_ER },
368 Vector { _handler: SAI1 },
369 Vector { _reserved: 0 },
370 Vector { _reserved: 0 },
371 Vector { _handler: TSC },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: RNG },
375 Vector { _handler: FPU },
376 Vector { _handler: CRS },
377 Vector { _handler: I2C4_EV },
378 Vector { _handler: I2C4_ER },
379 ];
380}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 381impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 382impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 383impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l451vc.rs b/embassy-stm32/src/chip/stm32l451vc.rs
index af1f601c7..464fdc4ac 100644
--- a/embassy-stm32/src/chip/stm32l451vc.rs
+++ b/embassy-stm32/src/chip/stm32l451vc.rs
@@ -1,18 +1,383 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, 11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC,
12 USART1, USART2, USART3, WWDG 12 UART4, USART1, USART2, USART3, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 WWDG = 0,
95 }
96 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
97 #[inline(always)]
98 fn number(self) -> u16 {
99 self as u16
100 }
101 }
102
103 declare!(ADC1);
104 declare!(CAN1_RX0);
105 declare!(CAN1_RX1);
106 declare!(CAN1_SCE);
107 declare!(CAN1_TX);
108 declare!(COMP);
109 declare!(CRS);
110 declare!(DFSDM1_FLT0);
111 declare!(DFSDM1_FLT1);
112 declare!(DMA1_Channel1);
113 declare!(DMA1_Channel2);
114 declare!(DMA1_Channel3);
115 declare!(DMA1_Channel4);
116 declare!(DMA1_Channel5);
117 declare!(DMA1_Channel6);
118 declare!(DMA1_Channel7);
119 declare!(DMA2_Channel1);
120 declare!(DMA2_Channel2);
121 declare!(DMA2_Channel3);
122 declare!(DMA2_Channel4);
123 declare!(DMA2_Channel5);
124 declare!(DMA2_Channel6);
125 declare!(DMA2_Channel7);
126 declare!(EXTI0);
127 declare!(EXTI1);
128 declare!(EXTI15_10);
129 declare!(EXTI2);
130 declare!(EXTI3);
131 declare!(EXTI4);
132 declare!(EXTI9_5);
133 declare!(FLASH);
134 declare!(FPU);
135 declare!(I2C1_ER);
136 declare!(I2C1_EV);
137 declare!(I2C2_ER);
138 declare!(I2C2_EV);
139 declare!(I2C3_ER);
140 declare!(I2C3_EV);
141 declare!(I2C4_ER);
142 declare!(I2C4_EV);
143 declare!(LPTIM1);
144 declare!(LPTIM2);
145 declare!(LPUART1);
146 declare!(PVD_PVM);
147 declare!(QUADSPI);
148 declare!(RCC);
149 declare!(RNG);
150 declare!(RTC_Alarm);
151 declare!(RTC_WKUP);
152 declare!(SAI1);
153 declare!(SDMMC1);
154 declare!(SPI1);
155 declare!(SPI2);
156 declare!(SPI3);
157 declare!(TAMP_STAMP);
158 declare!(TIM1_BRK_TIM15);
159 declare!(TIM1_CC);
160 declare!(TIM1_TRG_COM);
161 declare!(TIM1_UP_TIM16);
162 declare!(TIM2);
163 declare!(TIM3);
164 declare!(TIM6_DAC);
165 declare!(TSC);
166 declare!(UART4);
167 declare!(USART1);
168 declare!(USART2);
169 declare!(USART3);
170 declare!(WWDG);
171}
172mod interrupt_vector {
173 extern "C" {
174 fn ADC1();
175 fn CAN1_RX0();
176 fn CAN1_RX1();
177 fn CAN1_SCE();
178 fn CAN1_TX();
179 fn COMP();
180 fn CRS();
181 fn DFSDM1_FLT0();
182 fn DFSDM1_FLT1();
183 fn DMA1_Channel1();
184 fn DMA1_Channel2();
185 fn DMA1_Channel3();
186 fn DMA1_Channel4();
187 fn DMA1_Channel5();
188 fn DMA1_Channel6();
189 fn DMA1_Channel7();
190 fn DMA2_Channel1();
191 fn DMA2_Channel2();
192 fn DMA2_Channel3();
193 fn DMA2_Channel4();
194 fn DMA2_Channel5();
195 fn DMA2_Channel6();
196 fn DMA2_Channel7();
197 fn EXTI0();
198 fn EXTI1();
199 fn EXTI15_10();
200 fn EXTI2();
201 fn EXTI3();
202 fn EXTI4();
203 fn EXTI9_5();
204 fn FLASH();
205 fn FPU();
206 fn I2C1_ER();
207 fn I2C1_EV();
208 fn I2C2_ER();
209 fn I2C2_EV();
210 fn I2C3_ER();
211 fn I2C3_EV();
212 fn I2C4_ER();
213 fn I2C4_EV();
214 fn LPTIM1();
215 fn LPTIM2();
216 fn LPUART1();
217 fn PVD_PVM();
218 fn QUADSPI();
219 fn RCC();
220 fn RNG();
221 fn RTC_Alarm();
222 fn RTC_WKUP();
223 fn SAI1();
224 fn SDMMC1();
225 fn SPI1();
226 fn SPI2();
227 fn SPI3();
228 fn TAMP_STAMP();
229 fn TIM1_BRK_TIM15();
230 fn TIM1_CC();
231 fn TIM1_TRG_COM();
232 fn TIM1_UP_TIM16();
233 fn TIM2();
234 fn TIM3();
235 fn TIM6_DAC();
236 fn TSC();
237 fn UART4();
238 fn USART1();
239 fn USART2();
240 fn USART3();
241 fn WWDG();
242 }
243 pub union Vector {
244 _handler: unsafe extern "C" fn(),
245 _reserved: u32,
246 }
247 #[link_section = ".vector_table.interrupts"]
248 #[no_mangle]
249 pub static __INTERRUPTS: [Vector; 85] = [
250 Vector { _handler: WWDG },
251 Vector { _handler: PVD_PVM },
252 Vector {
253 _handler: TAMP_STAMP,
254 },
255 Vector { _handler: RTC_WKUP },
256 Vector { _handler: FLASH },
257 Vector { _handler: RCC },
258 Vector { _handler: EXTI0 },
259 Vector { _handler: EXTI1 },
260 Vector { _handler: EXTI2 },
261 Vector { _handler: EXTI3 },
262 Vector { _handler: EXTI4 },
263 Vector {
264 _handler: DMA1_Channel1,
265 },
266 Vector {
267 _handler: DMA1_Channel2,
268 },
269 Vector {
270 _handler: DMA1_Channel3,
271 },
272 Vector {
273 _handler: DMA1_Channel4,
274 },
275 Vector {
276 _handler: DMA1_Channel5,
277 },
278 Vector {
279 _handler: DMA1_Channel6,
280 },
281 Vector {
282 _handler: DMA1_Channel7,
283 },
284 Vector { _handler: ADC1 },
285 Vector { _handler: CAN1_TX },
286 Vector { _handler: CAN1_RX0 },
287 Vector { _handler: CAN1_RX1 },
288 Vector { _handler: CAN1_SCE },
289 Vector { _handler: EXTI9_5 },
290 Vector {
291 _handler: TIM1_BRK_TIM15,
292 },
293 Vector {
294 _handler: TIM1_UP_TIM16,
295 },
296 Vector {
297 _handler: TIM1_TRG_COM,
298 },
299 Vector { _handler: TIM1_CC },
300 Vector { _handler: TIM2 },
301 Vector { _handler: TIM3 },
302 Vector { _reserved: 0 },
303 Vector { _handler: I2C1_EV },
304 Vector { _handler: I2C1_ER },
305 Vector { _handler: I2C2_EV },
306 Vector { _handler: I2C2_ER },
307 Vector { _handler: SPI1 },
308 Vector { _handler: SPI2 },
309 Vector { _handler: USART1 },
310 Vector { _handler: USART2 },
311 Vector { _handler: USART3 },
312 Vector {
313 _handler: EXTI15_10,
314 },
315 Vector {
316 _handler: RTC_Alarm,
317 },
318 Vector { _reserved: 0 },
319 Vector { _reserved: 0 },
320 Vector { _reserved: 0 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _handler: SDMMC1 },
326 Vector { _reserved: 0 },
327 Vector { _handler: SPI3 },
328 Vector { _handler: UART4 },
329 Vector { _reserved: 0 },
330 Vector { _handler: TIM6_DAC },
331 Vector { _reserved: 0 },
332 Vector {
333 _handler: DMA2_Channel1,
334 },
335 Vector {
336 _handler: DMA2_Channel2,
337 },
338 Vector {
339 _handler: DMA2_Channel3,
340 },
341 Vector {
342 _handler: DMA2_Channel4,
343 },
344 Vector {
345 _handler: DMA2_Channel5,
346 },
347 Vector {
348 _handler: DFSDM1_FLT0,
349 },
350 Vector {
351 _handler: DFSDM1_FLT1,
352 },
353 Vector { _reserved: 0 },
354 Vector { _handler: COMP },
355 Vector { _handler: LPTIM1 },
356 Vector { _handler: LPTIM2 },
357 Vector { _reserved: 0 },
358 Vector {
359 _handler: DMA2_Channel6,
360 },
361 Vector {
362 _handler: DMA2_Channel7,
363 },
364 Vector { _handler: LPUART1 },
365 Vector { _handler: QUADSPI },
366 Vector { _handler: I2C3_EV },
367 Vector { _handler: I2C3_ER },
368 Vector { _handler: SAI1 },
369 Vector { _reserved: 0 },
370 Vector { _reserved: 0 },
371 Vector { _handler: TSC },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: RNG },
375 Vector { _handler: FPU },
376 Vector { _handler: CRS },
377 Vector { _handler: I2C4_EV },
378 Vector { _handler: I2C4_ER },
379 ];
380}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 381impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 382impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 383impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l451ve.rs b/embassy-stm32/src/chip/stm32l451ve.rs
index af1f601c7..464fdc4ac 100644
--- a/embassy-stm32/src/chip/stm32l451ve.rs
+++ b/embassy-stm32/src/chip/stm32l451ve.rs
@@ -1,18 +1,383 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, 11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC,
12 USART1, USART2, USART3, WWDG 12 UART4, USART1, USART2, USART3, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 WWDG = 0,
95 }
96 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
97 #[inline(always)]
98 fn number(self) -> u16 {
99 self as u16
100 }
101 }
102
103 declare!(ADC1);
104 declare!(CAN1_RX0);
105 declare!(CAN1_RX1);
106 declare!(CAN1_SCE);
107 declare!(CAN1_TX);
108 declare!(COMP);
109 declare!(CRS);
110 declare!(DFSDM1_FLT0);
111 declare!(DFSDM1_FLT1);
112 declare!(DMA1_Channel1);
113 declare!(DMA1_Channel2);
114 declare!(DMA1_Channel3);
115 declare!(DMA1_Channel4);
116 declare!(DMA1_Channel5);
117 declare!(DMA1_Channel6);
118 declare!(DMA1_Channel7);
119 declare!(DMA2_Channel1);
120 declare!(DMA2_Channel2);
121 declare!(DMA2_Channel3);
122 declare!(DMA2_Channel4);
123 declare!(DMA2_Channel5);
124 declare!(DMA2_Channel6);
125 declare!(DMA2_Channel7);
126 declare!(EXTI0);
127 declare!(EXTI1);
128 declare!(EXTI15_10);
129 declare!(EXTI2);
130 declare!(EXTI3);
131 declare!(EXTI4);
132 declare!(EXTI9_5);
133 declare!(FLASH);
134 declare!(FPU);
135 declare!(I2C1_ER);
136 declare!(I2C1_EV);
137 declare!(I2C2_ER);
138 declare!(I2C2_EV);
139 declare!(I2C3_ER);
140 declare!(I2C3_EV);
141 declare!(I2C4_ER);
142 declare!(I2C4_EV);
143 declare!(LPTIM1);
144 declare!(LPTIM2);
145 declare!(LPUART1);
146 declare!(PVD_PVM);
147 declare!(QUADSPI);
148 declare!(RCC);
149 declare!(RNG);
150 declare!(RTC_Alarm);
151 declare!(RTC_WKUP);
152 declare!(SAI1);
153 declare!(SDMMC1);
154 declare!(SPI1);
155 declare!(SPI2);
156 declare!(SPI3);
157 declare!(TAMP_STAMP);
158 declare!(TIM1_BRK_TIM15);
159 declare!(TIM1_CC);
160 declare!(TIM1_TRG_COM);
161 declare!(TIM1_UP_TIM16);
162 declare!(TIM2);
163 declare!(TIM3);
164 declare!(TIM6_DAC);
165 declare!(TSC);
166 declare!(UART4);
167 declare!(USART1);
168 declare!(USART2);
169 declare!(USART3);
170 declare!(WWDG);
171}
172mod interrupt_vector {
173 extern "C" {
174 fn ADC1();
175 fn CAN1_RX0();
176 fn CAN1_RX1();
177 fn CAN1_SCE();
178 fn CAN1_TX();
179 fn COMP();
180 fn CRS();
181 fn DFSDM1_FLT0();
182 fn DFSDM1_FLT1();
183 fn DMA1_Channel1();
184 fn DMA1_Channel2();
185 fn DMA1_Channel3();
186 fn DMA1_Channel4();
187 fn DMA1_Channel5();
188 fn DMA1_Channel6();
189 fn DMA1_Channel7();
190 fn DMA2_Channel1();
191 fn DMA2_Channel2();
192 fn DMA2_Channel3();
193 fn DMA2_Channel4();
194 fn DMA2_Channel5();
195 fn DMA2_Channel6();
196 fn DMA2_Channel7();
197 fn EXTI0();
198 fn EXTI1();
199 fn EXTI15_10();
200 fn EXTI2();
201 fn EXTI3();
202 fn EXTI4();
203 fn EXTI9_5();
204 fn FLASH();
205 fn FPU();
206 fn I2C1_ER();
207 fn I2C1_EV();
208 fn I2C2_ER();
209 fn I2C2_EV();
210 fn I2C3_ER();
211 fn I2C3_EV();
212 fn I2C4_ER();
213 fn I2C4_EV();
214 fn LPTIM1();
215 fn LPTIM2();
216 fn LPUART1();
217 fn PVD_PVM();
218 fn QUADSPI();
219 fn RCC();
220 fn RNG();
221 fn RTC_Alarm();
222 fn RTC_WKUP();
223 fn SAI1();
224 fn SDMMC1();
225 fn SPI1();
226 fn SPI2();
227 fn SPI3();
228 fn TAMP_STAMP();
229 fn TIM1_BRK_TIM15();
230 fn TIM1_CC();
231 fn TIM1_TRG_COM();
232 fn TIM1_UP_TIM16();
233 fn TIM2();
234 fn TIM3();
235 fn TIM6_DAC();
236 fn TSC();
237 fn UART4();
238 fn USART1();
239 fn USART2();
240 fn USART3();
241 fn WWDG();
242 }
243 pub union Vector {
244 _handler: unsafe extern "C" fn(),
245 _reserved: u32,
246 }
247 #[link_section = ".vector_table.interrupts"]
248 #[no_mangle]
249 pub static __INTERRUPTS: [Vector; 85] = [
250 Vector { _handler: WWDG },
251 Vector { _handler: PVD_PVM },
252 Vector {
253 _handler: TAMP_STAMP,
254 },
255 Vector { _handler: RTC_WKUP },
256 Vector { _handler: FLASH },
257 Vector { _handler: RCC },
258 Vector { _handler: EXTI0 },
259 Vector { _handler: EXTI1 },
260 Vector { _handler: EXTI2 },
261 Vector { _handler: EXTI3 },
262 Vector { _handler: EXTI4 },
263 Vector {
264 _handler: DMA1_Channel1,
265 },
266 Vector {
267 _handler: DMA1_Channel2,
268 },
269 Vector {
270 _handler: DMA1_Channel3,
271 },
272 Vector {
273 _handler: DMA1_Channel4,
274 },
275 Vector {
276 _handler: DMA1_Channel5,
277 },
278 Vector {
279 _handler: DMA1_Channel6,
280 },
281 Vector {
282 _handler: DMA1_Channel7,
283 },
284 Vector { _handler: ADC1 },
285 Vector { _handler: CAN1_TX },
286 Vector { _handler: CAN1_RX0 },
287 Vector { _handler: CAN1_RX1 },
288 Vector { _handler: CAN1_SCE },
289 Vector { _handler: EXTI9_5 },
290 Vector {
291 _handler: TIM1_BRK_TIM15,
292 },
293 Vector {
294 _handler: TIM1_UP_TIM16,
295 },
296 Vector {
297 _handler: TIM1_TRG_COM,
298 },
299 Vector { _handler: TIM1_CC },
300 Vector { _handler: TIM2 },
301 Vector { _handler: TIM3 },
302 Vector { _reserved: 0 },
303 Vector { _handler: I2C1_EV },
304 Vector { _handler: I2C1_ER },
305 Vector { _handler: I2C2_EV },
306 Vector { _handler: I2C2_ER },
307 Vector { _handler: SPI1 },
308 Vector { _handler: SPI2 },
309 Vector { _handler: USART1 },
310 Vector { _handler: USART2 },
311 Vector { _handler: USART3 },
312 Vector {
313 _handler: EXTI15_10,
314 },
315 Vector {
316 _handler: RTC_Alarm,
317 },
318 Vector { _reserved: 0 },
319 Vector { _reserved: 0 },
320 Vector { _reserved: 0 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _handler: SDMMC1 },
326 Vector { _reserved: 0 },
327 Vector { _handler: SPI3 },
328 Vector { _handler: UART4 },
329 Vector { _reserved: 0 },
330 Vector { _handler: TIM6_DAC },
331 Vector { _reserved: 0 },
332 Vector {
333 _handler: DMA2_Channel1,
334 },
335 Vector {
336 _handler: DMA2_Channel2,
337 },
338 Vector {
339 _handler: DMA2_Channel3,
340 },
341 Vector {
342 _handler: DMA2_Channel4,
343 },
344 Vector {
345 _handler: DMA2_Channel5,
346 },
347 Vector {
348 _handler: DFSDM1_FLT0,
349 },
350 Vector {
351 _handler: DFSDM1_FLT1,
352 },
353 Vector { _reserved: 0 },
354 Vector { _handler: COMP },
355 Vector { _handler: LPTIM1 },
356 Vector { _handler: LPTIM2 },
357 Vector { _reserved: 0 },
358 Vector {
359 _handler: DMA2_Channel6,
360 },
361 Vector {
362 _handler: DMA2_Channel7,
363 },
364 Vector { _handler: LPUART1 },
365 Vector { _handler: QUADSPI },
366 Vector { _handler: I2C3_EV },
367 Vector { _handler: I2C3_ER },
368 Vector { _handler: SAI1 },
369 Vector { _reserved: 0 },
370 Vector { _reserved: 0 },
371 Vector { _handler: TSC },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: RNG },
375 Vector { _handler: FPU },
376 Vector { _handler: CRS },
377 Vector { _handler: I2C4_EV },
378 Vector { _handler: I2C4_ER },
379 ];
380}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 381impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 382impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 383impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l452cc.rs b/embassy-stm32/src/chip/stm32l452cc.rs
index 9c348ae47..ef4a256e5 100644
--- a/embassy-stm32/src/chip/stm32l452cc.rs
+++ b/embassy-stm32/src/chip/stm32l452cc.rs
@@ -1,18 +1,386 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, USART1, 11 RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4,
12 USART2, USART3, USB, WWDG 12 USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 USB = 67,
95 WWDG = 0,
96 }
97 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
98 #[inline(always)]
99 fn number(self) -> u16 {
100 self as u16
101 }
102 }
103
104 declare!(ADC1);
105 declare!(CAN1_RX0);
106 declare!(CAN1_RX1);
107 declare!(CAN1_SCE);
108 declare!(CAN1_TX);
109 declare!(COMP);
110 declare!(CRS);
111 declare!(DFSDM1_FLT0);
112 declare!(DFSDM1_FLT1);
113 declare!(DMA1_Channel1);
114 declare!(DMA1_Channel2);
115 declare!(DMA1_Channel3);
116 declare!(DMA1_Channel4);
117 declare!(DMA1_Channel5);
118 declare!(DMA1_Channel6);
119 declare!(DMA1_Channel7);
120 declare!(DMA2_Channel1);
121 declare!(DMA2_Channel2);
122 declare!(DMA2_Channel3);
123 declare!(DMA2_Channel4);
124 declare!(DMA2_Channel5);
125 declare!(DMA2_Channel6);
126 declare!(DMA2_Channel7);
127 declare!(EXTI0);
128 declare!(EXTI1);
129 declare!(EXTI15_10);
130 declare!(EXTI2);
131 declare!(EXTI3);
132 declare!(EXTI4);
133 declare!(EXTI9_5);
134 declare!(FLASH);
135 declare!(FPU);
136 declare!(I2C1_ER);
137 declare!(I2C1_EV);
138 declare!(I2C2_ER);
139 declare!(I2C2_EV);
140 declare!(I2C3_ER);
141 declare!(I2C3_EV);
142 declare!(I2C4_ER);
143 declare!(I2C4_EV);
144 declare!(LPTIM1);
145 declare!(LPTIM2);
146 declare!(LPUART1);
147 declare!(PVD_PVM);
148 declare!(QUADSPI);
149 declare!(RCC);
150 declare!(RNG);
151 declare!(RTC_Alarm);
152 declare!(RTC_WKUP);
153 declare!(SAI1);
154 declare!(SDMMC1);
155 declare!(SPI1);
156 declare!(SPI2);
157 declare!(SPI3);
158 declare!(TAMP_STAMP);
159 declare!(TIM1_BRK_TIM15);
160 declare!(TIM1_CC);
161 declare!(TIM1_TRG_COM);
162 declare!(TIM1_UP_TIM16);
163 declare!(TIM2);
164 declare!(TIM3);
165 declare!(TIM6_DAC);
166 declare!(TSC);
167 declare!(UART4);
168 declare!(USART1);
169 declare!(USART2);
170 declare!(USART3);
171 declare!(USB);
172 declare!(WWDG);
173}
174mod interrupt_vector {
175 extern "C" {
176 fn ADC1();
177 fn CAN1_RX0();
178 fn CAN1_RX1();
179 fn CAN1_SCE();
180 fn CAN1_TX();
181 fn COMP();
182 fn CRS();
183 fn DFSDM1_FLT0();
184 fn DFSDM1_FLT1();
185 fn DMA1_Channel1();
186 fn DMA1_Channel2();
187 fn DMA1_Channel3();
188 fn DMA1_Channel4();
189 fn DMA1_Channel5();
190 fn DMA1_Channel6();
191 fn DMA1_Channel7();
192 fn DMA2_Channel1();
193 fn DMA2_Channel2();
194 fn DMA2_Channel3();
195 fn DMA2_Channel4();
196 fn DMA2_Channel5();
197 fn DMA2_Channel6();
198 fn DMA2_Channel7();
199 fn EXTI0();
200 fn EXTI1();
201 fn EXTI15_10();
202 fn EXTI2();
203 fn EXTI3();
204 fn EXTI4();
205 fn EXTI9_5();
206 fn FLASH();
207 fn FPU();
208 fn I2C1_ER();
209 fn I2C1_EV();
210 fn I2C2_ER();
211 fn I2C2_EV();
212 fn I2C3_ER();
213 fn I2C3_EV();
214 fn I2C4_ER();
215 fn I2C4_EV();
216 fn LPTIM1();
217 fn LPTIM2();
218 fn LPUART1();
219 fn PVD_PVM();
220 fn QUADSPI();
221 fn RCC();
222 fn RNG();
223 fn RTC_Alarm();
224 fn RTC_WKUP();
225 fn SAI1();
226 fn SDMMC1();
227 fn SPI1();
228 fn SPI2();
229 fn SPI3();
230 fn TAMP_STAMP();
231 fn TIM1_BRK_TIM15();
232 fn TIM1_CC();
233 fn TIM1_TRG_COM();
234 fn TIM1_UP_TIM16();
235 fn TIM2();
236 fn TIM3();
237 fn TIM6_DAC();
238 fn TSC();
239 fn UART4();
240 fn USART1();
241 fn USART2();
242 fn USART3();
243 fn USB();
244 fn WWDG();
245 }
246 pub union Vector {
247 _handler: unsafe extern "C" fn(),
248 _reserved: u32,
249 }
250 #[link_section = ".vector_table.interrupts"]
251 #[no_mangle]
252 pub static __INTERRUPTS: [Vector; 85] = [
253 Vector { _handler: WWDG },
254 Vector { _handler: PVD_PVM },
255 Vector {
256 _handler: TAMP_STAMP,
257 },
258 Vector { _handler: RTC_WKUP },
259 Vector { _handler: FLASH },
260 Vector { _handler: RCC },
261 Vector { _handler: EXTI0 },
262 Vector { _handler: EXTI1 },
263 Vector { _handler: EXTI2 },
264 Vector { _handler: EXTI3 },
265 Vector { _handler: EXTI4 },
266 Vector {
267 _handler: DMA1_Channel1,
268 },
269 Vector {
270 _handler: DMA1_Channel2,
271 },
272 Vector {
273 _handler: DMA1_Channel3,
274 },
275 Vector {
276 _handler: DMA1_Channel4,
277 },
278 Vector {
279 _handler: DMA1_Channel5,
280 },
281 Vector {
282 _handler: DMA1_Channel6,
283 },
284 Vector {
285 _handler: DMA1_Channel7,
286 },
287 Vector { _handler: ADC1 },
288 Vector { _handler: CAN1_TX },
289 Vector { _handler: CAN1_RX0 },
290 Vector { _handler: CAN1_RX1 },
291 Vector { _handler: CAN1_SCE },
292 Vector { _handler: EXTI9_5 },
293 Vector {
294 _handler: TIM1_BRK_TIM15,
295 },
296 Vector {
297 _handler: TIM1_UP_TIM16,
298 },
299 Vector {
300 _handler: TIM1_TRG_COM,
301 },
302 Vector { _handler: TIM1_CC },
303 Vector { _handler: TIM2 },
304 Vector { _handler: TIM3 },
305 Vector { _reserved: 0 },
306 Vector { _handler: I2C1_EV },
307 Vector { _handler: I2C1_ER },
308 Vector { _handler: I2C2_EV },
309 Vector { _handler: I2C2_ER },
310 Vector { _handler: SPI1 },
311 Vector { _handler: SPI2 },
312 Vector { _handler: USART1 },
313 Vector { _handler: USART2 },
314 Vector { _handler: USART3 },
315 Vector {
316 _handler: EXTI15_10,
317 },
318 Vector {
319 _handler: RTC_Alarm,
320 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _handler: SDMMC1 },
329 Vector { _reserved: 0 },
330 Vector { _handler: SPI3 },
331 Vector { _handler: UART4 },
332 Vector { _reserved: 0 },
333 Vector { _handler: TIM6_DAC },
334 Vector { _reserved: 0 },
335 Vector {
336 _handler: DMA2_Channel1,
337 },
338 Vector {
339 _handler: DMA2_Channel2,
340 },
341 Vector {
342 _handler: DMA2_Channel3,
343 },
344 Vector {
345 _handler: DMA2_Channel4,
346 },
347 Vector {
348 _handler: DMA2_Channel5,
349 },
350 Vector {
351 _handler: DFSDM1_FLT0,
352 },
353 Vector {
354 _handler: DFSDM1_FLT1,
355 },
356 Vector { _reserved: 0 },
357 Vector { _handler: COMP },
358 Vector { _handler: LPTIM1 },
359 Vector { _handler: LPTIM2 },
360 Vector { _handler: USB },
361 Vector {
362 _handler: DMA2_Channel6,
363 },
364 Vector {
365 _handler: DMA2_Channel7,
366 },
367 Vector { _handler: LPUART1 },
368 Vector { _handler: QUADSPI },
369 Vector { _handler: I2C3_EV },
370 Vector { _handler: I2C3_ER },
371 Vector { _handler: SAI1 },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: TSC },
375 Vector { _reserved: 0 },
376 Vector { _reserved: 0 },
377 Vector { _handler: RNG },
378 Vector { _handler: FPU },
379 Vector { _handler: CRS },
380 Vector { _handler: I2C4_EV },
381 Vector { _handler: I2C4_ER },
382 ];
383}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 384impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 385impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 386impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l452ce.rs b/embassy-stm32/src/chip/stm32l452ce.rs
index 9c348ae47..ef4a256e5 100644
--- a/embassy-stm32/src/chip/stm32l452ce.rs
+++ b/embassy-stm32/src/chip/stm32l452ce.rs
@@ -1,18 +1,386 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, USART1, 11 RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4,
12 USART2, USART3, USB, WWDG 12 USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 USB = 67,
95 WWDG = 0,
96 }
97 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
98 #[inline(always)]
99 fn number(self) -> u16 {
100 self as u16
101 }
102 }
103
104 declare!(ADC1);
105 declare!(CAN1_RX0);
106 declare!(CAN1_RX1);
107 declare!(CAN1_SCE);
108 declare!(CAN1_TX);
109 declare!(COMP);
110 declare!(CRS);
111 declare!(DFSDM1_FLT0);
112 declare!(DFSDM1_FLT1);
113 declare!(DMA1_Channel1);
114 declare!(DMA1_Channel2);
115 declare!(DMA1_Channel3);
116 declare!(DMA1_Channel4);
117 declare!(DMA1_Channel5);
118 declare!(DMA1_Channel6);
119 declare!(DMA1_Channel7);
120 declare!(DMA2_Channel1);
121 declare!(DMA2_Channel2);
122 declare!(DMA2_Channel3);
123 declare!(DMA2_Channel4);
124 declare!(DMA2_Channel5);
125 declare!(DMA2_Channel6);
126 declare!(DMA2_Channel7);
127 declare!(EXTI0);
128 declare!(EXTI1);
129 declare!(EXTI15_10);
130 declare!(EXTI2);
131 declare!(EXTI3);
132 declare!(EXTI4);
133 declare!(EXTI9_5);
134 declare!(FLASH);
135 declare!(FPU);
136 declare!(I2C1_ER);
137 declare!(I2C1_EV);
138 declare!(I2C2_ER);
139 declare!(I2C2_EV);
140 declare!(I2C3_ER);
141 declare!(I2C3_EV);
142 declare!(I2C4_ER);
143 declare!(I2C4_EV);
144 declare!(LPTIM1);
145 declare!(LPTIM2);
146 declare!(LPUART1);
147 declare!(PVD_PVM);
148 declare!(QUADSPI);
149 declare!(RCC);
150 declare!(RNG);
151 declare!(RTC_Alarm);
152 declare!(RTC_WKUP);
153 declare!(SAI1);
154 declare!(SDMMC1);
155 declare!(SPI1);
156 declare!(SPI2);
157 declare!(SPI3);
158 declare!(TAMP_STAMP);
159 declare!(TIM1_BRK_TIM15);
160 declare!(TIM1_CC);
161 declare!(TIM1_TRG_COM);
162 declare!(TIM1_UP_TIM16);
163 declare!(TIM2);
164 declare!(TIM3);
165 declare!(TIM6_DAC);
166 declare!(TSC);
167 declare!(UART4);
168 declare!(USART1);
169 declare!(USART2);
170 declare!(USART3);
171 declare!(USB);
172 declare!(WWDG);
173}
174mod interrupt_vector {
175 extern "C" {
176 fn ADC1();
177 fn CAN1_RX0();
178 fn CAN1_RX1();
179 fn CAN1_SCE();
180 fn CAN1_TX();
181 fn COMP();
182 fn CRS();
183 fn DFSDM1_FLT0();
184 fn DFSDM1_FLT1();
185 fn DMA1_Channel1();
186 fn DMA1_Channel2();
187 fn DMA1_Channel3();
188 fn DMA1_Channel4();
189 fn DMA1_Channel5();
190 fn DMA1_Channel6();
191 fn DMA1_Channel7();
192 fn DMA2_Channel1();
193 fn DMA2_Channel2();
194 fn DMA2_Channel3();
195 fn DMA2_Channel4();
196 fn DMA2_Channel5();
197 fn DMA2_Channel6();
198 fn DMA2_Channel7();
199 fn EXTI0();
200 fn EXTI1();
201 fn EXTI15_10();
202 fn EXTI2();
203 fn EXTI3();
204 fn EXTI4();
205 fn EXTI9_5();
206 fn FLASH();
207 fn FPU();
208 fn I2C1_ER();
209 fn I2C1_EV();
210 fn I2C2_ER();
211 fn I2C2_EV();
212 fn I2C3_ER();
213 fn I2C3_EV();
214 fn I2C4_ER();
215 fn I2C4_EV();
216 fn LPTIM1();
217 fn LPTIM2();
218 fn LPUART1();
219 fn PVD_PVM();
220 fn QUADSPI();
221 fn RCC();
222 fn RNG();
223 fn RTC_Alarm();
224 fn RTC_WKUP();
225 fn SAI1();
226 fn SDMMC1();
227 fn SPI1();
228 fn SPI2();
229 fn SPI3();
230 fn TAMP_STAMP();
231 fn TIM1_BRK_TIM15();
232 fn TIM1_CC();
233 fn TIM1_TRG_COM();
234 fn TIM1_UP_TIM16();
235 fn TIM2();
236 fn TIM3();
237 fn TIM6_DAC();
238 fn TSC();
239 fn UART4();
240 fn USART1();
241 fn USART2();
242 fn USART3();
243 fn USB();
244 fn WWDG();
245 }
246 pub union Vector {
247 _handler: unsafe extern "C" fn(),
248 _reserved: u32,
249 }
250 #[link_section = ".vector_table.interrupts"]
251 #[no_mangle]
252 pub static __INTERRUPTS: [Vector; 85] = [
253 Vector { _handler: WWDG },
254 Vector { _handler: PVD_PVM },
255 Vector {
256 _handler: TAMP_STAMP,
257 },
258 Vector { _handler: RTC_WKUP },
259 Vector { _handler: FLASH },
260 Vector { _handler: RCC },
261 Vector { _handler: EXTI0 },
262 Vector { _handler: EXTI1 },
263 Vector { _handler: EXTI2 },
264 Vector { _handler: EXTI3 },
265 Vector { _handler: EXTI4 },
266 Vector {
267 _handler: DMA1_Channel1,
268 },
269 Vector {
270 _handler: DMA1_Channel2,
271 },
272 Vector {
273 _handler: DMA1_Channel3,
274 },
275 Vector {
276 _handler: DMA1_Channel4,
277 },
278 Vector {
279 _handler: DMA1_Channel5,
280 },
281 Vector {
282 _handler: DMA1_Channel6,
283 },
284 Vector {
285 _handler: DMA1_Channel7,
286 },
287 Vector { _handler: ADC1 },
288 Vector { _handler: CAN1_TX },
289 Vector { _handler: CAN1_RX0 },
290 Vector { _handler: CAN1_RX1 },
291 Vector { _handler: CAN1_SCE },
292 Vector { _handler: EXTI9_5 },
293 Vector {
294 _handler: TIM1_BRK_TIM15,
295 },
296 Vector {
297 _handler: TIM1_UP_TIM16,
298 },
299 Vector {
300 _handler: TIM1_TRG_COM,
301 },
302 Vector { _handler: TIM1_CC },
303 Vector { _handler: TIM2 },
304 Vector { _handler: TIM3 },
305 Vector { _reserved: 0 },
306 Vector { _handler: I2C1_EV },
307 Vector { _handler: I2C1_ER },
308 Vector { _handler: I2C2_EV },
309 Vector { _handler: I2C2_ER },
310 Vector { _handler: SPI1 },
311 Vector { _handler: SPI2 },
312 Vector { _handler: USART1 },
313 Vector { _handler: USART2 },
314 Vector { _handler: USART3 },
315 Vector {
316 _handler: EXTI15_10,
317 },
318 Vector {
319 _handler: RTC_Alarm,
320 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _handler: SDMMC1 },
329 Vector { _reserved: 0 },
330 Vector { _handler: SPI3 },
331 Vector { _handler: UART4 },
332 Vector { _reserved: 0 },
333 Vector { _handler: TIM6_DAC },
334 Vector { _reserved: 0 },
335 Vector {
336 _handler: DMA2_Channel1,
337 },
338 Vector {
339 _handler: DMA2_Channel2,
340 },
341 Vector {
342 _handler: DMA2_Channel3,
343 },
344 Vector {
345 _handler: DMA2_Channel4,
346 },
347 Vector {
348 _handler: DMA2_Channel5,
349 },
350 Vector {
351 _handler: DFSDM1_FLT0,
352 },
353 Vector {
354 _handler: DFSDM1_FLT1,
355 },
356 Vector { _reserved: 0 },
357 Vector { _handler: COMP },
358 Vector { _handler: LPTIM1 },
359 Vector { _handler: LPTIM2 },
360 Vector { _handler: USB },
361 Vector {
362 _handler: DMA2_Channel6,
363 },
364 Vector {
365 _handler: DMA2_Channel7,
366 },
367 Vector { _handler: LPUART1 },
368 Vector { _handler: QUADSPI },
369 Vector { _handler: I2C3_EV },
370 Vector { _handler: I2C3_ER },
371 Vector { _handler: SAI1 },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: TSC },
375 Vector { _reserved: 0 },
376 Vector { _reserved: 0 },
377 Vector { _handler: RNG },
378 Vector { _handler: FPU },
379 Vector { _handler: CRS },
380 Vector { _handler: I2C4_EV },
381 Vector { _handler: I2C4_ER },
382 ];
383}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 384impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 385impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 386impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l452rc.rs b/embassy-stm32/src/chip/stm32l452rc.rs
index 5b23cead2..05eaeda97 100644
--- a/embassy-stm32/src/chip/stm32l452rc.rs
+++ b/embassy-stm32/src/chip/stm32l452rc.rs
@@ -1,18 +1,386 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, 11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC,
12 USART1, USART2, USART3, USB, WWDG 12 UART4, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 USB = 67,
95 WWDG = 0,
96 }
97 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
98 #[inline(always)]
99 fn number(self) -> u16 {
100 self as u16
101 }
102 }
103
104 declare!(ADC1);
105 declare!(CAN1_RX0);
106 declare!(CAN1_RX1);
107 declare!(CAN1_SCE);
108 declare!(CAN1_TX);
109 declare!(COMP);
110 declare!(CRS);
111 declare!(DFSDM1_FLT0);
112 declare!(DFSDM1_FLT1);
113 declare!(DMA1_Channel1);
114 declare!(DMA1_Channel2);
115 declare!(DMA1_Channel3);
116 declare!(DMA1_Channel4);
117 declare!(DMA1_Channel5);
118 declare!(DMA1_Channel6);
119 declare!(DMA1_Channel7);
120 declare!(DMA2_Channel1);
121 declare!(DMA2_Channel2);
122 declare!(DMA2_Channel3);
123 declare!(DMA2_Channel4);
124 declare!(DMA2_Channel5);
125 declare!(DMA2_Channel6);
126 declare!(DMA2_Channel7);
127 declare!(EXTI0);
128 declare!(EXTI1);
129 declare!(EXTI15_10);
130 declare!(EXTI2);
131 declare!(EXTI3);
132 declare!(EXTI4);
133 declare!(EXTI9_5);
134 declare!(FLASH);
135 declare!(FPU);
136 declare!(I2C1_ER);
137 declare!(I2C1_EV);
138 declare!(I2C2_ER);
139 declare!(I2C2_EV);
140 declare!(I2C3_ER);
141 declare!(I2C3_EV);
142 declare!(I2C4_ER);
143 declare!(I2C4_EV);
144 declare!(LPTIM1);
145 declare!(LPTIM2);
146 declare!(LPUART1);
147 declare!(PVD_PVM);
148 declare!(QUADSPI);
149 declare!(RCC);
150 declare!(RNG);
151 declare!(RTC_Alarm);
152 declare!(RTC_WKUP);
153 declare!(SAI1);
154 declare!(SDMMC1);
155 declare!(SPI1);
156 declare!(SPI2);
157 declare!(SPI3);
158 declare!(TAMP_STAMP);
159 declare!(TIM1_BRK_TIM15);
160 declare!(TIM1_CC);
161 declare!(TIM1_TRG_COM);
162 declare!(TIM1_UP_TIM16);
163 declare!(TIM2);
164 declare!(TIM3);
165 declare!(TIM6_DAC);
166 declare!(TSC);
167 declare!(UART4);
168 declare!(USART1);
169 declare!(USART2);
170 declare!(USART3);
171 declare!(USB);
172 declare!(WWDG);
173}
174mod interrupt_vector {
175 extern "C" {
176 fn ADC1();
177 fn CAN1_RX0();
178 fn CAN1_RX1();
179 fn CAN1_SCE();
180 fn CAN1_TX();
181 fn COMP();
182 fn CRS();
183 fn DFSDM1_FLT0();
184 fn DFSDM1_FLT1();
185 fn DMA1_Channel1();
186 fn DMA1_Channel2();
187 fn DMA1_Channel3();
188 fn DMA1_Channel4();
189 fn DMA1_Channel5();
190 fn DMA1_Channel6();
191 fn DMA1_Channel7();
192 fn DMA2_Channel1();
193 fn DMA2_Channel2();
194 fn DMA2_Channel3();
195 fn DMA2_Channel4();
196 fn DMA2_Channel5();
197 fn DMA2_Channel6();
198 fn DMA2_Channel7();
199 fn EXTI0();
200 fn EXTI1();
201 fn EXTI15_10();
202 fn EXTI2();
203 fn EXTI3();
204 fn EXTI4();
205 fn EXTI9_5();
206 fn FLASH();
207 fn FPU();
208 fn I2C1_ER();
209 fn I2C1_EV();
210 fn I2C2_ER();
211 fn I2C2_EV();
212 fn I2C3_ER();
213 fn I2C3_EV();
214 fn I2C4_ER();
215 fn I2C4_EV();
216 fn LPTIM1();
217 fn LPTIM2();
218 fn LPUART1();
219 fn PVD_PVM();
220 fn QUADSPI();
221 fn RCC();
222 fn RNG();
223 fn RTC_Alarm();
224 fn RTC_WKUP();
225 fn SAI1();
226 fn SDMMC1();
227 fn SPI1();
228 fn SPI2();
229 fn SPI3();
230 fn TAMP_STAMP();
231 fn TIM1_BRK_TIM15();
232 fn TIM1_CC();
233 fn TIM1_TRG_COM();
234 fn TIM1_UP_TIM16();
235 fn TIM2();
236 fn TIM3();
237 fn TIM6_DAC();
238 fn TSC();
239 fn UART4();
240 fn USART1();
241 fn USART2();
242 fn USART3();
243 fn USB();
244 fn WWDG();
245 }
246 pub union Vector {
247 _handler: unsafe extern "C" fn(),
248 _reserved: u32,
249 }
250 #[link_section = ".vector_table.interrupts"]
251 #[no_mangle]
252 pub static __INTERRUPTS: [Vector; 85] = [
253 Vector { _handler: WWDG },
254 Vector { _handler: PVD_PVM },
255 Vector {
256 _handler: TAMP_STAMP,
257 },
258 Vector { _handler: RTC_WKUP },
259 Vector { _handler: FLASH },
260 Vector { _handler: RCC },
261 Vector { _handler: EXTI0 },
262 Vector { _handler: EXTI1 },
263 Vector { _handler: EXTI2 },
264 Vector { _handler: EXTI3 },
265 Vector { _handler: EXTI4 },
266 Vector {
267 _handler: DMA1_Channel1,
268 },
269 Vector {
270 _handler: DMA1_Channel2,
271 },
272 Vector {
273 _handler: DMA1_Channel3,
274 },
275 Vector {
276 _handler: DMA1_Channel4,
277 },
278 Vector {
279 _handler: DMA1_Channel5,
280 },
281 Vector {
282 _handler: DMA1_Channel6,
283 },
284 Vector {
285 _handler: DMA1_Channel7,
286 },
287 Vector { _handler: ADC1 },
288 Vector { _handler: CAN1_TX },
289 Vector { _handler: CAN1_RX0 },
290 Vector { _handler: CAN1_RX1 },
291 Vector { _handler: CAN1_SCE },
292 Vector { _handler: EXTI9_5 },
293 Vector {
294 _handler: TIM1_BRK_TIM15,
295 },
296 Vector {
297 _handler: TIM1_UP_TIM16,
298 },
299 Vector {
300 _handler: TIM1_TRG_COM,
301 },
302 Vector { _handler: TIM1_CC },
303 Vector { _handler: TIM2 },
304 Vector { _handler: TIM3 },
305 Vector { _reserved: 0 },
306 Vector { _handler: I2C1_EV },
307 Vector { _handler: I2C1_ER },
308 Vector { _handler: I2C2_EV },
309 Vector { _handler: I2C2_ER },
310 Vector { _handler: SPI1 },
311 Vector { _handler: SPI2 },
312 Vector { _handler: USART1 },
313 Vector { _handler: USART2 },
314 Vector { _handler: USART3 },
315 Vector {
316 _handler: EXTI15_10,
317 },
318 Vector {
319 _handler: RTC_Alarm,
320 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _handler: SDMMC1 },
329 Vector { _reserved: 0 },
330 Vector { _handler: SPI3 },
331 Vector { _handler: UART4 },
332 Vector { _reserved: 0 },
333 Vector { _handler: TIM6_DAC },
334 Vector { _reserved: 0 },
335 Vector {
336 _handler: DMA2_Channel1,
337 },
338 Vector {
339 _handler: DMA2_Channel2,
340 },
341 Vector {
342 _handler: DMA2_Channel3,
343 },
344 Vector {
345 _handler: DMA2_Channel4,
346 },
347 Vector {
348 _handler: DMA2_Channel5,
349 },
350 Vector {
351 _handler: DFSDM1_FLT0,
352 },
353 Vector {
354 _handler: DFSDM1_FLT1,
355 },
356 Vector { _reserved: 0 },
357 Vector { _handler: COMP },
358 Vector { _handler: LPTIM1 },
359 Vector { _handler: LPTIM2 },
360 Vector { _handler: USB },
361 Vector {
362 _handler: DMA2_Channel6,
363 },
364 Vector {
365 _handler: DMA2_Channel7,
366 },
367 Vector { _handler: LPUART1 },
368 Vector { _handler: QUADSPI },
369 Vector { _handler: I2C3_EV },
370 Vector { _handler: I2C3_ER },
371 Vector { _handler: SAI1 },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: TSC },
375 Vector { _reserved: 0 },
376 Vector { _reserved: 0 },
377 Vector { _handler: RNG },
378 Vector { _handler: FPU },
379 Vector { _handler: CRS },
380 Vector { _handler: I2C4_EV },
381 Vector { _handler: I2C4_ER },
382 ];
383}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 384impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 385impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 386impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l452re.rs b/embassy-stm32/src/chip/stm32l452re.rs
index 5b23cead2..05eaeda97 100644
--- a/embassy-stm32/src/chip/stm32l452re.rs
+++ b/embassy-stm32/src/chip/stm32l452re.rs
@@ -1,18 +1,386 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, 11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC,
12 USART1, USART2, USART3, USB, WWDG 12 UART4, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 USB = 67,
95 WWDG = 0,
96 }
97 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
98 #[inline(always)]
99 fn number(self) -> u16 {
100 self as u16
101 }
102 }
103
104 declare!(ADC1);
105 declare!(CAN1_RX0);
106 declare!(CAN1_RX1);
107 declare!(CAN1_SCE);
108 declare!(CAN1_TX);
109 declare!(COMP);
110 declare!(CRS);
111 declare!(DFSDM1_FLT0);
112 declare!(DFSDM1_FLT1);
113 declare!(DMA1_Channel1);
114 declare!(DMA1_Channel2);
115 declare!(DMA1_Channel3);
116 declare!(DMA1_Channel4);
117 declare!(DMA1_Channel5);
118 declare!(DMA1_Channel6);
119 declare!(DMA1_Channel7);
120 declare!(DMA2_Channel1);
121 declare!(DMA2_Channel2);
122 declare!(DMA2_Channel3);
123 declare!(DMA2_Channel4);
124 declare!(DMA2_Channel5);
125 declare!(DMA2_Channel6);
126 declare!(DMA2_Channel7);
127 declare!(EXTI0);
128 declare!(EXTI1);
129 declare!(EXTI15_10);
130 declare!(EXTI2);
131 declare!(EXTI3);
132 declare!(EXTI4);
133 declare!(EXTI9_5);
134 declare!(FLASH);
135 declare!(FPU);
136 declare!(I2C1_ER);
137 declare!(I2C1_EV);
138 declare!(I2C2_ER);
139 declare!(I2C2_EV);
140 declare!(I2C3_ER);
141 declare!(I2C3_EV);
142 declare!(I2C4_ER);
143 declare!(I2C4_EV);
144 declare!(LPTIM1);
145 declare!(LPTIM2);
146 declare!(LPUART1);
147 declare!(PVD_PVM);
148 declare!(QUADSPI);
149 declare!(RCC);
150 declare!(RNG);
151 declare!(RTC_Alarm);
152 declare!(RTC_WKUP);
153 declare!(SAI1);
154 declare!(SDMMC1);
155 declare!(SPI1);
156 declare!(SPI2);
157 declare!(SPI3);
158 declare!(TAMP_STAMP);
159 declare!(TIM1_BRK_TIM15);
160 declare!(TIM1_CC);
161 declare!(TIM1_TRG_COM);
162 declare!(TIM1_UP_TIM16);
163 declare!(TIM2);
164 declare!(TIM3);
165 declare!(TIM6_DAC);
166 declare!(TSC);
167 declare!(UART4);
168 declare!(USART1);
169 declare!(USART2);
170 declare!(USART3);
171 declare!(USB);
172 declare!(WWDG);
173}
174mod interrupt_vector {
175 extern "C" {
176 fn ADC1();
177 fn CAN1_RX0();
178 fn CAN1_RX1();
179 fn CAN1_SCE();
180 fn CAN1_TX();
181 fn COMP();
182 fn CRS();
183 fn DFSDM1_FLT0();
184 fn DFSDM1_FLT1();
185 fn DMA1_Channel1();
186 fn DMA1_Channel2();
187 fn DMA1_Channel3();
188 fn DMA1_Channel4();
189 fn DMA1_Channel5();
190 fn DMA1_Channel6();
191 fn DMA1_Channel7();
192 fn DMA2_Channel1();
193 fn DMA2_Channel2();
194 fn DMA2_Channel3();
195 fn DMA2_Channel4();
196 fn DMA2_Channel5();
197 fn DMA2_Channel6();
198 fn DMA2_Channel7();
199 fn EXTI0();
200 fn EXTI1();
201 fn EXTI15_10();
202 fn EXTI2();
203 fn EXTI3();
204 fn EXTI4();
205 fn EXTI9_5();
206 fn FLASH();
207 fn FPU();
208 fn I2C1_ER();
209 fn I2C1_EV();
210 fn I2C2_ER();
211 fn I2C2_EV();
212 fn I2C3_ER();
213 fn I2C3_EV();
214 fn I2C4_ER();
215 fn I2C4_EV();
216 fn LPTIM1();
217 fn LPTIM2();
218 fn LPUART1();
219 fn PVD_PVM();
220 fn QUADSPI();
221 fn RCC();
222 fn RNG();
223 fn RTC_Alarm();
224 fn RTC_WKUP();
225 fn SAI1();
226 fn SDMMC1();
227 fn SPI1();
228 fn SPI2();
229 fn SPI3();
230 fn TAMP_STAMP();
231 fn TIM1_BRK_TIM15();
232 fn TIM1_CC();
233 fn TIM1_TRG_COM();
234 fn TIM1_UP_TIM16();
235 fn TIM2();
236 fn TIM3();
237 fn TIM6_DAC();
238 fn TSC();
239 fn UART4();
240 fn USART1();
241 fn USART2();
242 fn USART3();
243 fn USB();
244 fn WWDG();
245 }
246 pub union Vector {
247 _handler: unsafe extern "C" fn(),
248 _reserved: u32,
249 }
250 #[link_section = ".vector_table.interrupts"]
251 #[no_mangle]
252 pub static __INTERRUPTS: [Vector; 85] = [
253 Vector { _handler: WWDG },
254 Vector { _handler: PVD_PVM },
255 Vector {
256 _handler: TAMP_STAMP,
257 },
258 Vector { _handler: RTC_WKUP },
259 Vector { _handler: FLASH },
260 Vector { _handler: RCC },
261 Vector { _handler: EXTI0 },
262 Vector { _handler: EXTI1 },
263 Vector { _handler: EXTI2 },
264 Vector { _handler: EXTI3 },
265 Vector { _handler: EXTI4 },
266 Vector {
267 _handler: DMA1_Channel1,
268 },
269 Vector {
270 _handler: DMA1_Channel2,
271 },
272 Vector {
273 _handler: DMA1_Channel3,
274 },
275 Vector {
276 _handler: DMA1_Channel4,
277 },
278 Vector {
279 _handler: DMA1_Channel5,
280 },
281 Vector {
282 _handler: DMA1_Channel6,
283 },
284 Vector {
285 _handler: DMA1_Channel7,
286 },
287 Vector { _handler: ADC1 },
288 Vector { _handler: CAN1_TX },
289 Vector { _handler: CAN1_RX0 },
290 Vector { _handler: CAN1_RX1 },
291 Vector { _handler: CAN1_SCE },
292 Vector { _handler: EXTI9_5 },
293 Vector {
294 _handler: TIM1_BRK_TIM15,
295 },
296 Vector {
297 _handler: TIM1_UP_TIM16,
298 },
299 Vector {
300 _handler: TIM1_TRG_COM,
301 },
302 Vector { _handler: TIM1_CC },
303 Vector { _handler: TIM2 },
304 Vector { _handler: TIM3 },
305 Vector { _reserved: 0 },
306 Vector { _handler: I2C1_EV },
307 Vector { _handler: I2C1_ER },
308 Vector { _handler: I2C2_EV },
309 Vector { _handler: I2C2_ER },
310 Vector { _handler: SPI1 },
311 Vector { _handler: SPI2 },
312 Vector { _handler: USART1 },
313 Vector { _handler: USART2 },
314 Vector { _handler: USART3 },
315 Vector {
316 _handler: EXTI15_10,
317 },
318 Vector {
319 _handler: RTC_Alarm,
320 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _handler: SDMMC1 },
329 Vector { _reserved: 0 },
330 Vector { _handler: SPI3 },
331 Vector { _handler: UART4 },
332 Vector { _reserved: 0 },
333 Vector { _handler: TIM6_DAC },
334 Vector { _reserved: 0 },
335 Vector {
336 _handler: DMA2_Channel1,
337 },
338 Vector {
339 _handler: DMA2_Channel2,
340 },
341 Vector {
342 _handler: DMA2_Channel3,
343 },
344 Vector {
345 _handler: DMA2_Channel4,
346 },
347 Vector {
348 _handler: DMA2_Channel5,
349 },
350 Vector {
351 _handler: DFSDM1_FLT0,
352 },
353 Vector {
354 _handler: DFSDM1_FLT1,
355 },
356 Vector { _reserved: 0 },
357 Vector { _handler: COMP },
358 Vector { _handler: LPTIM1 },
359 Vector { _handler: LPTIM2 },
360 Vector { _handler: USB },
361 Vector {
362 _handler: DMA2_Channel6,
363 },
364 Vector {
365 _handler: DMA2_Channel7,
366 },
367 Vector { _handler: LPUART1 },
368 Vector { _handler: QUADSPI },
369 Vector { _handler: I2C3_EV },
370 Vector { _handler: I2C3_ER },
371 Vector { _handler: SAI1 },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: TSC },
375 Vector { _reserved: 0 },
376 Vector { _reserved: 0 },
377 Vector { _handler: RNG },
378 Vector { _handler: FPU },
379 Vector { _handler: CRS },
380 Vector { _handler: I2C4_EV },
381 Vector { _handler: I2C4_ER },
382 ];
383}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 384impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 385impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 386impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l452vc.rs b/embassy-stm32/src/chip/stm32l452vc.rs
index 5b23cead2..05eaeda97 100644
--- a/embassy-stm32/src/chip/stm32l452vc.rs
+++ b/embassy-stm32/src/chip/stm32l452vc.rs
@@ -1,18 +1,386 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, 11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC,
12 USART1, USART2, USART3, USB, WWDG 12 UART4, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 USB = 67,
95 WWDG = 0,
96 }
97 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
98 #[inline(always)]
99 fn number(self) -> u16 {
100 self as u16
101 }
102 }
103
104 declare!(ADC1);
105 declare!(CAN1_RX0);
106 declare!(CAN1_RX1);
107 declare!(CAN1_SCE);
108 declare!(CAN1_TX);
109 declare!(COMP);
110 declare!(CRS);
111 declare!(DFSDM1_FLT0);
112 declare!(DFSDM1_FLT1);
113 declare!(DMA1_Channel1);
114 declare!(DMA1_Channel2);
115 declare!(DMA1_Channel3);
116 declare!(DMA1_Channel4);
117 declare!(DMA1_Channel5);
118 declare!(DMA1_Channel6);
119 declare!(DMA1_Channel7);
120 declare!(DMA2_Channel1);
121 declare!(DMA2_Channel2);
122 declare!(DMA2_Channel3);
123 declare!(DMA2_Channel4);
124 declare!(DMA2_Channel5);
125 declare!(DMA2_Channel6);
126 declare!(DMA2_Channel7);
127 declare!(EXTI0);
128 declare!(EXTI1);
129 declare!(EXTI15_10);
130 declare!(EXTI2);
131 declare!(EXTI3);
132 declare!(EXTI4);
133 declare!(EXTI9_5);
134 declare!(FLASH);
135 declare!(FPU);
136 declare!(I2C1_ER);
137 declare!(I2C1_EV);
138 declare!(I2C2_ER);
139 declare!(I2C2_EV);
140 declare!(I2C3_ER);
141 declare!(I2C3_EV);
142 declare!(I2C4_ER);
143 declare!(I2C4_EV);
144 declare!(LPTIM1);
145 declare!(LPTIM2);
146 declare!(LPUART1);
147 declare!(PVD_PVM);
148 declare!(QUADSPI);
149 declare!(RCC);
150 declare!(RNG);
151 declare!(RTC_Alarm);
152 declare!(RTC_WKUP);
153 declare!(SAI1);
154 declare!(SDMMC1);
155 declare!(SPI1);
156 declare!(SPI2);
157 declare!(SPI3);
158 declare!(TAMP_STAMP);
159 declare!(TIM1_BRK_TIM15);
160 declare!(TIM1_CC);
161 declare!(TIM1_TRG_COM);
162 declare!(TIM1_UP_TIM16);
163 declare!(TIM2);
164 declare!(TIM3);
165 declare!(TIM6_DAC);
166 declare!(TSC);
167 declare!(UART4);
168 declare!(USART1);
169 declare!(USART2);
170 declare!(USART3);
171 declare!(USB);
172 declare!(WWDG);
173}
174mod interrupt_vector {
175 extern "C" {
176 fn ADC1();
177 fn CAN1_RX0();
178 fn CAN1_RX1();
179 fn CAN1_SCE();
180 fn CAN1_TX();
181 fn COMP();
182 fn CRS();
183 fn DFSDM1_FLT0();
184 fn DFSDM1_FLT1();
185 fn DMA1_Channel1();
186 fn DMA1_Channel2();
187 fn DMA1_Channel3();
188 fn DMA1_Channel4();
189 fn DMA1_Channel5();
190 fn DMA1_Channel6();
191 fn DMA1_Channel7();
192 fn DMA2_Channel1();
193 fn DMA2_Channel2();
194 fn DMA2_Channel3();
195 fn DMA2_Channel4();
196 fn DMA2_Channel5();
197 fn DMA2_Channel6();
198 fn DMA2_Channel7();
199 fn EXTI0();
200 fn EXTI1();
201 fn EXTI15_10();
202 fn EXTI2();
203 fn EXTI3();
204 fn EXTI4();
205 fn EXTI9_5();
206 fn FLASH();
207 fn FPU();
208 fn I2C1_ER();
209 fn I2C1_EV();
210 fn I2C2_ER();
211 fn I2C2_EV();
212 fn I2C3_ER();
213 fn I2C3_EV();
214 fn I2C4_ER();
215 fn I2C4_EV();
216 fn LPTIM1();
217 fn LPTIM2();
218 fn LPUART1();
219 fn PVD_PVM();
220 fn QUADSPI();
221 fn RCC();
222 fn RNG();
223 fn RTC_Alarm();
224 fn RTC_WKUP();
225 fn SAI1();
226 fn SDMMC1();
227 fn SPI1();
228 fn SPI2();
229 fn SPI3();
230 fn TAMP_STAMP();
231 fn TIM1_BRK_TIM15();
232 fn TIM1_CC();
233 fn TIM1_TRG_COM();
234 fn TIM1_UP_TIM16();
235 fn TIM2();
236 fn TIM3();
237 fn TIM6_DAC();
238 fn TSC();
239 fn UART4();
240 fn USART1();
241 fn USART2();
242 fn USART3();
243 fn USB();
244 fn WWDG();
245 }
246 pub union Vector {
247 _handler: unsafe extern "C" fn(),
248 _reserved: u32,
249 }
250 #[link_section = ".vector_table.interrupts"]
251 #[no_mangle]
252 pub static __INTERRUPTS: [Vector; 85] = [
253 Vector { _handler: WWDG },
254 Vector { _handler: PVD_PVM },
255 Vector {
256 _handler: TAMP_STAMP,
257 },
258 Vector { _handler: RTC_WKUP },
259 Vector { _handler: FLASH },
260 Vector { _handler: RCC },
261 Vector { _handler: EXTI0 },
262 Vector { _handler: EXTI1 },
263 Vector { _handler: EXTI2 },
264 Vector { _handler: EXTI3 },
265 Vector { _handler: EXTI4 },
266 Vector {
267 _handler: DMA1_Channel1,
268 },
269 Vector {
270 _handler: DMA1_Channel2,
271 },
272 Vector {
273 _handler: DMA1_Channel3,
274 },
275 Vector {
276 _handler: DMA1_Channel4,
277 },
278 Vector {
279 _handler: DMA1_Channel5,
280 },
281 Vector {
282 _handler: DMA1_Channel6,
283 },
284 Vector {
285 _handler: DMA1_Channel7,
286 },
287 Vector { _handler: ADC1 },
288 Vector { _handler: CAN1_TX },
289 Vector { _handler: CAN1_RX0 },
290 Vector { _handler: CAN1_RX1 },
291 Vector { _handler: CAN1_SCE },
292 Vector { _handler: EXTI9_5 },
293 Vector {
294 _handler: TIM1_BRK_TIM15,
295 },
296 Vector {
297 _handler: TIM1_UP_TIM16,
298 },
299 Vector {
300 _handler: TIM1_TRG_COM,
301 },
302 Vector { _handler: TIM1_CC },
303 Vector { _handler: TIM2 },
304 Vector { _handler: TIM3 },
305 Vector { _reserved: 0 },
306 Vector { _handler: I2C1_EV },
307 Vector { _handler: I2C1_ER },
308 Vector { _handler: I2C2_EV },
309 Vector { _handler: I2C2_ER },
310 Vector { _handler: SPI1 },
311 Vector { _handler: SPI2 },
312 Vector { _handler: USART1 },
313 Vector { _handler: USART2 },
314 Vector { _handler: USART3 },
315 Vector {
316 _handler: EXTI15_10,
317 },
318 Vector {
319 _handler: RTC_Alarm,
320 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _handler: SDMMC1 },
329 Vector { _reserved: 0 },
330 Vector { _handler: SPI3 },
331 Vector { _handler: UART4 },
332 Vector { _reserved: 0 },
333 Vector { _handler: TIM6_DAC },
334 Vector { _reserved: 0 },
335 Vector {
336 _handler: DMA2_Channel1,
337 },
338 Vector {
339 _handler: DMA2_Channel2,
340 },
341 Vector {
342 _handler: DMA2_Channel3,
343 },
344 Vector {
345 _handler: DMA2_Channel4,
346 },
347 Vector {
348 _handler: DMA2_Channel5,
349 },
350 Vector {
351 _handler: DFSDM1_FLT0,
352 },
353 Vector {
354 _handler: DFSDM1_FLT1,
355 },
356 Vector { _reserved: 0 },
357 Vector { _handler: COMP },
358 Vector { _handler: LPTIM1 },
359 Vector { _handler: LPTIM2 },
360 Vector { _handler: USB },
361 Vector {
362 _handler: DMA2_Channel6,
363 },
364 Vector {
365 _handler: DMA2_Channel7,
366 },
367 Vector { _handler: LPUART1 },
368 Vector { _handler: QUADSPI },
369 Vector { _handler: I2C3_EV },
370 Vector { _handler: I2C3_ER },
371 Vector { _handler: SAI1 },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: TSC },
375 Vector { _reserved: 0 },
376 Vector { _reserved: 0 },
377 Vector { _handler: RNG },
378 Vector { _handler: FPU },
379 Vector { _handler: CRS },
380 Vector { _handler: I2C4_EV },
381 Vector { _handler: I2C4_ER },
382 ];
383}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 384impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 385impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 386impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l452ve.rs b/embassy-stm32/src/chip/stm32l452ve.rs
index 5b23cead2..05eaeda97 100644
--- a/embassy-stm32/src/chip/stm32l452ve.rs
+++ b/embassy-stm32/src/chip/stm32l452ve.rs
@@ -1,18 +1,386 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5,
5 PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, 5 PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7,
6 PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, 6 PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9,
7 PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, 7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10,
8 PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, 8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11,
9 PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
10 PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, 10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC,
11 RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, 11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC,
12 USART1, USART2, USART3, USB, WWDG 12 UART4, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 CAN1_RX0 = 20,
29 CAN1_RX1 = 21,
30 CAN1_SCE = 22,
31 CAN1_TX = 19,
32 COMP = 64,
33 CRS = 82,
34 DFSDM1_FLT0 = 61,
35 DFSDM1_FLT1 = 62,
36 DMA1_Channel1 = 11,
37 DMA1_Channel2 = 12,
38 DMA1_Channel3 = 13,
39 DMA1_Channel4 = 14,
40 DMA1_Channel5 = 15,
41 DMA1_Channel6 = 16,
42 DMA1_Channel7 = 17,
43 DMA2_Channel1 = 56,
44 DMA2_Channel2 = 57,
45 DMA2_Channel3 = 58,
46 DMA2_Channel4 = 59,
47 DMA2_Channel5 = 60,
48 DMA2_Channel6 = 68,
49 DMA2_Channel7 = 69,
50 EXTI0 = 6,
51 EXTI1 = 7,
52 EXTI15_10 = 40,
53 EXTI2 = 8,
54 EXTI3 = 9,
55 EXTI4 = 10,
56 EXTI9_5 = 23,
57 FLASH = 4,
58 FPU = 81,
59 I2C1_ER = 32,
60 I2C1_EV = 31,
61 I2C2_ER = 34,
62 I2C2_EV = 33,
63 I2C3_ER = 73,
64 I2C3_EV = 72,
65 I2C4_ER = 84,
66 I2C4_EV = 83,
67 LPTIM1 = 65,
68 LPTIM2 = 66,
69 LPUART1 = 70,
70 PVD_PVM = 1,
71 QUADSPI = 71,
72 RCC = 5,
73 RNG = 80,
74 RTC_Alarm = 41,
75 RTC_WKUP = 3,
76 SAI1 = 74,
77 SDMMC1 = 49,
78 SPI1 = 35,
79 SPI2 = 36,
80 SPI3 = 51,
81 TAMP_STAMP = 2,
82 TIM1_BRK_TIM15 = 24,
83 TIM1_CC = 27,
84 TIM1_TRG_COM = 26,
85 TIM1_UP_TIM16 = 25,
86 TIM2 = 28,
87 TIM3 = 29,
88 TIM6_DAC = 54,
89 TSC = 77,
90 UART4 = 52,
91 USART1 = 37,
92 USART2 = 38,
93 USART3 = 39,
94 USB = 67,
95 WWDG = 0,
96 }
97 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
98 #[inline(always)]
99 fn number(self) -> u16 {
100 self as u16
101 }
102 }
103
104 declare!(ADC1);
105 declare!(CAN1_RX0);
106 declare!(CAN1_RX1);
107 declare!(CAN1_SCE);
108 declare!(CAN1_TX);
109 declare!(COMP);
110 declare!(CRS);
111 declare!(DFSDM1_FLT0);
112 declare!(DFSDM1_FLT1);
113 declare!(DMA1_Channel1);
114 declare!(DMA1_Channel2);
115 declare!(DMA1_Channel3);
116 declare!(DMA1_Channel4);
117 declare!(DMA1_Channel5);
118 declare!(DMA1_Channel6);
119 declare!(DMA1_Channel7);
120 declare!(DMA2_Channel1);
121 declare!(DMA2_Channel2);
122 declare!(DMA2_Channel3);
123 declare!(DMA2_Channel4);
124 declare!(DMA2_Channel5);
125 declare!(DMA2_Channel6);
126 declare!(DMA2_Channel7);
127 declare!(EXTI0);
128 declare!(EXTI1);
129 declare!(EXTI15_10);
130 declare!(EXTI2);
131 declare!(EXTI3);
132 declare!(EXTI4);
133 declare!(EXTI9_5);
134 declare!(FLASH);
135 declare!(FPU);
136 declare!(I2C1_ER);
137 declare!(I2C1_EV);
138 declare!(I2C2_ER);
139 declare!(I2C2_EV);
140 declare!(I2C3_ER);
141 declare!(I2C3_EV);
142 declare!(I2C4_ER);
143 declare!(I2C4_EV);
144 declare!(LPTIM1);
145 declare!(LPTIM2);
146 declare!(LPUART1);
147 declare!(PVD_PVM);
148 declare!(QUADSPI);
149 declare!(RCC);
150 declare!(RNG);
151 declare!(RTC_Alarm);
152 declare!(RTC_WKUP);
153 declare!(SAI1);
154 declare!(SDMMC1);
155 declare!(SPI1);
156 declare!(SPI2);
157 declare!(SPI3);
158 declare!(TAMP_STAMP);
159 declare!(TIM1_BRK_TIM15);
160 declare!(TIM1_CC);
161 declare!(TIM1_TRG_COM);
162 declare!(TIM1_UP_TIM16);
163 declare!(TIM2);
164 declare!(TIM3);
165 declare!(TIM6_DAC);
166 declare!(TSC);
167 declare!(UART4);
168 declare!(USART1);
169 declare!(USART2);
170 declare!(USART3);
171 declare!(USB);
172 declare!(WWDG);
173}
174mod interrupt_vector {
175 extern "C" {
176 fn ADC1();
177 fn CAN1_RX0();
178 fn CAN1_RX1();
179 fn CAN1_SCE();
180 fn CAN1_TX();
181 fn COMP();
182 fn CRS();
183 fn DFSDM1_FLT0();
184 fn DFSDM1_FLT1();
185 fn DMA1_Channel1();
186 fn DMA1_Channel2();
187 fn DMA1_Channel3();
188 fn DMA1_Channel4();
189 fn DMA1_Channel5();
190 fn DMA1_Channel6();
191 fn DMA1_Channel7();
192 fn DMA2_Channel1();
193 fn DMA2_Channel2();
194 fn DMA2_Channel3();
195 fn DMA2_Channel4();
196 fn DMA2_Channel5();
197 fn DMA2_Channel6();
198 fn DMA2_Channel7();
199 fn EXTI0();
200 fn EXTI1();
201 fn EXTI15_10();
202 fn EXTI2();
203 fn EXTI3();
204 fn EXTI4();
205 fn EXTI9_5();
206 fn FLASH();
207 fn FPU();
208 fn I2C1_ER();
209 fn I2C1_EV();
210 fn I2C2_ER();
211 fn I2C2_EV();
212 fn I2C3_ER();
213 fn I2C3_EV();
214 fn I2C4_ER();
215 fn I2C4_EV();
216 fn LPTIM1();
217 fn LPTIM2();
218 fn LPUART1();
219 fn PVD_PVM();
220 fn QUADSPI();
221 fn RCC();
222 fn RNG();
223 fn RTC_Alarm();
224 fn RTC_WKUP();
225 fn SAI1();
226 fn SDMMC1();
227 fn SPI1();
228 fn SPI2();
229 fn SPI3();
230 fn TAMP_STAMP();
231 fn TIM1_BRK_TIM15();
232 fn TIM1_CC();
233 fn TIM1_TRG_COM();
234 fn TIM1_UP_TIM16();
235 fn TIM2();
236 fn TIM3();
237 fn TIM6_DAC();
238 fn TSC();
239 fn UART4();
240 fn USART1();
241 fn USART2();
242 fn USART3();
243 fn USB();
244 fn WWDG();
245 }
246 pub union Vector {
247 _handler: unsafe extern "C" fn(),
248 _reserved: u32,
249 }
250 #[link_section = ".vector_table.interrupts"]
251 #[no_mangle]
252 pub static __INTERRUPTS: [Vector; 85] = [
253 Vector { _handler: WWDG },
254 Vector { _handler: PVD_PVM },
255 Vector {
256 _handler: TAMP_STAMP,
257 },
258 Vector { _handler: RTC_WKUP },
259 Vector { _handler: FLASH },
260 Vector { _handler: RCC },
261 Vector { _handler: EXTI0 },
262 Vector { _handler: EXTI1 },
263 Vector { _handler: EXTI2 },
264 Vector { _handler: EXTI3 },
265 Vector { _handler: EXTI4 },
266 Vector {
267 _handler: DMA1_Channel1,
268 },
269 Vector {
270 _handler: DMA1_Channel2,
271 },
272 Vector {
273 _handler: DMA1_Channel3,
274 },
275 Vector {
276 _handler: DMA1_Channel4,
277 },
278 Vector {
279 _handler: DMA1_Channel5,
280 },
281 Vector {
282 _handler: DMA1_Channel6,
283 },
284 Vector {
285 _handler: DMA1_Channel7,
286 },
287 Vector { _handler: ADC1 },
288 Vector { _handler: CAN1_TX },
289 Vector { _handler: CAN1_RX0 },
290 Vector { _handler: CAN1_RX1 },
291 Vector { _handler: CAN1_SCE },
292 Vector { _handler: EXTI9_5 },
293 Vector {
294 _handler: TIM1_BRK_TIM15,
295 },
296 Vector {
297 _handler: TIM1_UP_TIM16,
298 },
299 Vector {
300 _handler: TIM1_TRG_COM,
301 },
302 Vector { _handler: TIM1_CC },
303 Vector { _handler: TIM2 },
304 Vector { _handler: TIM3 },
305 Vector { _reserved: 0 },
306 Vector { _handler: I2C1_EV },
307 Vector { _handler: I2C1_ER },
308 Vector { _handler: I2C2_EV },
309 Vector { _handler: I2C2_ER },
310 Vector { _handler: SPI1 },
311 Vector { _handler: SPI2 },
312 Vector { _handler: USART1 },
313 Vector { _handler: USART2 },
314 Vector { _handler: USART3 },
315 Vector {
316 _handler: EXTI15_10,
317 },
318 Vector {
319 _handler: RTC_Alarm,
320 },
321 Vector { _reserved: 0 },
322 Vector { _reserved: 0 },
323 Vector { _reserved: 0 },
324 Vector { _reserved: 0 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _handler: SDMMC1 },
329 Vector { _reserved: 0 },
330 Vector { _handler: SPI3 },
331 Vector { _handler: UART4 },
332 Vector { _reserved: 0 },
333 Vector { _handler: TIM6_DAC },
334 Vector { _reserved: 0 },
335 Vector {
336 _handler: DMA2_Channel1,
337 },
338 Vector {
339 _handler: DMA2_Channel2,
340 },
341 Vector {
342 _handler: DMA2_Channel3,
343 },
344 Vector {
345 _handler: DMA2_Channel4,
346 },
347 Vector {
348 _handler: DMA2_Channel5,
349 },
350 Vector {
351 _handler: DFSDM1_FLT0,
352 },
353 Vector {
354 _handler: DFSDM1_FLT1,
355 },
356 Vector { _reserved: 0 },
357 Vector { _handler: COMP },
358 Vector { _handler: LPTIM1 },
359 Vector { _handler: LPTIM2 },
360 Vector { _handler: USB },
361 Vector {
362 _handler: DMA2_Channel6,
363 },
364 Vector {
365 _handler: DMA2_Channel7,
366 },
367 Vector { _handler: LPUART1 },
368 Vector { _handler: QUADSPI },
369 Vector { _handler: I2C3_EV },
370 Vector { _handler: I2C3_ER },
371 Vector { _handler: SAI1 },
372 Vector { _reserved: 0 },
373 Vector { _reserved: 0 },
374 Vector { _handler: TSC },
375 Vector { _reserved: 0 },
376 Vector { _reserved: 0 },
377 Vector { _handler: RNG },
378 Vector { _handler: FPU },
379 Vector { _handler: CRS },
380 Vector { _handler: I2C4_EV },
381 Vector { _handler: I2C4_ER },
382 ];
383}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 384impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 385impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 386impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l462ce.rs b/embassy-stm32/src/chip/stm32l462ce.rs
index 2b8be5423..65b8842cd 100644
--- a/embassy-stm32/src/chip/stm32l462ce.rs
+++ b/embassy-stm32/src/chip/stm32l462ce.rs
@@ -1,18 +1,389 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 9 PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, 10 PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI,
11 RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, 11 RCC, RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC,
12 USART1, USART2, USART3, USB, WWDG 12 UART4, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 AES = 79,
29 CAN1_RX0 = 20,
30 CAN1_RX1 = 21,
31 CAN1_SCE = 22,
32 CAN1_TX = 19,
33 COMP = 64,
34 CRS = 82,
35 DFSDM1_FLT0 = 61,
36 DFSDM1_FLT1 = 62,
37 DMA1_Channel1 = 11,
38 DMA1_Channel2 = 12,
39 DMA1_Channel3 = 13,
40 DMA1_Channel4 = 14,
41 DMA1_Channel5 = 15,
42 DMA1_Channel6 = 16,
43 DMA1_Channel7 = 17,
44 DMA2_Channel1 = 56,
45 DMA2_Channel2 = 57,
46 DMA2_Channel3 = 58,
47 DMA2_Channel4 = 59,
48 DMA2_Channel5 = 60,
49 DMA2_Channel6 = 68,
50 DMA2_Channel7 = 69,
51 EXTI0 = 6,
52 EXTI1 = 7,
53 EXTI15_10 = 40,
54 EXTI2 = 8,
55 EXTI3 = 9,
56 EXTI4 = 10,
57 EXTI9_5 = 23,
58 FLASH = 4,
59 FPU = 81,
60 I2C1_ER = 32,
61 I2C1_EV = 31,
62 I2C2_ER = 34,
63 I2C2_EV = 33,
64 I2C3_ER = 73,
65 I2C3_EV = 72,
66 I2C4_ER = 84,
67 I2C4_EV = 83,
68 LPTIM1 = 65,
69 LPTIM2 = 66,
70 LPUART1 = 70,
71 PVD_PVM = 1,
72 QUADSPI = 71,
73 RCC = 5,
74 RNG = 80,
75 RTC_Alarm = 41,
76 RTC_WKUP = 3,
77 SAI1 = 74,
78 SDMMC1 = 49,
79 SPI1 = 35,
80 SPI2 = 36,
81 SPI3 = 51,
82 TAMP_STAMP = 2,
83 TIM1_BRK_TIM15 = 24,
84 TIM1_CC = 27,
85 TIM1_TRG_COM = 26,
86 TIM1_UP_TIM16 = 25,
87 TIM2 = 28,
88 TIM3 = 29,
89 TIM6_DAC = 54,
90 TSC = 77,
91 UART4 = 52,
92 USART1 = 37,
93 USART2 = 38,
94 USART3 = 39,
95 USB = 67,
96 WWDG = 0,
97 }
98 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
99 #[inline(always)]
100 fn number(self) -> u16 {
101 self as u16
102 }
103 }
104
105 declare!(ADC1);
106 declare!(AES);
107 declare!(CAN1_RX0);
108 declare!(CAN1_RX1);
109 declare!(CAN1_SCE);
110 declare!(CAN1_TX);
111 declare!(COMP);
112 declare!(CRS);
113 declare!(DFSDM1_FLT0);
114 declare!(DFSDM1_FLT1);
115 declare!(DMA1_Channel1);
116 declare!(DMA1_Channel2);
117 declare!(DMA1_Channel3);
118 declare!(DMA1_Channel4);
119 declare!(DMA1_Channel5);
120 declare!(DMA1_Channel6);
121 declare!(DMA1_Channel7);
122 declare!(DMA2_Channel1);
123 declare!(DMA2_Channel2);
124 declare!(DMA2_Channel3);
125 declare!(DMA2_Channel4);
126 declare!(DMA2_Channel5);
127 declare!(DMA2_Channel6);
128 declare!(DMA2_Channel7);
129 declare!(EXTI0);
130 declare!(EXTI1);
131 declare!(EXTI15_10);
132 declare!(EXTI2);
133 declare!(EXTI3);
134 declare!(EXTI4);
135 declare!(EXTI9_5);
136 declare!(FLASH);
137 declare!(FPU);
138 declare!(I2C1_ER);
139 declare!(I2C1_EV);
140 declare!(I2C2_ER);
141 declare!(I2C2_EV);
142 declare!(I2C3_ER);
143 declare!(I2C3_EV);
144 declare!(I2C4_ER);
145 declare!(I2C4_EV);
146 declare!(LPTIM1);
147 declare!(LPTIM2);
148 declare!(LPUART1);
149 declare!(PVD_PVM);
150 declare!(QUADSPI);
151 declare!(RCC);
152 declare!(RNG);
153 declare!(RTC_Alarm);
154 declare!(RTC_WKUP);
155 declare!(SAI1);
156 declare!(SDMMC1);
157 declare!(SPI1);
158 declare!(SPI2);
159 declare!(SPI3);
160 declare!(TAMP_STAMP);
161 declare!(TIM1_BRK_TIM15);
162 declare!(TIM1_CC);
163 declare!(TIM1_TRG_COM);
164 declare!(TIM1_UP_TIM16);
165 declare!(TIM2);
166 declare!(TIM3);
167 declare!(TIM6_DAC);
168 declare!(TSC);
169 declare!(UART4);
170 declare!(USART1);
171 declare!(USART2);
172 declare!(USART3);
173 declare!(USB);
174 declare!(WWDG);
175}
176mod interrupt_vector {
177 extern "C" {
178 fn ADC1();
179 fn AES();
180 fn CAN1_RX0();
181 fn CAN1_RX1();
182 fn CAN1_SCE();
183 fn CAN1_TX();
184 fn COMP();
185 fn CRS();
186 fn DFSDM1_FLT0();
187 fn DFSDM1_FLT1();
188 fn DMA1_Channel1();
189 fn DMA1_Channel2();
190 fn DMA1_Channel3();
191 fn DMA1_Channel4();
192 fn DMA1_Channel5();
193 fn DMA1_Channel6();
194 fn DMA1_Channel7();
195 fn DMA2_Channel1();
196 fn DMA2_Channel2();
197 fn DMA2_Channel3();
198 fn DMA2_Channel4();
199 fn DMA2_Channel5();
200 fn DMA2_Channel6();
201 fn DMA2_Channel7();
202 fn EXTI0();
203 fn EXTI1();
204 fn EXTI15_10();
205 fn EXTI2();
206 fn EXTI3();
207 fn EXTI4();
208 fn EXTI9_5();
209 fn FLASH();
210 fn FPU();
211 fn I2C1_ER();
212 fn I2C1_EV();
213 fn I2C2_ER();
214 fn I2C2_EV();
215 fn I2C3_ER();
216 fn I2C3_EV();
217 fn I2C4_ER();
218 fn I2C4_EV();
219 fn LPTIM1();
220 fn LPTIM2();
221 fn LPUART1();
222 fn PVD_PVM();
223 fn QUADSPI();
224 fn RCC();
225 fn RNG();
226 fn RTC_Alarm();
227 fn RTC_WKUP();
228 fn SAI1();
229 fn SDMMC1();
230 fn SPI1();
231 fn SPI2();
232 fn SPI3();
233 fn TAMP_STAMP();
234 fn TIM1_BRK_TIM15();
235 fn TIM1_CC();
236 fn TIM1_TRG_COM();
237 fn TIM1_UP_TIM16();
238 fn TIM2();
239 fn TIM3();
240 fn TIM6_DAC();
241 fn TSC();
242 fn UART4();
243 fn USART1();
244 fn USART2();
245 fn USART3();
246 fn USB();
247 fn WWDG();
248 }
249 pub union Vector {
250 _handler: unsafe extern "C" fn(),
251 _reserved: u32,
252 }
253 #[link_section = ".vector_table.interrupts"]
254 #[no_mangle]
255 pub static __INTERRUPTS: [Vector; 85] = [
256 Vector { _handler: WWDG },
257 Vector { _handler: PVD_PVM },
258 Vector {
259 _handler: TAMP_STAMP,
260 },
261 Vector { _handler: RTC_WKUP },
262 Vector { _handler: FLASH },
263 Vector { _handler: RCC },
264 Vector { _handler: EXTI0 },
265 Vector { _handler: EXTI1 },
266 Vector { _handler: EXTI2 },
267 Vector { _handler: EXTI3 },
268 Vector { _handler: EXTI4 },
269 Vector {
270 _handler: DMA1_Channel1,
271 },
272 Vector {
273 _handler: DMA1_Channel2,
274 },
275 Vector {
276 _handler: DMA1_Channel3,
277 },
278 Vector {
279 _handler: DMA1_Channel4,
280 },
281 Vector {
282 _handler: DMA1_Channel5,
283 },
284 Vector {
285 _handler: DMA1_Channel6,
286 },
287 Vector {
288 _handler: DMA1_Channel7,
289 },
290 Vector { _handler: ADC1 },
291 Vector { _handler: CAN1_TX },
292 Vector { _handler: CAN1_RX0 },
293 Vector { _handler: CAN1_RX1 },
294 Vector { _handler: CAN1_SCE },
295 Vector { _handler: EXTI9_5 },
296 Vector {
297 _handler: TIM1_BRK_TIM15,
298 },
299 Vector {
300 _handler: TIM1_UP_TIM16,
301 },
302 Vector {
303 _handler: TIM1_TRG_COM,
304 },
305 Vector { _handler: TIM1_CC },
306 Vector { _handler: TIM2 },
307 Vector { _handler: TIM3 },
308 Vector { _reserved: 0 },
309 Vector { _handler: I2C1_EV },
310 Vector { _handler: I2C1_ER },
311 Vector { _handler: I2C2_EV },
312 Vector { _handler: I2C2_ER },
313 Vector { _handler: SPI1 },
314 Vector { _handler: SPI2 },
315 Vector { _handler: USART1 },
316 Vector { _handler: USART2 },
317 Vector { _handler: USART3 },
318 Vector {
319 _handler: EXTI15_10,
320 },
321 Vector {
322 _handler: RTC_Alarm,
323 },
324 Vector { _reserved: 0 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _reserved: 0 },
329 Vector { _reserved: 0 },
330 Vector { _reserved: 0 },
331 Vector { _handler: SDMMC1 },
332 Vector { _reserved: 0 },
333 Vector { _handler: SPI3 },
334 Vector { _handler: UART4 },
335 Vector { _reserved: 0 },
336 Vector { _handler: TIM6_DAC },
337 Vector { _reserved: 0 },
338 Vector {
339 _handler: DMA2_Channel1,
340 },
341 Vector {
342 _handler: DMA2_Channel2,
343 },
344 Vector {
345 _handler: DMA2_Channel3,
346 },
347 Vector {
348 _handler: DMA2_Channel4,
349 },
350 Vector {
351 _handler: DMA2_Channel5,
352 },
353 Vector {
354 _handler: DFSDM1_FLT0,
355 },
356 Vector {
357 _handler: DFSDM1_FLT1,
358 },
359 Vector { _reserved: 0 },
360 Vector { _handler: COMP },
361 Vector { _handler: LPTIM1 },
362 Vector { _handler: LPTIM2 },
363 Vector { _handler: USB },
364 Vector {
365 _handler: DMA2_Channel6,
366 },
367 Vector {
368 _handler: DMA2_Channel7,
369 },
370 Vector { _handler: LPUART1 },
371 Vector { _handler: QUADSPI },
372 Vector { _handler: I2C3_EV },
373 Vector { _handler: I2C3_ER },
374 Vector { _handler: SAI1 },
375 Vector { _reserved: 0 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TSC },
378 Vector { _reserved: 0 },
379 Vector { _handler: AES },
380 Vector { _handler: RNG },
381 Vector { _handler: FPU },
382 Vector { _handler: CRS },
383 Vector { _handler: I2C4_EV },
384 Vector { _handler: I2C4_ER },
385 ];
386}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 387impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 388impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 389impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l462re.rs b/embassy-stm32/src/chip/stm32l462re.rs
index 40dbb9a04..4a4055b50 100644
--- a/embassy-stm32/src/chip/stm32l462re.rs
+++ b/embassy-stm32/src/chip/stm32l462re.rs
@@ -1,18 +1,389 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 9 PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, 10 PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI,
11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, 11 RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6,
12 UART4, USART1, USART2, USART3, USB, WWDG 12 TSC, UART4, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 AES = 79,
29 CAN1_RX0 = 20,
30 CAN1_RX1 = 21,
31 CAN1_SCE = 22,
32 CAN1_TX = 19,
33 COMP = 64,
34 CRS = 82,
35 DFSDM1_FLT0 = 61,
36 DFSDM1_FLT1 = 62,
37 DMA1_Channel1 = 11,
38 DMA1_Channel2 = 12,
39 DMA1_Channel3 = 13,
40 DMA1_Channel4 = 14,
41 DMA1_Channel5 = 15,
42 DMA1_Channel6 = 16,
43 DMA1_Channel7 = 17,
44 DMA2_Channel1 = 56,
45 DMA2_Channel2 = 57,
46 DMA2_Channel3 = 58,
47 DMA2_Channel4 = 59,
48 DMA2_Channel5 = 60,
49 DMA2_Channel6 = 68,
50 DMA2_Channel7 = 69,
51 EXTI0 = 6,
52 EXTI1 = 7,
53 EXTI15_10 = 40,
54 EXTI2 = 8,
55 EXTI3 = 9,
56 EXTI4 = 10,
57 EXTI9_5 = 23,
58 FLASH = 4,
59 FPU = 81,
60 I2C1_ER = 32,
61 I2C1_EV = 31,
62 I2C2_ER = 34,
63 I2C2_EV = 33,
64 I2C3_ER = 73,
65 I2C3_EV = 72,
66 I2C4_ER = 84,
67 I2C4_EV = 83,
68 LPTIM1 = 65,
69 LPTIM2 = 66,
70 LPUART1 = 70,
71 PVD_PVM = 1,
72 QUADSPI = 71,
73 RCC = 5,
74 RNG = 80,
75 RTC_Alarm = 41,
76 RTC_WKUP = 3,
77 SAI1 = 74,
78 SDMMC1 = 49,
79 SPI1 = 35,
80 SPI2 = 36,
81 SPI3 = 51,
82 TAMP_STAMP = 2,
83 TIM1_BRK_TIM15 = 24,
84 TIM1_CC = 27,
85 TIM1_TRG_COM = 26,
86 TIM1_UP_TIM16 = 25,
87 TIM2 = 28,
88 TIM3 = 29,
89 TIM6_DAC = 54,
90 TSC = 77,
91 UART4 = 52,
92 USART1 = 37,
93 USART2 = 38,
94 USART3 = 39,
95 USB = 67,
96 WWDG = 0,
97 }
98 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
99 #[inline(always)]
100 fn number(self) -> u16 {
101 self as u16
102 }
103 }
104
105 declare!(ADC1);
106 declare!(AES);
107 declare!(CAN1_RX0);
108 declare!(CAN1_RX1);
109 declare!(CAN1_SCE);
110 declare!(CAN1_TX);
111 declare!(COMP);
112 declare!(CRS);
113 declare!(DFSDM1_FLT0);
114 declare!(DFSDM1_FLT1);
115 declare!(DMA1_Channel1);
116 declare!(DMA1_Channel2);
117 declare!(DMA1_Channel3);
118 declare!(DMA1_Channel4);
119 declare!(DMA1_Channel5);
120 declare!(DMA1_Channel6);
121 declare!(DMA1_Channel7);
122 declare!(DMA2_Channel1);
123 declare!(DMA2_Channel2);
124 declare!(DMA2_Channel3);
125 declare!(DMA2_Channel4);
126 declare!(DMA2_Channel5);
127 declare!(DMA2_Channel6);
128 declare!(DMA2_Channel7);
129 declare!(EXTI0);
130 declare!(EXTI1);
131 declare!(EXTI15_10);
132 declare!(EXTI2);
133 declare!(EXTI3);
134 declare!(EXTI4);
135 declare!(EXTI9_5);
136 declare!(FLASH);
137 declare!(FPU);
138 declare!(I2C1_ER);
139 declare!(I2C1_EV);
140 declare!(I2C2_ER);
141 declare!(I2C2_EV);
142 declare!(I2C3_ER);
143 declare!(I2C3_EV);
144 declare!(I2C4_ER);
145 declare!(I2C4_EV);
146 declare!(LPTIM1);
147 declare!(LPTIM2);
148 declare!(LPUART1);
149 declare!(PVD_PVM);
150 declare!(QUADSPI);
151 declare!(RCC);
152 declare!(RNG);
153 declare!(RTC_Alarm);
154 declare!(RTC_WKUP);
155 declare!(SAI1);
156 declare!(SDMMC1);
157 declare!(SPI1);
158 declare!(SPI2);
159 declare!(SPI3);
160 declare!(TAMP_STAMP);
161 declare!(TIM1_BRK_TIM15);
162 declare!(TIM1_CC);
163 declare!(TIM1_TRG_COM);
164 declare!(TIM1_UP_TIM16);
165 declare!(TIM2);
166 declare!(TIM3);
167 declare!(TIM6_DAC);
168 declare!(TSC);
169 declare!(UART4);
170 declare!(USART1);
171 declare!(USART2);
172 declare!(USART3);
173 declare!(USB);
174 declare!(WWDG);
175}
176mod interrupt_vector {
177 extern "C" {
178 fn ADC1();
179 fn AES();
180 fn CAN1_RX0();
181 fn CAN1_RX1();
182 fn CAN1_SCE();
183 fn CAN1_TX();
184 fn COMP();
185 fn CRS();
186 fn DFSDM1_FLT0();
187 fn DFSDM1_FLT1();
188 fn DMA1_Channel1();
189 fn DMA1_Channel2();
190 fn DMA1_Channel3();
191 fn DMA1_Channel4();
192 fn DMA1_Channel5();
193 fn DMA1_Channel6();
194 fn DMA1_Channel7();
195 fn DMA2_Channel1();
196 fn DMA2_Channel2();
197 fn DMA2_Channel3();
198 fn DMA2_Channel4();
199 fn DMA2_Channel5();
200 fn DMA2_Channel6();
201 fn DMA2_Channel7();
202 fn EXTI0();
203 fn EXTI1();
204 fn EXTI15_10();
205 fn EXTI2();
206 fn EXTI3();
207 fn EXTI4();
208 fn EXTI9_5();
209 fn FLASH();
210 fn FPU();
211 fn I2C1_ER();
212 fn I2C1_EV();
213 fn I2C2_ER();
214 fn I2C2_EV();
215 fn I2C3_ER();
216 fn I2C3_EV();
217 fn I2C4_ER();
218 fn I2C4_EV();
219 fn LPTIM1();
220 fn LPTIM2();
221 fn LPUART1();
222 fn PVD_PVM();
223 fn QUADSPI();
224 fn RCC();
225 fn RNG();
226 fn RTC_Alarm();
227 fn RTC_WKUP();
228 fn SAI1();
229 fn SDMMC1();
230 fn SPI1();
231 fn SPI2();
232 fn SPI3();
233 fn TAMP_STAMP();
234 fn TIM1_BRK_TIM15();
235 fn TIM1_CC();
236 fn TIM1_TRG_COM();
237 fn TIM1_UP_TIM16();
238 fn TIM2();
239 fn TIM3();
240 fn TIM6_DAC();
241 fn TSC();
242 fn UART4();
243 fn USART1();
244 fn USART2();
245 fn USART3();
246 fn USB();
247 fn WWDG();
248 }
249 pub union Vector {
250 _handler: unsafe extern "C" fn(),
251 _reserved: u32,
252 }
253 #[link_section = ".vector_table.interrupts"]
254 #[no_mangle]
255 pub static __INTERRUPTS: [Vector; 85] = [
256 Vector { _handler: WWDG },
257 Vector { _handler: PVD_PVM },
258 Vector {
259 _handler: TAMP_STAMP,
260 },
261 Vector { _handler: RTC_WKUP },
262 Vector { _handler: FLASH },
263 Vector { _handler: RCC },
264 Vector { _handler: EXTI0 },
265 Vector { _handler: EXTI1 },
266 Vector { _handler: EXTI2 },
267 Vector { _handler: EXTI3 },
268 Vector { _handler: EXTI4 },
269 Vector {
270 _handler: DMA1_Channel1,
271 },
272 Vector {
273 _handler: DMA1_Channel2,
274 },
275 Vector {
276 _handler: DMA1_Channel3,
277 },
278 Vector {
279 _handler: DMA1_Channel4,
280 },
281 Vector {
282 _handler: DMA1_Channel5,
283 },
284 Vector {
285 _handler: DMA1_Channel6,
286 },
287 Vector {
288 _handler: DMA1_Channel7,
289 },
290 Vector { _handler: ADC1 },
291 Vector { _handler: CAN1_TX },
292 Vector { _handler: CAN1_RX0 },
293 Vector { _handler: CAN1_RX1 },
294 Vector { _handler: CAN1_SCE },
295 Vector { _handler: EXTI9_5 },
296 Vector {
297 _handler: TIM1_BRK_TIM15,
298 },
299 Vector {
300 _handler: TIM1_UP_TIM16,
301 },
302 Vector {
303 _handler: TIM1_TRG_COM,
304 },
305 Vector { _handler: TIM1_CC },
306 Vector { _handler: TIM2 },
307 Vector { _handler: TIM3 },
308 Vector { _reserved: 0 },
309 Vector { _handler: I2C1_EV },
310 Vector { _handler: I2C1_ER },
311 Vector { _handler: I2C2_EV },
312 Vector { _handler: I2C2_ER },
313 Vector { _handler: SPI1 },
314 Vector { _handler: SPI2 },
315 Vector { _handler: USART1 },
316 Vector { _handler: USART2 },
317 Vector { _handler: USART3 },
318 Vector {
319 _handler: EXTI15_10,
320 },
321 Vector {
322 _handler: RTC_Alarm,
323 },
324 Vector { _reserved: 0 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _reserved: 0 },
329 Vector { _reserved: 0 },
330 Vector { _reserved: 0 },
331 Vector { _handler: SDMMC1 },
332 Vector { _reserved: 0 },
333 Vector { _handler: SPI3 },
334 Vector { _handler: UART4 },
335 Vector { _reserved: 0 },
336 Vector { _handler: TIM6_DAC },
337 Vector { _reserved: 0 },
338 Vector {
339 _handler: DMA2_Channel1,
340 },
341 Vector {
342 _handler: DMA2_Channel2,
343 },
344 Vector {
345 _handler: DMA2_Channel3,
346 },
347 Vector {
348 _handler: DMA2_Channel4,
349 },
350 Vector {
351 _handler: DMA2_Channel5,
352 },
353 Vector {
354 _handler: DFSDM1_FLT0,
355 },
356 Vector {
357 _handler: DFSDM1_FLT1,
358 },
359 Vector { _reserved: 0 },
360 Vector { _handler: COMP },
361 Vector { _handler: LPTIM1 },
362 Vector { _handler: LPTIM2 },
363 Vector { _handler: USB },
364 Vector {
365 _handler: DMA2_Channel6,
366 },
367 Vector {
368 _handler: DMA2_Channel7,
369 },
370 Vector { _handler: LPUART1 },
371 Vector { _handler: QUADSPI },
372 Vector { _handler: I2C3_EV },
373 Vector { _handler: I2C3_ER },
374 Vector { _handler: SAI1 },
375 Vector { _reserved: 0 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TSC },
378 Vector { _reserved: 0 },
379 Vector { _handler: AES },
380 Vector { _handler: RNG },
381 Vector { _handler: FPU },
382 Vector { _handler: CRS },
383 Vector { _handler: I2C4_EV },
384 Vector { _handler: I2C4_ER },
385 ];
386}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 387impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 388impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 389impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l462ve.rs b/embassy-stm32/src/chip/stm32l462ve.rs
index 40dbb9a04..4a4055b50 100644
--- a/embassy-stm32/src/chip/stm32l462ve.rs
+++ b/embassy-stm32/src/chip/stm32l462ve.rs
@@ -1,18 +1,389 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4,
5 PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, 5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6,
6 PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, 6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8,
7 PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, 7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 9 PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
10 PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, 10 PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI,
11 RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, 11 RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6,
12 UART4, USART1, USART2, USART3, USB, WWDG 12 TSC, UART4, USART1, USART2, USART3, USB, WWDG
13); 13);
14pub const SYSCFG_BASE: usize = 0x40010000;
15pub const EXTI_BASE: usize = 0x40010400;
14pub const GPIO_BASE: usize = 0x48000000; 16pub const GPIO_BASE: usize = 0x48000000;
15pub const GPIO_STRIDE: usize = 0x400; 17pub const GPIO_STRIDE: usize = 0x400;
18
19pub mod interrupt {
20 pub use cortex_m::interrupt::{CriticalSection, Mutex};
21 pub use embassy::interrupt::{declare, take, Interrupt};
22 pub use embassy_extras::interrupt::Priority4 as Priority;
23
24 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
25 #[allow(non_camel_case_types)]
26 enum InterruptEnum {
27 ADC1 = 18,
28 AES = 79,
29 CAN1_RX0 = 20,
30 CAN1_RX1 = 21,
31 CAN1_SCE = 22,
32 CAN1_TX = 19,
33 COMP = 64,
34 CRS = 82,
35 DFSDM1_FLT0 = 61,
36 DFSDM1_FLT1 = 62,
37 DMA1_Channel1 = 11,
38 DMA1_Channel2 = 12,
39 DMA1_Channel3 = 13,
40 DMA1_Channel4 = 14,
41 DMA1_Channel5 = 15,
42 DMA1_Channel6 = 16,
43 DMA1_Channel7 = 17,
44 DMA2_Channel1 = 56,
45 DMA2_Channel2 = 57,
46 DMA2_Channel3 = 58,
47 DMA2_Channel4 = 59,
48 DMA2_Channel5 = 60,
49 DMA2_Channel6 = 68,
50 DMA2_Channel7 = 69,
51 EXTI0 = 6,
52 EXTI1 = 7,
53 EXTI15_10 = 40,
54 EXTI2 = 8,
55 EXTI3 = 9,
56 EXTI4 = 10,
57 EXTI9_5 = 23,
58 FLASH = 4,
59 FPU = 81,
60 I2C1_ER = 32,
61 I2C1_EV = 31,
62 I2C2_ER = 34,
63 I2C2_EV = 33,
64 I2C3_ER = 73,
65 I2C3_EV = 72,
66 I2C4_ER = 84,
67 I2C4_EV = 83,
68 LPTIM1 = 65,
69 LPTIM2 = 66,
70 LPUART1 = 70,
71 PVD_PVM = 1,
72 QUADSPI = 71,
73 RCC = 5,
74 RNG = 80,
75 RTC_Alarm = 41,
76 RTC_WKUP = 3,
77 SAI1 = 74,
78 SDMMC1 = 49,
79 SPI1 = 35,
80 SPI2 = 36,
81 SPI3 = 51,
82 TAMP_STAMP = 2,
83 TIM1_BRK_TIM15 = 24,
84 TIM1_CC = 27,
85 TIM1_TRG_COM = 26,
86 TIM1_UP_TIM16 = 25,
87 TIM2 = 28,
88 TIM3 = 29,
89 TIM6_DAC = 54,
90 TSC = 77,
91 UART4 = 52,
92 USART1 = 37,
93 USART2 = 38,
94 USART3 = 39,
95 USB = 67,
96 WWDG = 0,
97 }
98 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
99 #[inline(always)]
100 fn number(self) -> u16 {
101 self as u16
102 }
103 }
104
105 declare!(ADC1);
106 declare!(AES);
107 declare!(CAN1_RX0);
108 declare!(CAN1_RX1);
109 declare!(CAN1_SCE);
110 declare!(CAN1_TX);
111 declare!(COMP);
112 declare!(CRS);
113 declare!(DFSDM1_FLT0);
114 declare!(DFSDM1_FLT1);
115 declare!(DMA1_Channel1);
116 declare!(DMA1_Channel2);
117 declare!(DMA1_Channel3);
118 declare!(DMA1_Channel4);
119 declare!(DMA1_Channel5);
120 declare!(DMA1_Channel6);
121 declare!(DMA1_Channel7);
122 declare!(DMA2_Channel1);
123 declare!(DMA2_Channel2);
124 declare!(DMA2_Channel3);
125 declare!(DMA2_Channel4);
126 declare!(DMA2_Channel5);
127 declare!(DMA2_Channel6);
128 declare!(DMA2_Channel7);
129 declare!(EXTI0);
130 declare!(EXTI1);
131 declare!(EXTI15_10);
132 declare!(EXTI2);
133 declare!(EXTI3);
134 declare!(EXTI4);
135 declare!(EXTI9_5);
136 declare!(FLASH);
137 declare!(FPU);
138 declare!(I2C1_ER);
139 declare!(I2C1_EV);
140 declare!(I2C2_ER);
141 declare!(I2C2_EV);
142 declare!(I2C3_ER);
143 declare!(I2C3_EV);
144 declare!(I2C4_ER);
145 declare!(I2C4_EV);
146 declare!(LPTIM1);
147 declare!(LPTIM2);
148 declare!(LPUART1);
149 declare!(PVD_PVM);
150 declare!(QUADSPI);
151 declare!(RCC);
152 declare!(RNG);
153 declare!(RTC_Alarm);
154 declare!(RTC_WKUP);
155 declare!(SAI1);
156 declare!(SDMMC1);
157 declare!(SPI1);
158 declare!(SPI2);
159 declare!(SPI3);
160 declare!(TAMP_STAMP);
161 declare!(TIM1_BRK_TIM15);
162 declare!(TIM1_CC);
163 declare!(TIM1_TRG_COM);
164 declare!(TIM1_UP_TIM16);
165 declare!(TIM2);
166 declare!(TIM3);
167 declare!(TIM6_DAC);
168 declare!(TSC);
169 declare!(UART4);
170 declare!(USART1);
171 declare!(USART2);
172 declare!(USART3);
173 declare!(USB);
174 declare!(WWDG);
175}
176mod interrupt_vector {
177 extern "C" {
178 fn ADC1();
179 fn AES();
180 fn CAN1_RX0();
181 fn CAN1_RX1();
182 fn CAN1_SCE();
183 fn CAN1_TX();
184 fn COMP();
185 fn CRS();
186 fn DFSDM1_FLT0();
187 fn DFSDM1_FLT1();
188 fn DMA1_Channel1();
189 fn DMA1_Channel2();
190 fn DMA1_Channel3();
191 fn DMA1_Channel4();
192 fn DMA1_Channel5();
193 fn DMA1_Channel6();
194 fn DMA1_Channel7();
195 fn DMA2_Channel1();
196 fn DMA2_Channel2();
197 fn DMA2_Channel3();
198 fn DMA2_Channel4();
199 fn DMA2_Channel5();
200 fn DMA2_Channel6();
201 fn DMA2_Channel7();
202 fn EXTI0();
203 fn EXTI1();
204 fn EXTI15_10();
205 fn EXTI2();
206 fn EXTI3();
207 fn EXTI4();
208 fn EXTI9_5();
209 fn FLASH();
210 fn FPU();
211 fn I2C1_ER();
212 fn I2C1_EV();
213 fn I2C2_ER();
214 fn I2C2_EV();
215 fn I2C3_ER();
216 fn I2C3_EV();
217 fn I2C4_ER();
218 fn I2C4_EV();
219 fn LPTIM1();
220 fn LPTIM2();
221 fn LPUART1();
222 fn PVD_PVM();
223 fn QUADSPI();
224 fn RCC();
225 fn RNG();
226 fn RTC_Alarm();
227 fn RTC_WKUP();
228 fn SAI1();
229 fn SDMMC1();
230 fn SPI1();
231 fn SPI2();
232 fn SPI3();
233 fn TAMP_STAMP();
234 fn TIM1_BRK_TIM15();
235 fn TIM1_CC();
236 fn TIM1_TRG_COM();
237 fn TIM1_UP_TIM16();
238 fn TIM2();
239 fn TIM3();
240 fn TIM6_DAC();
241 fn TSC();
242 fn UART4();
243 fn USART1();
244 fn USART2();
245 fn USART3();
246 fn USB();
247 fn WWDG();
248 }
249 pub union Vector {
250 _handler: unsafe extern "C" fn(),
251 _reserved: u32,
252 }
253 #[link_section = ".vector_table.interrupts"]
254 #[no_mangle]
255 pub static __INTERRUPTS: [Vector; 85] = [
256 Vector { _handler: WWDG },
257 Vector { _handler: PVD_PVM },
258 Vector {
259 _handler: TAMP_STAMP,
260 },
261 Vector { _handler: RTC_WKUP },
262 Vector { _handler: FLASH },
263 Vector { _handler: RCC },
264 Vector { _handler: EXTI0 },
265 Vector { _handler: EXTI1 },
266 Vector { _handler: EXTI2 },
267 Vector { _handler: EXTI3 },
268 Vector { _handler: EXTI4 },
269 Vector {
270 _handler: DMA1_Channel1,
271 },
272 Vector {
273 _handler: DMA1_Channel2,
274 },
275 Vector {
276 _handler: DMA1_Channel3,
277 },
278 Vector {
279 _handler: DMA1_Channel4,
280 },
281 Vector {
282 _handler: DMA1_Channel5,
283 },
284 Vector {
285 _handler: DMA1_Channel6,
286 },
287 Vector {
288 _handler: DMA1_Channel7,
289 },
290 Vector { _handler: ADC1 },
291 Vector { _handler: CAN1_TX },
292 Vector { _handler: CAN1_RX0 },
293 Vector { _handler: CAN1_RX1 },
294 Vector { _handler: CAN1_SCE },
295 Vector { _handler: EXTI9_5 },
296 Vector {
297 _handler: TIM1_BRK_TIM15,
298 },
299 Vector {
300 _handler: TIM1_UP_TIM16,
301 },
302 Vector {
303 _handler: TIM1_TRG_COM,
304 },
305 Vector { _handler: TIM1_CC },
306 Vector { _handler: TIM2 },
307 Vector { _handler: TIM3 },
308 Vector { _reserved: 0 },
309 Vector { _handler: I2C1_EV },
310 Vector { _handler: I2C1_ER },
311 Vector { _handler: I2C2_EV },
312 Vector { _handler: I2C2_ER },
313 Vector { _handler: SPI1 },
314 Vector { _handler: SPI2 },
315 Vector { _handler: USART1 },
316 Vector { _handler: USART2 },
317 Vector { _handler: USART3 },
318 Vector {
319 _handler: EXTI15_10,
320 },
321 Vector {
322 _handler: RTC_Alarm,
323 },
324 Vector { _reserved: 0 },
325 Vector { _reserved: 0 },
326 Vector { _reserved: 0 },
327 Vector { _reserved: 0 },
328 Vector { _reserved: 0 },
329 Vector { _reserved: 0 },
330 Vector { _reserved: 0 },
331 Vector { _handler: SDMMC1 },
332 Vector { _reserved: 0 },
333 Vector { _handler: SPI3 },
334 Vector { _handler: UART4 },
335 Vector { _reserved: 0 },
336 Vector { _handler: TIM6_DAC },
337 Vector { _reserved: 0 },
338 Vector {
339 _handler: DMA2_Channel1,
340 },
341 Vector {
342 _handler: DMA2_Channel2,
343 },
344 Vector {
345 _handler: DMA2_Channel3,
346 },
347 Vector {
348 _handler: DMA2_Channel4,
349 },
350 Vector {
351 _handler: DMA2_Channel5,
352 },
353 Vector {
354 _handler: DFSDM1_FLT0,
355 },
356 Vector {
357 _handler: DFSDM1_FLT1,
358 },
359 Vector { _reserved: 0 },
360 Vector { _handler: COMP },
361 Vector { _handler: LPTIM1 },
362 Vector { _handler: LPTIM2 },
363 Vector { _handler: USB },
364 Vector {
365 _handler: DMA2_Channel6,
366 },
367 Vector {
368 _handler: DMA2_Channel7,
369 },
370 Vector { _handler: LPUART1 },
371 Vector { _handler: QUADSPI },
372 Vector { _handler: I2C3_EV },
373 Vector { _handler: I2C3_ER },
374 Vector { _handler: SAI1 },
375 Vector { _reserved: 0 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TSC },
378 Vector { _reserved: 0 },
379 Vector { _handler: AES },
380 Vector { _handler: RNG },
381 Vector { _handler: FPU },
382 Vector { _handler: CRS },
383 Vector { _handler: I2C4_EV },
384 Vector { _handler: I2C4_ER },
385 ];
386}
16impl_gpio_pin!(PA0, 0, 0, EXTI0); 387impl_gpio_pin!(PA0, 0, 0, EXTI0);
17impl_gpio_pin!(PA1, 0, 1, EXTI1); 388impl_gpio_pin!(PA1, 0, 1, EXTI1);
18impl_gpio_pin!(PA2, 0, 2, EXTI2); 389impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l471qe.rs b/embassy-stm32/src/chip/stm32l471qe.rs
index 937127de9..192060c1f 100644
--- a/embassy-stm32/src/chip/stm32l471qe.rs
+++ b/embassy-stm32/src/chip/stm32l471qe.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -13,8 +13,409 @@ peripherals!(
13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, 13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2,
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40010000;
17pub const EXTI_BASE: usize = 0x40010400;
16pub const GPIO_BASE: usize = 0x48000000; 18pub const GPIO_BASE: usize = 0x48000000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
20
21pub mod interrupt {
22 pub use cortex_m::interrupt::{CriticalSection, Mutex};
23 pub use embassy::interrupt::{declare, take, Interrupt};
24 pub use embassy_extras::interrupt::Priority4 as Priority;
25
26 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
27 #[allow(non_camel_case_types)]
28 enum InterruptEnum {
29 ADC1_2 = 18,
30 ADC3 = 47,
31 CAN1_RX0 = 20,
32 CAN1_RX1 = 21,
33 CAN1_SCE = 22,
34 CAN1_TX = 19,
35 COMP = 64,
36 DFSDM1_FLT0 = 61,
37 DFSDM1_FLT1 = 62,
38 DFSDM1_FLT2 = 63,
39 DFSDM1_FLT3 = 42,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2_Channel1 = 56,
48 DMA2_Channel2 = 57,
49 DMA2_Channel3 = 58,
50 DMA2_Channel4 = 59,
51 DMA2_Channel5 = 60,
52 DMA2_Channel6 = 68,
53 DMA2_Channel7 = 69,
54 EXTI0 = 6,
55 EXTI1 = 7,
56 EXTI15_10 = 40,
57 EXTI2 = 8,
58 EXTI3 = 9,
59 EXTI4 = 10,
60 EXTI9_5 = 23,
61 FLASH = 4,
62 FMC = 48,
63 FPU = 81,
64 I2C1_ER = 32,
65 I2C1_EV = 31,
66 I2C2_ER = 34,
67 I2C2_EV = 33,
68 I2C3_ER = 73,
69 I2C3_EV = 72,
70 LPTIM1 = 65,
71 LPTIM2 = 66,
72 LPUART1 = 70,
73 PVD_PVM = 1,
74 QUADSPI = 71,
75 RCC = 5,
76 RNG = 80,
77 RTC_Alarm = 41,
78 RTC_WKUP = 3,
79 SAI1 = 74,
80 SAI2 = 75,
81 SDMMC1 = 49,
82 SPI1 = 35,
83 SPI2 = 36,
84 SPI3 = 51,
85 SWPMI1 = 76,
86 TAMP_STAMP = 2,
87 TIM1_BRK_TIM15 = 24,
88 TIM1_CC = 27,
89 TIM1_TRG_COM_TIM17 = 26,
90 TIM1_UP_TIM16 = 25,
91 TIM2 = 28,
92 TIM3 = 29,
93 TIM4 = 30,
94 TIM5 = 50,
95 TIM6_DAC = 54,
96 TIM7 = 55,
97 TIM8_BRK = 43,
98 TIM8_CC = 46,
99 TIM8_TRG_COM = 45,
100 TIM8_UP = 44,
101 TSC = 77,
102 UART4 = 52,
103 UART5 = 53,
104 USART1 = 37,
105 USART2 = 38,
106 USART3 = 39,
107 WWDG = 0,
108 }
109 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
110 #[inline(always)]
111 fn number(self) -> u16 {
112 self as u16
113 }
114 }
115
116 declare!(ADC1_2);
117 declare!(ADC3);
118 declare!(CAN1_RX0);
119 declare!(CAN1_RX1);
120 declare!(CAN1_SCE);
121 declare!(CAN1_TX);
122 declare!(COMP);
123 declare!(DFSDM1_FLT0);
124 declare!(DFSDM1_FLT1);
125 declare!(DFSDM1_FLT2);
126 declare!(DFSDM1_FLT3);
127 declare!(DMA1_Channel1);
128 declare!(DMA1_Channel2);
129 declare!(DMA1_Channel3);
130 declare!(DMA1_Channel4);
131 declare!(DMA1_Channel5);
132 declare!(DMA1_Channel6);
133 declare!(DMA1_Channel7);
134 declare!(DMA2_Channel1);
135 declare!(DMA2_Channel2);
136 declare!(DMA2_Channel3);
137 declare!(DMA2_Channel4);
138 declare!(DMA2_Channel5);
139 declare!(DMA2_Channel6);
140 declare!(DMA2_Channel7);
141 declare!(EXTI0);
142 declare!(EXTI1);
143 declare!(EXTI15_10);
144 declare!(EXTI2);
145 declare!(EXTI3);
146 declare!(EXTI4);
147 declare!(EXTI9_5);
148 declare!(FLASH);
149 declare!(FMC);
150 declare!(FPU);
151 declare!(I2C1_ER);
152 declare!(I2C1_EV);
153 declare!(I2C2_ER);
154 declare!(I2C2_EV);
155 declare!(I2C3_ER);
156 declare!(I2C3_EV);
157 declare!(LPTIM1);
158 declare!(LPTIM2);
159 declare!(LPUART1);
160 declare!(PVD_PVM);
161 declare!(QUADSPI);
162 declare!(RCC);
163 declare!(RNG);
164 declare!(RTC_Alarm);
165 declare!(RTC_WKUP);
166 declare!(SAI1);
167 declare!(SAI2);
168 declare!(SDMMC1);
169 declare!(SPI1);
170 declare!(SPI2);
171 declare!(SPI3);
172 declare!(SWPMI1);
173 declare!(TAMP_STAMP);
174 declare!(TIM1_BRK_TIM15);
175 declare!(TIM1_CC);
176 declare!(TIM1_TRG_COM_TIM17);
177 declare!(TIM1_UP_TIM16);
178 declare!(TIM2);
179 declare!(TIM3);
180 declare!(TIM4);
181 declare!(TIM5);
182 declare!(TIM6_DAC);
183 declare!(TIM7);
184 declare!(TIM8_BRK);
185 declare!(TIM8_CC);
186 declare!(TIM8_TRG_COM);
187 declare!(TIM8_UP);
188 declare!(TSC);
189 declare!(UART4);
190 declare!(UART5);
191 declare!(USART1);
192 declare!(USART2);
193 declare!(USART3);
194 declare!(WWDG);
195}
196mod interrupt_vector {
197 extern "C" {
198 fn ADC1_2();
199 fn ADC3();
200 fn CAN1_RX0();
201 fn CAN1_RX1();
202 fn CAN1_SCE();
203 fn CAN1_TX();
204 fn COMP();
205 fn DFSDM1_FLT0();
206 fn DFSDM1_FLT1();
207 fn DFSDM1_FLT2();
208 fn DFSDM1_FLT3();
209 fn DMA1_Channel1();
210 fn DMA1_Channel2();
211 fn DMA1_Channel3();
212 fn DMA1_Channel4();
213 fn DMA1_Channel5();
214 fn DMA1_Channel6();
215 fn DMA1_Channel7();
216 fn DMA2_Channel1();
217 fn DMA2_Channel2();
218 fn DMA2_Channel3();
219 fn DMA2_Channel4();
220 fn DMA2_Channel5();
221 fn DMA2_Channel6();
222 fn DMA2_Channel7();
223 fn EXTI0();
224 fn EXTI1();
225 fn EXTI15_10();
226 fn EXTI2();
227 fn EXTI3();
228 fn EXTI4();
229 fn EXTI9_5();
230 fn FLASH();
231 fn FMC();
232 fn FPU();
233 fn I2C1_ER();
234 fn I2C1_EV();
235 fn I2C2_ER();
236 fn I2C2_EV();
237 fn I2C3_ER();
238 fn I2C3_EV();
239 fn LPTIM1();
240 fn LPTIM2();
241 fn LPUART1();
242 fn PVD_PVM();
243 fn QUADSPI();
244 fn RCC();
245 fn RNG();
246 fn RTC_Alarm();
247 fn RTC_WKUP();
248 fn SAI1();
249 fn SAI2();
250 fn SDMMC1();
251 fn SPI1();
252 fn SPI2();
253 fn SPI3();
254 fn SWPMI1();
255 fn TAMP_STAMP();
256 fn TIM1_BRK_TIM15();
257 fn TIM1_CC();
258 fn TIM1_TRG_COM_TIM17();
259 fn TIM1_UP_TIM16();
260 fn TIM2();
261 fn TIM3();
262 fn TIM4();
263 fn TIM5();
264 fn TIM6_DAC();
265 fn TIM7();
266 fn TIM8_BRK();
267 fn TIM8_CC();
268 fn TIM8_TRG_COM();
269 fn TIM8_UP();
270 fn TSC();
271 fn UART4();
272 fn UART5();
273 fn USART1();
274 fn USART2();
275 fn USART3();
276 fn WWDG();
277 }
278 pub union Vector {
279 _handler: unsafe extern "C" fn(),
280 _reserved: u32,
281 }
282 #[link_section = ".vector_table.interrupts"]
283 #[no_mangle]
284 pub static __INTERRUPTS: [Vector; 82] = [
285 Vector { _handler: WWDG },
286 Vector { _handler: PVD_PVM },
287 Vector {
288 _handler: TAMP_STAMP,
289 },
290 Vector { _handler: RTC_WKUP },
291 Vector { _handler: FLASH },
292 Vector { _handler: RCC },
293 Vector { _handler: EXTI0 },
294 Vector { _handler: EXTI1 },
295 Vector { _handler: EXTI2 },
296 Vector { _handler: EXTI3 },
297 Vector { _handler: EXTI4 },
298 Vector {
299 _handler: DMA1_Channel1,
300 },
301 Vector {
302 _handler: DMA1_Channel2,
303 },
304 Vector {
305 _handler: DMA1_Channel3,
306 },
307 Vector {
308 _handler: DMA1_Channel4,
309 },
310 Vector {
311 _handler: DMA1_Channel5,
312 },
313 Vector {
314 _handler: DMA1_Channel6,
315 },
316 Vector {
317 _handler: DMA1_Channel7,
318 },
319 Vector { _handler: ADC1_2 },
320 Vector { _handler: CAN1_TX },
321 Vector { _handler: CAN1_RX0 },
322 Vector { _handler: CAN1_RX1 },
323 Vector { _handler: CAN1_SCE },
324 Vector { _handler: EXTI9_5 },
325 Vector {
326 _handler: TIM1_BRK_TIM15,
327 },
328 Vector {
329 _handler: TIM1_UP_TIM16,
330 },
331 Vector {
332 _handler: TIM1_TRG_COM_TIM17,
333 },
334 Vector { _handler: TIM1_CC },
335 Vector { _handler: TIM2 },
336 Vector { _handler: TIM3 },
337 Vector { _handler: TIM4 },
338 Vector { _handler: I2C1_EV },
339 Vector { _handler: I2C1_ER },
340 Vector { _handler: I2C2_EV },
341 Vector { _handler: I2C2_ER },
342 Vector { _handler: SPI1 },
343 Vector { _handler: SPI2 },
344 Vector { _handler: USART1 },
345 Vector { _handler: USART2 },
346 Vector { _handler: USART3 },
347 Vector {
348 _handler: EXTI15_10,
349 },
350 Vector {
351 _handler: RTC_Alarm,
352 },
353 Vector {
354 _handler: DFSDM1_FLT3,
355 },
356 Vector { _handler: TIM8_BRK },
357 Vector { _handler: TIM8_UP },
358 Vector {
359 _handler: TIM8_TRG_COM,
360 },
361 Vector { _handler: TIM8_CC },
362 Vector { _handler: ADC3 },
363 Vector { _handler: FMC },
364 Vector { _handler: SDMMC1 },
365 Vector { _handler: TIM5 },
366 Vector { _handler: SPI3 },
367 Vector { _handler: UART4 },
368 Vector { _handler: UART5 },
369 Vector { _handler: TIM6_DAC },
370 Vector { _handler: TIM7 },
371 Vector {
372 _handler: DMA2_Channel1,
373 },
374 Vector {
375 _handler: DMA2_Channel2,
376 },
377 Vector {
378 _handler: DMA2_Channel3,
379 },
380 Vector {
381 _handler: DMA2_Channel4,
382 },
383 Vector {
384 _handler: DMA2_Channel5,
385 },
386 Vector {
387 _handler: DFSDM1_FLT0,
388 },
389 Vector {
390 _handler: DFSDM1_FLT1,
391 },
392 Vector {
393 _handler: DFSDM1_FLT2,
394 },
395 Vector { _handler: COMP },
396 Vector { _handler: LPTIM1 },
397 Vector { _handler: LPTIM2 },
398 Vector { _reserved: 0 },
399 Vector {
400 _handler: DMA2_Channel6,
401 },
402 Vector {
403 _handler: DMA2_Channel7,
404 },
405 Vector { _handler: LPUART1 },
406 Vector { _handler: QUADSPI },
407 Vector { _handler: I2C3_EV },
408 Vector { _handler: I2C3_ER },
409 Vector { _handler: SAI1 },
410 Vector { _handler: SAI2 },
411 Vector { _handler: SWPMI1 },
412 Vector { _handler: TSC },
413 Vector { _reserved: 0 },
414 Vector { _reserved: 0 },
415 Vector { _handler: RNG },
416 Vector { _handler: FPU },
417 ];
418}
18impl_gpio_pin!(PA0, 0, 0, EXTI0); 419impl_gpio_pin!(PA0, 0, 0, EXTI0);
19impl_gpio_pin!(PA1, 0, 1, EXTI1); 420impl_gpio_pin!(PA1, 0, 1, EXTI1);
20impl_gpio_pin!(PA2, 0, 2, EXTI2); 421impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l471qg.rs b/embassy-stm32/src/chip/stm32l471qg.rs
index 937127de9..192060c1f 100644
--- a/embassy-stm32/src/chip/stm32l471qg.rs
+++ b/embassy-stm32/src/chip/stm32l471qg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -13,8 +13,409 @@ peripherals!(
13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, 13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2,
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40010000;
17pub const EXTI_BASE: usize = 0x40010400;
16pub const GPIO_BASE: usize = 0x48000000; 18pub const GPIO_BASE: usize = 0x48000000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
20
21pub mod interrupt {
22 pub use cortex_m::interrupt::{CriticalSection, Mutex};
23 pub use embassy::interrupt::{declare, take, Interrupt};
24 pub use embassy_extras::interrupt::Priority4 as Priority;
25
26 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
27 #[allow(non_camel_case_types)]
28 enum InterruptEnum {
29 ADC1_2 = 18,
30 ADC3 = 47,
31 CAN1_RX0 = 20,
32 CAN1_RX1 = 21,
33 CAN1_SCE = 22,
34 CAN1_TX = 19,
35 COMP = 64,
36 DFSDM1_FLT0 = 61,
37 DFSDM1_FLT1 = 62,
38 DFSDM1_FLT2 = 63,
39 DFSDM1_FLT3 = 42,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2_Channel1 = 56,
48 DMA2_Channel2 = 57,
49 DMA2_Channel3 = 58,
50 DMA2_Channel4 = 59,
51 DMA2_Channel5 = 60,
52 DMA2_Channel6 = 68,
53 DMA2_Channel7 = 69,
54 EXTI0 = 6,
55 EXTI1 = 7,
56 EXTI15_10 = 40,
57 EXTI2 = 8,
58 EXTI3 = 9,
59 EXTI4 = 10,
60 EXTI9_5 = 23,
61 FLASH = 4,
62 FMC = 48,
63 FPU = 81,
64 I2C1_ER = 32,
65 I2C1_EV = 31,
66 I2C2_ER = 34,
67 I2C2_EV = 33,
68 I2C3_ER = 73,
69 I2C3_EV = 72,
70 LPTIM1 = 65,
71 LPTIM2 = 66,
72 LPUART1 = 70,
73 PVD_PVM = 1,
74 QUADSPI = 71,
75 RCC = 5,
76 RNG = 80,
77 RTC_Alarm = 41,
78 RTC_WKUP = 3,
79 SAI1 = 74,
80 SAI2 = 75,
81 SDMMC1 = 49,
82 SPI1 = 35,
83 SPI2 = 36,
84 SPI3 = 51,
85 SWPMI1 = 76,
86 TAMP_STAMP = 2,
87 TIM1_BRK_TIM15 = 24,
88 TIM1_CC = 27,
89 TIM1_TRG_COM_TIM17 = 26,
90 TIM1_UP_TIM16 = 25,
91 TIM2 = 28,
92 TIM3 = 29,
93 TIM4 = 30,
94 TIM5 = 50,
95 TIM6_DAC = 54,
96 TIM7 = 55,
97 TIM8_BRK = 43,
98 TIM8_CC = 46,
99 TIM8_TRG_COM = 45,
100 TIM8_UP = 44,
101 TSC = 77,
102 UART4 = 52,
103 UART5 = 53,
104 USART1 = 37,
105 USART2 = 38,
106 USART3 = 39,
107 WWDG = 0,
108 }
109 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
110 #[inline(always)]
111 fn number(self) -> u16 {
112 self as u16
113 }
114 }
115
116 declare!(ADC1_2);
117 declare!(ADC3);
118 declare!(CAN1_RX0);
119 declare!(CAN1_RX1);
120 declare!(CAN1_SCE);
121 declare!(CAN1_TX);
122 declare!(COMP);
123 declare!(DFSDM1_FLT0);
124 declare!(DFSDM1_FLT1);
125 declare!(DFSDM1_FLT2);
126 declare!(DFSDM1_FLT3);
127 declare!(DMA1_Channel1);
128 declare!(DMA1_Channel2);
129 declare!(DMA1_Channel3);
130 declare!(DMA1_Channel4);
131 declare!(DMA1_Channel5);
132 declare!(DMA1_Channel6);
133 declare!(DMA1_Channel7);
134 declare!(DMA2_Channel1);
135 declare!(DMA2_Channel2);
136 declare!(DMA2_Channel3);
137 declare!(DMA2_Channel4);
138 declare!(DMA2_Channel5);
139 declare!(DMA2_Channel6);
140 declare!(DMA2_Channel7);
141 declare!(EXTI0);
142 declare!(EXTI1);
143 declare!(EXTI15_10);
144 declare!(EXTI2);
145 declare!(EXTI3);
146 declare!(EXTI4);
147 declare!(EXTI9_5);
148 declare!(FLASH);
149 declare!(FMC);
150 declare!(FPU);
151 declare!(I2C1_ER);
152 declare!(I2C1_EV);
153 declare!(I2C2_ER);
154 declare!(I2C2_EV);
155 declare!(I2C3_ER);
156 declare!(I2C3_EV);
157 declare!(LPTIM1);
158 declare!(LPTIM2);
159 declare!(LPUART1);
160 declare!(PVD_PVM);
161 declare!(QUADSPI);
162 declare!(RCC);
163 declare!(RNG);
164 declare!(RTC_Alarm);
165 declare!(RTC_WKUP);
166 declare!(SAI1);
167 declare!(SAI2);
168 declare!(SDMMC1);
169 declare!(SPI1);
170 declare!(SPI2);
171 declare!(SPI3);
172 declare!(SWPMI1);
173 declare!(TAMP_STAMP);
174 declare!(TIM1_BRK_TIM15);
175 declare!(TIM1_CC);
176 declare!(TIM1_TRG_COM_TIM17);
177 declare!(TIM1_UP_TIM16);
178 declare!(TIM2);
179 declare!(TIM3);
180 declare!(TIM4);
181 declare!(TIM5);
182 declare!(TIM6_DAC);
183 declare!(TIM7);
184 declare!(TIM8_BRK);
185 declare!(TIM8_CC);
186 declare!(TIM8_TRG_COM);
187 declare!(TIM8_UP);
188 declare!(TSC);
189 declare!(UART4);
190 declare!(UART5);
191 declare!(USART1);
192 declare!(USART2);
193 declare!(USART3);
194 declare!(WWDG);
195}
196mod interrupt_vector {
197 extern "C" {
198 fn ADC1_2();
199 fn ADC3();
200 fn CAN1_RX0();
201 fn CAN1_RX1();
202 fn CAN1_SCE();
203 fn CAN1_TX();
204 fn COMP();
205 fn DFSDM1_FLT0();
206 fn DFSDM1_FLT1();
207 fn DFSDM1_FLT2();
208 fn DFSDM1_FLT3();
209 fn DMA1_Channel1();
210 fn DMA1_Channel2();
211 fn DMA1_Channel3();
212 fn DMA1_Channel4();
213 fn DMA1_Channel5();
214 fn DMA1_Channel6();
215 fn DMA1_Channel7();
216 fn DMA2_Channel1();
217 fn DMA2_Channel2();
218 fn DMA2_Channel3();
219 fn DMA2_Channel4();
220 fn DMA2_Channel5();
221 fn DMA2_Channel6();
222 fn DMA2_Channel7();
223 fn EXTI0();
224 fn EXTI1();
225 fn EXTI15_10();
226 fn EXTI2();
227 fn EXTI3();
228 fn EXTI4();
229 fn EXTI9_5();
230 fn FLASH();
231 fn FMC();
232 fn FPU();
233 fn I2C1_ER();
234 fn I2C1_EV();
235 fn I2C2_ER();
236 fn I2C2_EV();
237 fn I2C3_ER();
238 fn I2C3_EV();
239 fn LPTIM1();
240 fn LPTIM2();
241 fn LPUART1();
242 fn PVD_PVM();
243 fn QUADSPI();
244 fn RCC();
245 fn RNG();
246 fn RTC_Alarm();
247 fn RTC_WKUP();
248 fn SAI1();
249 fn SAI2();
250 fn SDMMC1();
251 fn SPI1();
252 fn SPI2();
253 fn SPI3();
254 fn SWPMI1();
255 fn TAMP_STAMP();
256 fn TIM1_BRK_TIM15();
257 fn TIM1_CC();
258 fn TIM1_TRG_COM_TIM17();
259 fn TIM1_UP_TIM16();
260 fn TIM2();
261 fn TIM3();
262 fn TIM4();
263 fn TIM5();
264 fn TIM6_DAC();
265 fn TIM7();
266 fn TIM8_BRK();
267 fn TIM8_CC();
268 fn TIM8_TRG_COM();
269 fn TIM8_UP();
270 fn TSC();
271 fn UART4();
272 fn UART5();
273 fn USART1();
274 fn USART2();
275 fn USART3();
276 fn WWDG();
277 }
278 pub union Vector {
279 _handler: unsafe extern "C" fn(),
280 _reserved: u32,
281 }
282 #[link_section = ".vector_table.interrupts"]
283 #[no_mangle]
284 pub static __INTERRUPTS: [Vector; 82] = [
285 Vector { _handler: WWDG },
286 Vector { _handler: PVD_PVM },
287 Vector {
288 _handler: TAMP_STAMP,
289 },
290 Vector { _handler: RTC_WKUP },
291 Vector { _handler: FLASH },
292 Vector { _handler: RCC },
293 Vector { _handler: EXTI0 },
294 Vector { _handler: EXTI1 },
295 Vector { _handler: EXTI2 },
296 Vector { _handler: EXTI3 },
297 Vector { _handler: EXTI4 },
298 Vector {
299 _handler: DMA1_Channel1,
300 },
301 Vector {
302 _handler: DMA1_Channel2,
303 },
304 Vector {
305 _handler: DMA1_Channel3,
306 },
307 Vector {
308 _handler: DMA1_Channel4,
309 },
310 Vector {
311 _handler: DMA1_Channel5,
312 },
313 Vector {
314 _handler: DMA1_Channel6,
315 },
316 Vector {
317 _handler: DMA1_Channel7,
318 },
319 Vector { _handler: ADC1_2 },
320 Vector { _handler: CAN1_TX },
321 Vector { _handler: CAN1_RX0 },
322 Vector { _handler: CAN1_RX1 },
323 Vector { _handler: CAN1_SCE },
324 Vector { _handler: EXTI9_5 },
325 Vector {
326 _handler: TIM1_BRK_TIM15,
327 },
328 Vector {
329 _handler: TIM1_UP_TIM16,
330 },
331 Vector {
332 _handler: TIM1_TRG_COM_TIM17,
333 },
334 Vector { _handler: TIM1_CC },
335 Vector { _handler: TIM2 },
336 Vector { _handler: TIM3 },
337 Vector { _handler: TIM4 },
338 Vector { _handler: I2C1_EV },
339 Vector { _handler: I2C1_ER },
340 Vector { _handler: I2C2_EV },
341 Vector { _handler: I2C2_ER },
342 Vector { _handler: SPI1 },
343 Vector { _handler: SPI2 },
344 Vector { _handler: USART1 },
345 Vector { _handler: USART2 },
346 Vector { _handler: USART3 },
347 Vector {
348 _handler: EXTI15_10,
349 },
350 Vector {
351 _handler: RTC_Alarm,
352 },
353 Vector {
354 _handler: DFSDM1_FLT3,
355 },
356 Vector { _handler: TIM8_BRK },
357 Vector { _handler: TIM8_UP },
358 Vector {
359 _handler: TIM8_TRG_COM,
360 },
361 Vector { _handler: TIM8_CC },
362 Vector { _handler: ADC3 },
363 Vector { _handler: FMC },
364 Vector { _handler: SDMMC1 },
365 Vector { _handler: TIM5 },
366 Vector { _handler: SPI3 },
367 Vector { _handler: UART4 },
368 Vector { _handler: UART5 },
369 Vector { _handler: TIM6_DAC },
370 Vector { _handler: TIM7 },
371 Vector {
372 _handler: DMA2_Channel1,
373 },
374 Vector {
375 _handler: DMA2_Channel2,
376 },
377 Vector {
378 _handler: DMA2_Channel3,
379 },
380 Vector {
381 _handler: DMA2_Channel4,
382 },
383 Vector {
384 _handler: DMA2_Channel5,
385 },
386 Vector {
387 _handler: DFSDM1_FLT0,
388 },
389 Vector {
390 _handler: DFSDM1_FLT1,
391 },
392 Vector {
393 _handler: DFSDM1_FLT2,
394 },
395 Vector { _handler: COMP },
396 Vector { _handler: LPTIM1 },
397 Vector { _handler: LPTIM2 },
398 Vector { _reserved: 0 },
399 Vector {
400 _handler: DMA2_Channel6,
401 },
402 Vector {
403 _handler: DMA2_Channel7,
404 },
405 Vector { _handler: LPUART1 },
406 Vector { _handler: QUADSPI },
407 Vector { _handler: I2C3_EV },
408 Vector { _handler: I2C3_ER },
409 Vector { _handler: SAI1 },
410 Vector { _handler: SAI2 },
411 Vector { _handler: SWPMI1 },
412 Vector { _handler: TSC },
413 Vector { _reserved: 0 },
414 Vector { _reserved: 0 },
415 Vector { _handler: RNG },
416 Vector { _handler: FPU },
417 ];
418}
18impl_gpio_pin!(PA0, 0, 0, EXTI0); 419impl_gpio_pin!(PA0, 0, 0, EXTI0);
19impl_gpio_pin!(PA1, 0, 1, EXTI1); 420impl_gpio_pin!(PA1, 0, 1, EXTI1);
20impl_gpio_pin!(PA2, 0, 2, EXTI2); 421impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l471re.rs b/embassy-stm32/src/chip/stm32l471re.rs
index 937127de9..192060c1f 100644
--- a/embassy-stm32/src/chip/stm32l471re.rs
+++ b/embassy-stm32/src/chip/stm32l471re.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -13,8 +13,409 @@ peripherals!(
13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, 13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2,
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40010000;
17pub const EXTI_BASE: usize = 0x40010400;
16pub const GPIO_BASE: usize = 0x48000000; 18pub const GPIO_BASE: usize = 0x48000000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
20
21pub mod interrupt {
22 pub use cortex_m::interrupt::{CriticalSection, Mutex};
23 pub use embassy::interrupt::{declare, take, Interrupt};
24 pub use embassy_extras::interrupt::Priority4 as Priority;
25
26 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
27 #[allow(non_camel_case_types)]
28 enum InterruptEnum {
29 ADC1_2 = 18,
30 ADC3 = 47,
31 CAN1_RX0 = 20,
32 CAN1_RX1 = 21,
33 CAN1_SCE = 22,
34 CAN1_TX = 19,
35 COMP = 64,
36 DFSDM1_FLT0 = 61,
37 DFSDM1_FLT1 = 62,
38 DFSDM1_FLT2 = 63,
39 DFSDM1_FLT3 = 42,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2_Channel1 = 56,
48 DMA2_Channel2 = 57,
49 DMA2_Channel3 = 58,
50 DMA2_Channel4 = 59,
51 DMA2_Channel5 = 60,
52 DMA2_Channel6 = 68,
53 DMA2_Channel7 = 69,
54 EXTI0 = 6,
55 EXTI1 = 7,
56 EXTI15_10 = 40,
57 EXTI2 = 8,
58 EXTI3 = 9,
59 EXTI4 = 10,
60 EXTI9_5 = 23,
61 FLASH = 4,
62 FMC = 48,
63 FPU = 81,
64 I2C1_ER = 32,
65 I2C1_EV = 31,
66 I2C2_ER = 34,
67 I2C2_EV = 33,
68 I2C3_ER = 73,
69 I2C3_EV = 72,
70 LPTIM1 = 65,
71 LPTIM2 = 66,
72 LPUART1 = 70,
73 PVD_PVM = 1,
74 QUADSPI = 71,
75 RCC = 5,
76 RNG = 80,
77 RTC_Alarm = 41,
78 RTC_WKUP = 3,
79 SAI1 = 74,
80 SAI2 = 75,
81 SDMMC1 = 49,
82 SPI1 = 35,
83 SPI2 = 36,
84 SPI3 = 51,
85 SWPMI1 = 76,
86 TAMP_STAMP = 2,
87 TIM1_BRK_TIM15 = 24,
88 TIM1_CC = 27,
89 TIM1_TRG_COM_TIM17 = 26,
90 TIM1_UP_TIM16 = 25,
91 TIM2 = 28,
92 TIM3 = 29,
93 TIM4 = 30,
94 TIM5 = 50,
95 TIM6_DAC = 54,
96 TIM7 = 55,
97 TIM8_BRK = 43,
98 TIM8_CC = 46,
99 TIM8_TRG_COM = 45,
100 TIM8_UP = 44,
101 TSC = 77,
102 UART4 = 52,
103 UART5 = 53,
104 USART1 = 37,
105 USART2 = 38,
106 USART3 = 39,
107 WWDG = 0,
108 }
109 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
110 #[inline(always)]
111 fn number(self) -> u16 {
112 self as u16
113 }
114 }
115
116 declare!(ADC1_2);
117 declare!(ADC3);
118 declare!(CAN1_RX0);
119 declare!(CAN1_RX1);
120 declare!(CAN1_SCE);
121 declare!(CAN1_TX);
122 declare!(COMP);
123 declare!(DFSDM1_FLT0);
124 declare!(DFSDM1_FLT1);
125 declare!(DFSDM1_FLT2);
126 declare!(DFSDM1_FLT3);
127 declare!(DMA1_Channel1);
128 declare!(DMA1_Channel2);
129 declare!(DMA1_Channel3);
130 declare!(DMA1_Channel4);
131 declare!(DMA1_Channel5);
132 declare!(DMA1_Channel6);
133 declare!(DMA1_Channel7);
134 declare!(DMA2_Channel1);
135 declare!(DMA2_Channel2);
136 declare!(DMA2_Channel3);
137 declare!(DMA2_Channel4);
138 declare!(DMA2_Channel5);
139 declare!(DMA2_Channel6);
140 declare!(DMA2_Channel7);
141 declare!(EXTI0);
142 declare!(EXTI1);
143 declare!(EXTI15_10);
144 declare!(EXTI2);
145 declare!(EXTI3);
146 declare!(EXTI4);
147 declare!(EXTI9_5);
148 declare!(FLASH);
149 declare!(FMC);
150 declare!(FPU);
151 declare!(I2C1_ER);
152 declare!(I2C1_EV);
153 declare!(I2C2_ER);
154 declare!(I2C2_EV);
155 declare!(I2C3_ER);
156 declare!(I2C3_EV);
157 declare!(LPTIM1);
158 declare!(LPTIM2);
159 declare!(LPUART1);
160 declare!(PVD_PVM);
161 declare!(QUADSPI);
162 declare!(RCC);
163 declare!(RNG);
164 declare!(RTC_Alarm);
165 declare!(RTC_WKUP);
166 declare!(SAI1);
167 declare!(SAI2);
168 declare!(SDMMC1);
169 declare!(SPI1);
170 declare!(SPI2);
171 declare!(SPI3);
172 declare!(SWPMI1);
173 declare!(TAMP_STAMP);
174 declare!(TIM1_BRK_TIM15);
175 declare!(TIM1_CC);
176 declare!(TIM1_TRG_COM_TIM17);
177 declare!(TIM1_UP_TIM16);
178 declare!(TIM2);
179 declare!(TIM3);
180 declare!(TIM4);
181 declare!(TIM5);
182 declare!(TIM6_DAC);
183 declare!(TIM7);
184 declare!(TIM8_BRK);
185 declare!(TIM8_CC);
186 declare!(TIM8_TRG_COM);
187 declare!(TIM8_UP);
188 declare!(TSC);
189 declare!(UART4);
190 declare!(UART5);
191 declare!(USART1);
192 declare!(USART2);
193 declare!(USART3);
194 declare!(WWDG);
195}
196mod interrupt_vector {
197 extern "C" {
198 fn ADC1_2();
199 fn ADC3();
200 fn CAN1_RX0();
201 fn CAN1_RX1();
202 fn CAN1_SCE();
203 fn CAN1_TX();
204 fn COMP();
205 fn DFSDM1_FLT0();
206 fn DFSDM1_FLT1();
207 fn DFSDM1_FLT2();
208 fn DFSDM1_FLT3();
209 fn DMA1_Channel1();
210 fn DMA1_Channel2();
211 fn DMA1_Channel3();
212 fn DMA1_Channel4();
213 fn DMA1_Channel5();
214 fn DMA1_Channel6();
215 fn DMA1_Channel7();
216 fn DMA2_Channel1();
217 fn DMA2_Channel2();
218 fn DMA2_Channel3();
219 fn DMA2_Channel4();
220 fn DMA2_Channel5();
221 fn DMA2_Channel6();
222 fn DMA2_Channel7();
223 fn EXTI0();
224 fn EXTI1();
225 fn EXTI15_10();
226 fn EXTI2();
227 fn EXTI3();
228 fn EXTI4();
229 fn EXTI9_5();
230 fn FLASH();
231 fn FMC();
232 fn FPU();
233 fn I2C1_ER();
234 fn I2C1_EV();
235 fn I2C2_ER();
236 fn I2C2_EV();
237 fn I2C3_ER();
238 fn I2C3_EV();
239 fn LPTIM1();
240 fn LPTIM2();
241 fn LPUART1();
242 fn PVD_PVM();
243 fn QUADSPI();
244 fn RCC();
245 fn RNG();
246 fn RTC_Alarm();
247 fn RTC_WKUP();
248 fn SAI1();
249 fn SAI2();
250 fn SDMMC1();
251 fn SPI1();
252 fn SPI2();
253 fn SPI3();
254 fn SWPMI1();
255 fn TAMP_STAMP();
256 fn TIM1_BRK_TIM15();
257 fn TIM1_CC();
258 fn TIM1_TRG_COM_TIM17();
259 fn TIM1_UP_TIM16();
260 fn TIM2();
261 fn TIM3();
262 fn TIM4();
263 fn TIM5();
264 fn TIM6_DAC();
265 fn TIM7();
266 fn TIM8_BRK();
267 fn TIM8_CC();
268 fn TIM8_TRG_COM();
269 fn TIM8_UP();
270 fn TSC();
271 fn UART4();
272 fn UART5();
273 fn USART1();
274 fn USART2();
275 fn USART3();
276 fn WWDG();
277 }
278 pub union Vector {
279 _handler: unsafe extern "C" fn(),
280 _reserved: u32,
281 }
282 #[link_section = ".vector_table.interrupts"]
283 #[no_mangle]
284 pub static __INTERRUPTS: [Vector; 82] = [
285 Vector { _handler: WWDG },
286 Vector { _handler: PVD_PVM },
287 Vector {
288 _handler: TAMP_STAMP,
289 },
290 Vector { _handler: RTC_WKUP },
291 Vector { _handler: FLASH },
292 Vector { _handler: RCC },
293 Vector { _handler: EXTI0 },
294 Vector { _handler: EXTI1 },
295 Vector { _handler: EXTI2 },
296 Vector { _handler: EXTI3 },
297 Vector { _handler: EXTI4 },
298 Vector {
299 _handler: DMA1_Channel1,
300 },
301 Vector {
302 _handler: DMA1_Channel2,
303 },
304 Vector {
305 _handler: DMA1_Channel3,
306 },
307 Vector {
308 _handler: DMA1_Channel4,
309 },
310 Vector {
311 _handler: DMA1_Channel5,
312 },
313 Vector {
314 _handler: DMA1_Channel6,
315 },
316 Vector {
317 _handler: DMA1_Channel7,
318 },
319 Vector { _handler: ADC1_2 },
320 Vector { _handler: CAN1_TX },
321 Vector { _handler: CAN1_RX0 },
322 Vector { _handler: CAN1_RX1 },
323 Vector { _handler: CAN1_SCE },
324 Vector { _handler: EXTI9_5 },
325 Vector {
326 _handler: TIM1_BRK_TIM15,
327 },
328 Vector {
329 _handler: TIM1_UP_TIM16,
330 },
331 Vector {
332 _handler: TIM1_TRG_COM_TIM17,
333 },
334 Vector { _handler: TIM1_CC },
335 Vector { _handler: TIM2 },
336 Vector { _handler: TIM3 },
337 Vector { _handler: TIM4 },
338 Vector { _handler: I2C1_EV },
339 Vector { _handler: I2C1_ER },
340 Vector { _handler: I2C2_EV },
341 Vector { _handler: I2C2_ER },
342 Vector { _handler: SPI1 },
343 Vector { _handler: SPI2 },
344 Vector { _handler: USART1 },
345 Vector { _handler: USART2 },
346 Vector { _handler: USART3 },
347 Vector {
348 _handler: EXTI15_10,
349 },
350 Vector {
351 _handler: RTC_Alarm,
352 },
353 Vector {
354 _handler: DFSDM1_FLT3,
355 },
356 Vector { _handler: TIM8_BRK },
357 Vector { _handler: TIM8_UP },
358 Vector {
359 _handler: TIM8_TRG_COM,
360 },
361 Vector { _handler: TIM8_CC },
362 Vector { _handler: ADC3 },
363 Vector { _handler: FMC },
364 Vector { _handler: SDMMC1 },
365 Vector { _handler: TIM5 },
366 Vector { _handler: SPI3 },
367 Vector { _handler: UART4 },
368 Vector { _handler: UART5 },
369 Vector { _handler: TIM6_DAC },
370 Vector { _handler: TIM7 },
371 Vector {
372 _handler: DMA2_Channel1,
373 },
374 Vector {
375 _handler: DMA2_Channel2,
376 },
377 Vector {
378 _handler: DMA2_Channel3,
379 },
380 Vector {
381 _handler: DMA2_Channel4,
382 },
383 Vector {
384 _handler: DMA2_Channel5,
385 },
386 Vector {
387 _handler: DFSDM1_FLT0,
388 },
389 Vector {
390 _handler: DFSDM1_FLT1,
391 },
392 Vector {
393 _handler: DFSDM1_FLT2,
394 },
395 Vector { _handler: COMP },
396 Vector { _handler: LPTIM1 },
397 Vector { _handler: LPTIM2 },
398 Vector { _reserved: 0 },
399 Vector {
400 _handler: DMA2_Channel6,
401 },
402 Vector {
403 _handler: DMA2_Channel7,
404 },
405 Vector { _handler: LPUART1 },
406 Vector { _handler: QUADSPI },
407 Vector { _handler: I2C3_EV },
408 Vector { _handler: I2C3_ER },
409 Vector { _handler: SAI1 },
410 Vector { _handler: SAI2 },
411 Vector { _handler: SWPMI1 },
412 Vector { _handler: TSC },
413 Vector { _reserved: 0 },
414 Vector { _reserved: 0 },
415 Vector { _handler: RNG },
416 Vector { _handler: FPU },
417 ];
418}
18impl_gpio_pin!(PA0, 0, 0, EXTI0); 419impl_gpio_pin!(PA0, 0, 0, EXTI0);
19impl_gpio_pin!(PA1, 0, 1, EXTI1); 420impl_gpio_pin!(PA1, 0, 1, EXTI1);
20impl_gpio_pin!(PA2, 0, 2, EXTI2); 421impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l471rg.rs b/embassy-stm32/src/chip/stm32l471rg.rs
index 937127de9..192060c1f 100644
--- a/embassy-stm32/src/chip/stm32l471rg.rs
+++ b/embassy-stm32/src/chip/stm32l471rg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -13,8 +13,409 @@ peripherals!(
13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, 13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2,
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40010000;
17pub const EXTI_BASE: usize = 0x40010400;
16pub const GPIO_BASE: usize = 0x48000000; 18pub const GPIO_BASE: usize = 0x48000000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
20
21pub mod interrupt {
22 pub use cortex_m::interrupt::{CriticalSection, Mutex};
23 pub use embassy::interrupt::{declare, take, Interrupt};
24 pub use embassy_extras::interrupt::Priority4 as Priority;
25
26 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
27 #[allow(non_camel_case_types)]
28 enum InterruptEnum {
29 ADC1_2 = 18,
30 ADC3 = 47,
31 CAN1_RX0 = 20,
32 CAN1_RX1 = 21,
33 CAN1_SCE = 22,
34 CAN1_TX = 19,
35 COMP = 64,
36 DFSDM1_FLT0 = 61,
37 DFSDM1_FLT1 = 62,
38 DFSDM1_FLT2 = 63,
39 DFSDM1_FLT3 = 42,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2_Channel1 = 56,
48 DMA2_Channel2 = 57,
49 DMA2_Channel3 = 58,
50 DMA2_Channel4 = 59,
51 DMA2_Channel5 = 60,
52 DMA2_Channel6 = 68,
53 DMA2_Channel7 = 69,
54 EXTI0 = 6,
55 EXTI1 = 7,
56 EXTI15_10 = 40,
57 EXTI2 = 8,
58 EXTI3 = 9,
59 EXTI4 = 10,
60 EXTI9_5 = 23,
61 FLASH = 4,
62 FMC = 48,
63 FPU = 81,
64 I2C1_ER = 32,
65 I2C1_EV = 31,
66 I2C2_ER = 34,
67 I2C2_EV = 33,
68 I2C3_ER = 73,
69 I2C3_EV = 72,
70 LPTIM1 = 65,
71 LPTIM2 = 66,
72 LPUART1 = 70,
73 PVD_PVM = 1,
74 QUADSPI = 71,
75 RCC = 5,
76 RNG = 80,
77 RTC_Alarm = 41,
78 RTC_WKUP = 3,
79 SAI1 = 74,
80 SAI2 = 75,
81 SDMMC1 = 49,
82 SPI1 = 35,
83 SPI2 = 36,
84 SPI3 = 51,
85 SWPMI1 = 76,
86 TAMP_STAMP = 2,
87 TIM1_BRK_TIM15 = 24,
88 TIM1_CC = 27,
89 TIM1_TRG_COM_TIM17 = 26,
90 TIM1_UP_TIM16 = 25,
91 TIM2 = 28,
92 TIM3 = 29,
93 TIM4 = 30,
94 TIM5 = 50,
95 TIM6_DAC = 54,
96 TIM7 = 55,
97 TIM8_BRK = 43,
98 TIM8_CC = 46,
99 TIM8_TRG_COM = 45,
100 TIM8_UP = 44,
101 TSC = 77,
102 UART4 = 52,
103 UART5 = 53,
104 USART1 = 37,
105 USART2 = 38,
106 USART3 = 39,
107 WWDG = 0,
108 }
109 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
110 #[inline(always)]
111 fn number(self) -> u16 {
112 self as u16
113 }
114 }
115
116 declare!(ADC1_2);
117 declare!(ADC3);
118 declare!(CAN1_RX0);
119 declare!(CAN1_RX1);
120 declare!(CAN1_SCE);
121 declare!(CAN1_TX);
122 declare!(COMP);
123 declare!(DFSDM1_FLT0);
124 declare!(DFSDM1_FLT1);
125 declare!(DFSDM1_FLT2);
126 declare!(DFSDM1_FLT3);
127 declare!(DMA1_Channel1);
128 declare!(DMA1_Channel2);
129 declare!(DMA1_Channel3);
130 declare!(DMA1_Channel4);
131 declare!(DMA1_Channel5);
132 declare!(DMA1_Channel6);
133 declare!(DMA1_Channel7);
134 declare!(DMA2_Channel1);
135 declare!(DMA2_Channel2);
136 declare!(DMA2_Channel3);
137 declare!(DMA2_Channel4);
138 declare!(DMA2_Channel5);
139 declare!(DMA2_Channel6);
140 declare!(DMA2_Channel7);
141 declare!(EXTI0);
142 declare!(EXTI1);
143 declare!(EXTI15_10);
144 declare!(EXTI2);
145 declare!(EXTI3);
146 declare!(EXTI4);
147 declare!(EXTI9_5);
148 declare!(FLASH);
149 declare!(FMC);
150 declare!(FPU);
151 declare!(I2C1_ER);
152 declare!(I2C1_EV);
153 declare!(I2C2_ER);
154 declare!(I2C2_EV);
155 declare!(I2C3_ER);
156 declare!(I2C3_EV);
157 declare!(LPTIM1);
158 declare!(LPTIM2);
159 declare!(LPUART1);
160 declare!(PVD_PVM);
161 declare!(QUADSPI);
162 declare!(RCC);
163 declare!(RNG);
164 declare!(RTC_Alarm);
165 declare!(RTC_WKUP);
166 declare!(SAI1);
167 declare!(SAI2);
168 declare!(SDMMC1);
169 declare!(SPI1);
170 declare!(SPI2);
171 declare!(SPI3);
172 declare!(SWPMI1);
173 declare!(TAMP_STAMP);
174 declare!(TIM1_BRK_TIM15);
175 declare!(TIM1_CC);
176 declare!(TIM1_TRG_COM_TIM17);
177 declare!(TIM1_UP_TIM16);
178 declare!(TIM2);
179 declare!(TIM3);
180 declare!(TIM4);
181 declare!(TIM5);
182 declare!(TIM6_DAC);
183 declare!(TIM7);
184 declare!(TIM8_BRK);
185 declare!(TIM8_CC);
186 declare!(TIM8_TRG_COM);
187 declare!(TIM8_UP);
188 declare!(TSC);
189 declare!(UART4);
190 declare!(UART5);
191 declare!(USART1);
192 declare!(USART2);
193 declare!(USART3);
194 declare!(WWDG);
195}
196mod interrupt_vector {
197 extern "C" {
198 fn ADC1_2();
199 fn ADC3();
200 fn CAN1_RX0();
201 fn CAN1_RX1();
202 fn CAN1_SCE();
203 fn CAN1_TX();
204 fn COMP();
205 fn DFSDM1_FLT0();
206 fn DFSDM1_FLT1();
207 fn DFSDM1_FLT2();
208 fn DFSDM1_FLT3();
209 fn DMA1_Channel1();
210 fn DMA1_Channel2();
211 fn DMA1_Channel3();
212 fn DMA1_Channel4();
213 fn DMA1_Channel5();
214 fn DMA1_Channel6();
215 fn DMA1_Channel7();
216 fn DMA2_Channel1();
217 fn DMA2_Channel2();
218 fn DMA2_Channel3();
219 fn DMA2_Channel4();
220 fn DMA2_Channel5();
221 fn DMA2_Channel6();
222 fn DMA2_Channel7();
223 fn EXTI0();
224 fn EXTI1();
225 fn EXTI15_10();
226 fn EXTI2();
227 fn EXTI3();
228 fn EXTI4();
229 fn EXTI9_5();
230 fn FLASH();
231 fn FMC();
232 fn FPU();
233 fn I2C1_ER();
234 fn I2C1_EV();
235 fn I2C2_ER();
236 fn I2C2_EV();
237 fn I2C3_ER();
238 fn I2C3_EV();
239 fn LPTIM1();
240 fn LPTIM2();
241 fn LPUART1();
242 fn PVD_PVM();
243 fn QUADSPI();
244 fn RCC();
245 fn RNG();
246 fn RTC_Alarm();
247 fn RTC_WKUP();
248 fn SAI1();
249 fn SAI2();
250 fn SDMMC1();
251 fn SPI1();
252 fn SPI2();
253 fn SPI3();
254 fn SWPMI1();
255 fn TAMP_STAMP();
256 fn TIM1_BRK_TIM15();
257 fn TIM1_CC();
258 fn TIM1_TRG_COM_TIM17();
259 fn TIM1_UP_TIM16();
260 fn TIM2();
261 fn TIM3();
262 fn TIM4();
263 fn TIM5();
264 fn TIM6_DAC();
265 fn TIM7();
266 fn TIM8_BRK();
267 fn TIM8_CC();
268 fn TIM8_TRG_COM();
269 fn TIM8_UP();
270 fn TSC();
271 fn UART4();
272 fn UART5();
273 fn USART1();
274 fn USART2();
275 fn USART3();
276 fn WWDG();
277 }
278 pub union Vector {
279 _handler: unsafe extern "C" fn(),
280 _reserved: u32,
281 }
282 #[link_section = ".vector_table.interrupts"]
283 #[no_mangle]
284 pub static __INTERRUPTS: [Vector; 82] = [
285 Vector { _handler: WWDG },
286 Vector { _handler: PVD_PVM },
287 Vector {
288 _handler: TAMP_STAMP,
289 },
290 Vector { _handler: RTC_WKUP },
291 Vector { _handler: FLASH },
292 Vector { _handler: RCC },
293 Vector { _handler: EXTI0 },
294 Vector { _handler: EXTI1 },
295 Vector { _handler: EXTI2 },
296 Vector { _handler: EXTI3 },
297 Vector { _handler: EXTI4 },
298 Vector {
299 _handler: DMA1_Channel1,
300 },
301 Vector {
302 _handler: DMA1_Channel2,
303 },
304 Vector {
305 _handler: DMA1_Channel3,
306 },
307 Vector {
308 _handler: DMA1_Channel4,
309 },
310 Vector {
311 _handler: DMA1_Channel5,
312 },
313 Vector {
314 _handler: DMA1_Channel6,
315 },
316 Vector {
317 _handler: DMA1_Channel7,
318 },
319 Vector { _handler: ADC1_2 },
320 Vector { _handler: CAN1_TX },
321 Vector { _handler: CAN1_RX0 },
322 Vector { _handler: CAN1_RX1 },
323 Vector { _handler: CAN1_SCE },
324 Vector { _handler: EXTI9_5 },
325 Vector {
326 _handler: TIM1_BRK_TIM15,
327 },
328 Vector {
329 _handler: TIM1_UP_TIM16,
330 },
331 Vector {
332 _handler: TIM1_TRG_COM_TIM17,
333 },
334 Vector { _handler: TIM1_CC },
335 Vector { _handler: TIM2 },
336 Vector { _handler: TIM3 },
337 Vector { _handler: TIM4 },
338 Vector { _handler: I2C1_EV },
339 Vector { _handler: I2C1_ER },
340 Vector { _handler: I2C2_EV },
341 Vector { _handler: I2C2_ER },
342 Vector { _handler: SPI1 },
343 Vector { _handler: SPI2 },
344 Vector { _handler: USART1 },
345 Vector { _handler: USART2 },
346 Vector { _handler: USART3 },
347 Vector {
348 _handler: EXTI15_10,
349 },
350 Vector {
351 _handler: RTC_Alarm,
352 },
353 Vector {
354 _handler: DFSDM1_FLT3,
355 },
356 Vector { _handler: TIM8_BRK },
357 Vector { _handler: TIM8_UP },
358 Vector {
359 _handler: TIM8_TRG_COM,
360 },
361 Vector { _handler: TIM8_CC },
362 Vector { _handler: ADC3 },
363 Vector { _handler: FMC },
364 Vector { _handler: SDMMC1 },
365 Vector { _handler: TIM5 },
366 Vector { _handler: SPI3 },
367 Vector { _handler: UART4 },
368 Vector { _handler: UART5 },
369 Vector { _handler: TIM6_DAC },
370 Vector { _handler: TIM7 },
371 Vector {
372 _handler: DMA2_Channel1,
373 },
374 Vector {
375 _handler: DMA2_Channel2,
376 },
377 Vector {
378 _handler: DMA2_Channel3,
379 },
380 Vector {
381 _handler: DMA2_Channel4,
382 },
383 Vector {
384 _handler: DMA2_Channel5,
385 },
386 Vector {
387 _handler: DFSDM1_FLT0,
388 },
389 Vector {
390 _handler: DFSDM1_FLT1,
391 },
392 Vector {
393 _handler: DFSDM1_FLT2,
394 },
395 Vector { _handler: COMP },
396 Vector { _handler: LPTIM1 },
397 Vector { _handler: LPTIM2 },
398 Vector { _reserved: 0 },
399 Vector {
400 _handler: DMA2_Channel6,
401 },
402 Vector {
403 _handler: DMA2_Channel7,
404 },
405 Vector { _handler: LPUART1 },
406 Vector { _handler: QUADSPI },
407 Vector { _handler: I2C3_EV },
408 Vector { _handler: I2C3_ER },
409 Vector { _handler: SAI1 },
410 Vector { _handler: SAI2 },
411 Vector { _handler: SWPMI1 },
412 Vector { _handler: TSC },
413 Vector { _reserved: 0 },
414 Vector { _reserved: 0 },
415 Vector { _handler: RNG },
416 Vector { _handler: FPU },
417 ];
418}
18impl_gpio_pin!(PA0, 0, 0, EXTI0); 419impl_gpio_pin!(PA0, 0, 0, EXTI0);
19impl_gpio_pin!(PA1, 0, 1, EXTI1); 420impl_gpio_pin!(PA1, 0, 1, EXTI1);
20impl_gpio_pin!(PA2, 0, 2, EXTI2); 421impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l471ve.rs b/embassy-stm32/src/chip/stm32l471ve.rs
index 937127de9..192060c1f 100644
--- a/embassy-stm32/src/chip/stm32l471ve.rs
+++ b/embassy-stm32/src/chip/stm32l471ve.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -13,8 +13,409 @@ peripherals!(
13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, 13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2,
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40010000;
17pub const EXTI_BASE: usize = 0x40010400;
16pub const GPIO_BASE: usize = 0x48000000; 18pub const GPIO_BASE: usize = 0x48000000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
20
21pub mod interrupt {
22 pub use cortex_m::interrupt::{CriticalSection, Mutex};
23 pub use embassy::interrupt::{declare, take, Interrupt};
24 pub use embassy_extras::interrupt::Priority4 as Priority;
25
26 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
27 #[allow(non_camel_case_types)]
28 enum InterruptEnum {
29 ADC1_2 = 18,
30 ADC3 = 47,
31 CAN1_RX0 = 20,
32 CAN1_RX1 = 21,
33 CAN1_SCE = 22,
34 CAN1_TX = 19,
35 COMP = 64,
36 DFSDM1_FLT0 = 61,
37 DFSDM1_FLT1 = 62,
38 DFSDM1_FLT2 = 63,
39 DFSDM1_FLT3 = 42,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2_Channel1 = 56,
48 DMA2_Channel2 = 57,
49 DMA2_Channel3 = 58,
50 DMA2_Channel4 = 59,
51 DMA2_Channel5 = 60,
52 DMA2_Channel6 = 68,
53 DMA2_Channel7 = 69,
54 EXTI0 = 6,
55 EXTI1 = 7,
56 EXTI15_10 = 40,
57 EXTI2 = 8,
58 EXTI3 = 9,
59 EXTI4 = 10,
60 EXTI9_5 = 23,
61 FLASH = 4,
62 FMC = 48,
63 FPU = 81,
64 I2C1_ER = 32,
65 I2C1_EV = 31,
66 I2C2_ER = 34,
67 I2C2_EV = 33,
68 I2C3_ER = 73,
69 I2C3_EV = 72,
70 LPTIM1 = 65,
71 LPTIM2 = 66,
72 LPUART1 = 70,
73 PVD_PVM = 1,
74 QUADSPI = 71,
75 RCC = 5,
76 RNG = 80,
77 RTC_Alarm = 41,
78 RTC_WKUP = 3,
79 SAI1 = 74,
80 SAI2 = 75,
81 SDMMC1 = 49,
82 SPI1 = 35,
83 SPI2 = 36,
84 SPI3 = 51,
85 SWPMI1 = 76,
86 TAMP_STAMP = 2,
87 TIM1_BRK_TIM15 = 24,
88 TIM1_CC = 27,
89 TIM1_TRG_COM_TIM17 = 26,
90 TIM1_UP_TIM16 = 25,
91 TIM2 = 28,
92 TIM3 = 29,
93 TIM4 = 30,
94 TIM5 = 50,
95 TIM6_DAC = 54,
96 TIM7 = 55,
97 TIM8_BRK = 43,
98 TIM8_CC = 46,
99 TIM8_TRG_COM = 45,
100 TIM8_UP = 44,
101 TSC = 77,
102 UART4 = 52,
103 UART5 = 53,
104 USART1 = 37,
105 USART2 = 38,
106 USART3 = 39,
107 WWDG = 0,
108 }
109 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
110 #[inline(always)]
111 fn number(self) -> u16 {
112 self as u16
113 }
114 }
115
116 declare!(ADC1_2);
117 declare!(ADC3);
118 declare!(CAN1_RX0);
119 declare!(CAN1_RX1);
120 declare!(CAN1_SCE);
121 declare!(CAN1_TX);
122 declare!(COMP);
123 declare!(DFSDM1_FLT0);
124 declare!(DFSDM1_FLT1);
125 declare!(DFSDM1_FLT2);
126 declare!(DFSDM1_FLT3);
127 declare!(DMA1_Channel1);
128 declare!(DMA1_Channel2);
129 declare!(DMA1_Channel3);
130 declare!(DMA1_Channel4);
131 declare!(DMA1_Channel5);
132 declare!(DMA1_Channel6);
133 declare!(DMA1_Channel7);
134 declare!(DMA2_Channel1);
135 declare!(DMA2_Channel2);
136 declare!(DMA2_Channel3);
137 declare!(DMA2_Channel4);
138 declare!(DMA2_Channel5);
139 declare!(DMA2_Channel6);
140 declare!(DMA2_Channel7);
141 declare!(EXTI0);
142 declare!(EXTI1);
143 declare!(EXTI15_10);
144 declare!(EXTI2);
145 declare!(EXTI3);
146 declare!(EXTI4);
147 declare!(EXTI9_5);
148 declare!(FLASH);
149 declare!(FMC);
150 declare!(FPU);
151 declare!(I2C1_ER);
152 declare!(I2C1_EV);
153 declare!(I2C2_ER);
154 declare!(I2C2_EV);
155 declare!(I2C3_ER);
156 declare!(I2C3_EV);
157 declare!(LPTIM1);
158 declare!(LPTIM2);
159 declare!(LPUART1);
160 declare!(PVD_PVM);
161 declare!(QUADSPI);
162 declare!(RCC);
163 declare!(RNG);
164 declare!(RTC_Alarm);
165 declare!(RTC_WKUP);
166 declare!(SAI1);
167 declare!(SAI2);
168 declare!(SDMMC1);
169 declare!(SPI1);
170 declare!(SPI2);
171 declare!(SPI3);
172 declare!(SWPMI1);
173 declare!(TAMP_STAMP);
174 declare!(TIM1_BRK_TIM15);
175 declare!(TIM1_CC);
176 declare!(TIM1_TRG_COM_TIM17);
177 declare!(TIM1_UP_TIM16);
178 declare!(TIM2);
179 declare!(TIM3);
180 declare!(TIM4);
181 declare!(TIM5);
182 declare!(TIM6_DAC);
183 declare!(TIM7);
184 declare!(TIM8_BRK);
185 declare!(TIM8_CC);
186 declare!(TIM8_TRG_COM);
187 declare!(TIM8_UP);
188 declare!(TSC);
189 declare!(UART4);
190 declare!(UART5);
191 declare!(USART1);
192 declare!(USART2);
193 declare!(USART3);
194 declare!(WWDG);
195}
196mod interrupt_vector {
197 extern "C" {
198 fn ADC1_2();
199 fn ADC3();
200 fn CAN1_RX0();
201 fn CAN1_RX1();
202 fn CAN1_SCE();
203 fn CAN1_TX();
204 fn COMP();
205 fn DFSDM1_FLT0();
206 fn DFSDM1_FLT1();
207 fn DFSDM1_FLT2();
208 fn DFSDM1_FLT3();
209 fn DMA1_Channel1();
210 fn DMA1_Channel2();
211 fn DMA1_Channel3();
212 fn DMA1_Channel4();
213 fn DMA1_Channel5();
214 fn DMA1_Channel6();
215 fn DMA1_Channel7();
216 fn DMA2_Channel1();
217 fn DMA2_Channel2();
218 fn DMA2_Channel3();
219 fn DMA2_Channel4();
220 fn DMA2_Channel5();
221 fn DMA2_Channel6();
222 fn DMA2_Channel7();
223 fn EXTI0();
224 fn EXTI1();
225 fn EXTI15_10();
226 fn EXTI2();
227 fn EXTI3();
228 fn EXTI4();
229 fn EXTI9_5();
230 fn FLASH();
231 fn FMC();
232 fn FPU();
233 fn I2C1_ER();
234 fn I2C1_EV();
235 fn I2C2_ER();
236 fn I2C2_EV();
237 fn I2C3_ER();
238 fn I2C3_EV();
239 fn LPTIM1();
240 fn LPTIM2();
241 fn LPUART1();
242 fn PVD_PVM();
243 fn QUADSPI();
244 fn RCC();
245 fn RNG();
246 fn RTC_Alarm();
247 fn RTC_WKUP();
248 fn SAI1();
249 fn SAI2();
250 fn SDMMC1();
251 fn SPI1();
252 fn SPI2();
253 fn SPI3();
254 fn SWPMI1();
255 fn TAMP_STAMP();
256 fn TIM1_BRK_TIM15();
257 fn TIM1_CC();
258 fn TIM1_TRG_COM_TIM17();
259 fn TIM1_UP_TIM16();
260 fn TIM2();
261 fn TIM3();
262 fn TIM4();
263 fn TIM5();
264 fn TIM6_DAC();
265 fn TIM7();
266 fn TIM8_BRK();
267 fn TIM8_CC();
268 fn TIM8_TRG_COM();
269 fn TIM8_UP();
270 fn TSC();
271 fn UART4();
272 fn UART5();
273 fn USART1();
274 fn USART2();
275 fn USART3();
276 fn WWDG();
277 }
278 pub union Vector {
279 _handler: unsafe extern "C" fn(),
280 _reserved: u32,
281 }
282 #[link_section = ".vector_table.interrupts"]
283 #[no_mangle]
284 pub static __INTERRUPTS: [Vector; 82] = [
285 Vector { _handler: WWDG },
286 Vector { _handler: PVD_PVM },
287 Vector {
288 _handler: TAMP_STAMP,
289 },
290 Vector { _handler: RTC_WKUP },
291 Vector { _handler: FLASH },
292 Vector { _handler: RCC },
293 Vector { _handler: EXTI0 },
294 Vector { _handler: EXTI1 },
295 Vector { _handler: EXTI2 },
296 Vector { _handler: EXTI3 },
297 Vector { _handler: EXTI4 },
298 Vector {
299 _handler: DMA1_Channel1,
300 },
301 Vector {
302 _handler: DMA1_Channel2,
303 },
304 Vector {
305 _handler: DMA1_Channel3,
306 },
307 Vector {
308 _handler: DMA1_Channel4,
309 },
310 Vector {
311 _handler: DMA1_Channel5,
312 },
313 Vector {
314 _handler: DMA1_Channel6,
315 },
316 Vector {
317 _handler: DMA1_Channel7,
318 },
319 Vector { _handler: ADC1_2 },
320 Vector { _handler: CAN1_TX },
321 Vector { _handler: CAN1_RX0 },
322 Vector { _handler: CAN1_RX1 },
323 Vector { _handler: CAN1_SCE },
324 Vector { _handler: EXTI9_5 },
325 Vector {
326 _handler: TIM1_BRK_TIM15,
327 },
328 Vector {
329 _handler: TIM1_UP_TIM16,
330 },
331 Vector {
332 _handler: TIM1_TRG_COM_TIM17,
333 },
334 Vector { _handler: TIM1_CC },
335 Vector { _handler: TIM2 },
336 Vector { _handler: TIM3 },
337 Vector { _handler: TIM4 },
338 Vector { _handler: I2C1_EV },
339 Vector { _handler: I2C1_ER },
340 Vector { _handler: I2C2_EV },
341 Vector { _handler: I2C2_ER },
342 Vector { _handler: SPI1 },
343 Vector { _handler: SPI2 },
344 Vector { _handler: USART1 },
345 Vector { _handler: USART2 },
346 Vector { _handler: USART3 },
347 Vector {
348 _handler: EXTI15_10,
349 },
350 Vector {
351 _handler: RTC_Alarm,
352 },
353 Vector {
354 _handler: DFSDM1_FLT3,
355 },
356 Vector { _handler: TIM8_BRK },
357 Vector { _handler: TIM8_UP },
358 Vector {
359 _handler: TIM8_TRG_COM,
360 },
361 Vector { _handler: TIM8_CC },
362 Vector { _handler: ADC3 },
363 Vector { _handler: FMC },
364 Vector { _handler: SDMMC1 },
365 Vector { _handler: TIM5 },
366 Vector { _handler: SPI3 },
367 Vector { _handler: UART4 },
368 Vector { _handler: UART5 },
369 Vector { _handler: TIM6_DAC },
370 Vector { _handler: TIM7 },
371 Vector {
372 _handler: DMA2_Channel1,
373 },
374 Vector {
375 _handler: DMA2_Channel2,
376 },
377 Vector {
378 _handler: DMA2_Channel3,
379 },
380 Vector {
381 _handler: DMA2_Channel4,
382 },
383 Vector {
384 _handler: DMA2_Channel5,
385 },
386 Vector {
387 _handler: DFSDM1_FLT0,
388 },
389 Vector {
390 _handler: DFSDM1_FLT1,
391 },
392 Vector {
393 _handler: DFSDM1_FLT2,
394 },
395 Vector { _handler: COMP },
396 Vector { _handler: LPTIM1 },
397 Vector { _handler: LPTIM2 },
398 Vector { _reserved: 0 },
399 Vector {
400 _handler: DMA2_Channel6,
401 },
402 Vector {
403 _handler: DMA2_Channel7,
404 },
405 Vector { _handler: LPUART1 },
406 Vector { _handler: QUADSPI },
407 Vector { _handler: I2C3_EV },
408 Vector { _handler: I2C3_ER },
409 Vector { _handler: SAI1 },
410 Vector { _handler: SAI2 },
411 Vector { _handler: SWPMI1 },
412 Vector { _handler: TSC },
413 Vector { _reserved: 0 },
414 Vector { _reserved: 0 },
415 Vector { _handler: RNG },
416 Vector { _handler: FPU },
417 ];
418}
18impl_gpio_pin!(PA0, 0, 0, EXTI0); 419impl_gpio_pin!(PA0, 0, 0, EXTI0);
19impl_gpio_pin!(PA1, 0, 1, EXTI1); 420impl_gpio_pin!(PA1, 0, 1, EXTI1);
20impl_gpio_pin!(PA2, 0, 2, EXTI2); 421impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l471vg.rs b/embassy-stm32/src/chip/stm32l471vg.rs
index 937127de9..192060c1f 100644
--- a/embassy-stm32/src/chip/stm32l471vg.rs
+++ b/embassy-stm32/src/chip/stm32l471vg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -13,8 +13,409 @@ peripherals!(
13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, 13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2,
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40010000;
17pub const EXTI_BASE: usize = 0x40010400;
16pub const GPIO_BASE: usize = 0x48000000; 18pub const GPIO_BASE: usize = 0x48000000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
20
21pub mod interrupt {
22 pub use cortex_m::interrupt::{CriticalSection, Mutex};
23 pub use embassy::interrupt::{declare, take, Interrupt};
24 pub use embassy_extras::interrupt::Priority4 as Priority;
25
26 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
27 #[allow(non_camel_case_types)]
28 enum InterruptEnum {
29 ADC1_2 = 18,
30 ADC3 = 47,
31 CAN1_RX0 = 20,
32 CAN1_RX1 = 21,
33 CAN1_SCE = 22,
34 CAN1_TX = 19,
35 COMP = 64,
36 DFSDM1_FLT0 = 61,
37 DFSDM1_FLT1 = 62,
38 DFSDM1_FLT2 = 63,
39 DFSDM1_FLT3 = 42,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2_Channel1 = 56,
48 DMA2_Channel2 = 57,
49 DMA2_Channel3 = 58,
50 DMA2_Channel4 = 59,
51 DMA2_Channel5 = 60,
52 DMA2_Channel6 = 68,
53 DMA2_Channel7 = 69,
54 EXTI0 = 6,
55 EXTI1 = 7,
56 EXTI15_10 = 40,
57 EXTI2 = 8,
58 EXTI3 = 9,
59 EXTI4 = 10,
60 EXTI9_5 = 23,
61 FLASH = 4,
62 FMC = 48,
63 FPU = 81,
64 I2C1_ER = 32,
65 I2C1_EV = 31,
66 I2C2_ER = 34,
67 I2C2_EV = 33,
68 I2C3_ER = 73,
69 I2C3_EV = 72,
70 LPTIM1 = 65,
71 LPTIM2 = 66,
72 LPUART1 = 70,
73 PVD_PVM = 1,
74 QUADSPI = 71,
75 RCC = 5,
76 RNG = 80,
77 RTC_Alarm = 41,
78 RTC_WKUP = 3,
79 SAI1 = 74,
80 SAI2 = 75,
81 SDMMC1 = 49,
82 SPI1 = 35,
83 SPI2 = 36,
84 SPI3 = 51,
85 SWPMI1 = 76,
86 TAMP_STAMP = 2,
87 TIM1_BRK_TIM15 = 24,
88 TIM1_CC = 27,
89 TIM1_TRG_COM_TIM17 = 26,
90 TIM1_UP_TIM16 = 25,
91 TIM2 = 28,
92 TIM3 = 29,
93 TIM4 = 30,
94 TIM5 = 50,
95 TIM6_DAC = 54,
96 TIM7 = 55,
97 TIM8_BRK = 43,
98 TIM8_CC = 46,
99 TIM8_TRG_COM = 45,
100 TIM8_UP = 44,
101 TSC = 77,
102 UART4 = 52,
103 UART5 = 53,
104 USART1 = 37,
105 USART2 = 38,
106 USART3 = 39,
107 WWDG = 0,
108 }
109 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
110 #[inline(always)]
111 fn number(self) -> u16 {
112 self as u16
113 }
114 }
115
116 declare!(ADC1_2);
117 declare!(ADC3);
118 declare!(CAN1_RX0);
119 declare!(CAN1_RX1);
120 declare!(CAN1_SCE);
121 declare!(CAN1_TX);
122 declare!(COMP);
123 declare!(DFSDM1_FLT0);
124 declare!(DFSDM1_FLT1);
125 declare!(DFSDM1_FLT2);
126 declare!(DFSDM1_FLT3);
127 declare!(DMA1_Channel1);
128 declare!(DMA1_Channel2);
129 declare!(DMA1_Channel3);
130 declare!(DMA1_Channel4);
131 declare!(DMA1_Channel5);
132 declare!(DMA1_Channel6);
133 declare!(DMA1_Channel7);
134 declare!(DMA2_Channel1);
135 declare!(DMA2_Channel2);
136 declare!(DMA2_Channel3);
137 declare!(DMA2_Channel4);
138 declare!(DMA2_Channel5);
139 declare!(DMA2_Channel6);
140 declare!(DMA2_Channel7);
141 declare!(EXTI0);
142 declare!(EXTI1);
143 declare!(EXTI15_10);
144 declare!(EXTI2);
145 declare!(EXTI3);
146 declare!(EXTI4);
147 declare!(EXTI9_5);
148 declare!(FLASH);
149 declare!(FMC);
150 declare!(FPU);
151 declare!(I2C1_ER);
152 declare!(I2C1_EV);
153 declare!(I2C2_ER);
154 declare!(I2C2_EV);
155 declare!(I2C3_ER);
156 declare!(I2C3_EV);
157 declare!(LPTIM1);
158 declare!(LPTIM2);
159 declare!(LPUART1);
160 declare!(PVD_PVM);
161 declare!(QUADSPI);
162 declare!(RCC);
163 declare!(RNG);
164 declare!(RTC_Alarm);
165 declare!(RTC_WKUP);
166 declare!(SAI1);
167 declare!(SAI2);
168 declare!(SDMMC1);
169 declare!(SPI1);
170 declare!(SPI2);
171 declare!(SPI3);
172 declare!(SWPMI1);
173 declare!(TAMP_STAMP);
174 declare!(TIM1_BRK_TIM15);
175 declare!(TIM1_CC);
176 declare!(TIM1_TRG_COM_TIM17);
177 declare!(TIM1_UP_TIM16);
178 declare!(TIM2);
179 declare!(TIM3);
180 declare!(TIM4);
181 declare!(TIM5);
182 declare!(TIM6_DAC);
183 declare!(TIM7);
184 declare!(TIM8_BRK);
185 declare!(TIM8_CC);
186 declare!(TIM8_TRG_COM);
187 declare!(TIM8_UP);
188 declare!(TSC);
189 declare!(UART4);
190 declare!(UART5);
191 declare!(USART1);
192 declare!(USART2);
193 declare!(USART3);
194 declare!(WWDG);
195}
196mod interrupt_vector {
197 extern "C" {
198 fn ADC1_2();
199 fn ADC3();
200 fn CAN1_RX0();
201 fn CAN1_RX1();
202 fn CAN1_SCE();
203 fn CAN1_TX();
204 fn COMP();
205 fn DFSDM1_FLT0();
206 fn DFSDM1_FLT1();
207 fn DFSDM1_FLT2();
208 fn DFSDM1_FLT3();
209 fn DMA1_Channel1();
210 fn DMA1_Channel2();
211 fn DMA1_Channel3();
212 fn DMA1_Channel4();
213 fn DMA1_Channel5();
214 fn DMA1_Channel6();
215 fn DMA1_Channel7();
216 fn DMA2_Channel1();
217 fn DMA2_Channel2();
218 fn DMA2_Channel3();
219 fn DMA2_Channel4();
220 fn DMA2_Channel5();
221 fn DMA2_Channel6();
222 fn DMA2_Channel7();
223 fn EXTI0();
224 fn EXTI1();
225 fn EXTI15_10();
226 fn EXTI2();
227 fn EXTI3();
228 fn EXTI4();
229 fn EXTI9_5();
230 fn FLASH();
231 fn FMC();
232 fn FPU();
233 fn I2C1_ER();
234 fn I2C1_EV();
235 fn I2C2_ER();
236 fn I2C2_EV();
237 fn I2C3_ER();
238 fn I2C3_EV();
239 fn LPTIM1();
240 fn LPTIM2();
241 fn LPUART1();
242 fn PVD_PVM();
243 fn QUADSPI();
244 fn RCC();
245 fn RNG();
246 fn RTC_Alarm();
247 fn RTC_WKUP();
248 fn SAI1();
249 fn SAI2();
250 fn SDMMC1();
251 fn SPI1();
252 fn SPI2();
253 fn SPI3();
254 fn SWPMI1();
255 fn TAMP_STAMP();
256 fn TIM1_BRK_TIM15();
257 fn TIM1_CC();
258 fn TIM1_TRG_COM_TIM17();
259 fn TIM1_UP_TIM16();
260 fn TIM2();
261 fn TIM3();
262 fn TIM4();
263 fn TIM5();
264 fn TIM6_DAC();
265 fn TIM7();
266 fn TIM8_BRK();
267 fn TIM8_CC();
268 fn TIM8_TRG_COM();
269 fn TIM8_UP();
270 fn TSC();
271 fn UART4();
272 fn UART5();
273 fn USART1();
274 fn USART2();
275 fn USART3();
276 fn WWDG();
277 }
278 pub union Vector {
279 _handler: unsafe extern "C" fn(),
280 _reserved: u32,
281 }
282 #[link_section = ".vector_table.interrupts"]
283 #[no_mangle]
284 pub static __INTERRUPTS: [Vector; 82] = [
285 Vector { _handler: WWDG },
286 Vector { _handler: PVD_PVM },
287 Vector {
288 _handler: TAMP_STAMP,
289 },
290 Vector { _handler: RTC_WKUP },
291 Vector { _handler: FLASH },
292 Vector { _handler: RCC },
293 Vector { _handler: EXTI0 },
294 Vector { _handler: EXTI1 },
295 Vector { _handler: EXTI2 },
296 Vector { _handler: EXTI3 },
297 Vector { _handler: EXTI4 },
298 Vector {
299 _handler: DMA1_Channel1,
300 },
301 Vector {
302 _handler: DMA1_Channel2,
303 },
304 Vector {
305 _handler: DMA1_Channel3,
306 },
307 Vector {
308 _handler: DMA1_Channel4,
309 },
310 Vector {
311 _handler: DMA1_Channel5,
312 },
313 Vector {
314 _handler: DMA1_Channel6,
315 },
316 Vector {
317 _handler: DMA1_Channel7,
318 },
319 Vector { _handler: ADC1_2 },
320 Vector { _handler: CAN1_TX },
321 Vector { _handler: CAN1_RX0 },
322 Vector { _handler: CAN1_RX1 },
323 Vector { _handler: CAN1_SCE },
324 Vector { _handler: EXTI9_5 },
325 Vector {
326 _handler: TIM1_BRK_TIM15,
327 },
328 Vector {
329 _handler: TIM1_UP_TIM16,
330 },
331 Vector {
332 _handler: TIM1_TRG_COM_TIM17,
333 },
334 Vector { _handler: TIM1_CC },
335 Vector { _handler: TIM2 },
336 Vector { _handler: TIM3 },
337 Vector { _handler: TIM4 },
338 Vector { _handler: I2C1_EV },
339 Vector { _handler: I2C1_ER },
340 Vector { _handler: I2C2_EV },
341 Vector { _handler: I2C2_ER },
342 Vector { _handler: SPI1 },
343 Vector { _handler: SPI2 },
344 Vector { _handler: USART1 },
345 Vector { _handler: USART2 },
346 Vector { _handler: USART3 },
347 Vector {
348 _handler: EXTI15_10,
349 },
350 Vector {
351 _handler: RTC_Alarm,
352 },
353 Vector {
354 _handler: DFSDM1_FLT3,
355 },
356 Vector { _handler: TIM8_BRK },
357 Vector { _handler: TIM8_UP },
358 Vector {
359 _handler: TIM8_TRG_COM,
360 },
361 Vector { _handler: TIM8_CC },
362 Vector { _handler: ADC3 },
363 Vector { _handler: FMC },
364 Vector { _handler: SDMMC1 },
365 Vector { _handler: TIM5 },
366 Vector { _handler: SPI3 },
367 Vector { _handler: UART4 },
368 Vector { _handler: UART5 },
369 Vector { _handler: TIM6_DAC },
370 Vector { _handler: TIM7 },
371 Vector {
372 _handler: DMA2_Channel1,
373 },
374 Vector {
375 _handler: DMA2_Channel2,
376 },
377 Vector {
378 _handler: DMA2_Channel3,
379 },
380 Vector {
381 _handler: DMA2_Channel4,
382 },
383 Vector {
384 _handler: DMA2_Channel5,
385 },
386 Vector {
387 _handler: DFSDM1_FLT0,
388 },
389 Vector {
390 _handler: DFSDM1_FLT1,
391 },
392 Vector {
393 _handler: DFSDM1_FLT2,
394 },
395 Vector { _handler: COMP },
396 Vector { _handler: LPTIM1 },
397 Vector { _handler: LPTIM2 },
398 Vector { _reserved: 0 },
399 Vector {
400 _handler: DMA2_Channel6,
401 },
402 Vector {
403 _handler: DMA2_Channel7,
404 },
405 Vector { _handler: LPUART1 },
406 Vector { _handler: QUADSPI },
407 Vector { _handler: I2C3_EV },
408 Vector { _handler: I2C3_ER },
409 Vector { _handler: SAI1 },
410 Vector { _handler: SAI2 },
411 Vector { _handler: SWPMI1 },
412 Vector { _handler: TSC },
413 Vector { _reserved: 0 },
414 Vector { _reserved: 0 },
415 Vector { _handler: RNG },
416 Vector { _handler: FPU },
417 ];
418}
18impl_gpio_pin!(PA0, 0, 0, EXTI0); 419impl_gpio_pin!(PA0, 0, 0, EXTI0);
19impl_gpio_pin!(PA1, 0, 1, EXTI1); 420impl_gpio_pin!(PA1, 0, 1, EXTI1);
20impl_gpio_pin!(PA2, 0, 2, EXTI2); 421impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l471ze.rs b/embassy-stm32/src/chip/stm32l471ze.rs
index 937127de9..192060c1f 100644
--- a/embassy-stm32/src/chip/stm32l471ze.rs
+++ b/embassy-stm32/src/chip/stm32l471ze.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -13,8 +13,409 @@ peripherals!(
13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, 13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2,
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40010000;
17pub const EXTI_BASE: usize = 0x40010400;
16pub const GPIO_BASE: usize = 0x48000000; 18pub const GPIO_BASE: usize = 0x48000000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
20
21pub mod interrupt {
22 pub use cortex_m::interrupt::{CriticalSection, Mutex};
23 pub use embassy::interrupt::{declare, take, Interrupt};
24 pub use embassy_extras::interrupt::Priority4 as Priority;
25
26 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
27 #[allow(non_camel_case_types)]
28 enum InterruptEnum {
29 ADC1_2 = 18,
30 ADC3 = 47,
31 CAN1_RX0 = 20,
32 CAN1_RX1 = 21,
33 CAN1_SCE = 22,
34 CAN1_TX = 19,
35 COMP = 64,
36 DFSDM1_FLT0 = 61,
37 DFSDM1_FLT1 = 62,
38 DFSDM1_FLT2 = 63,
39 DFSDM1_FLT3 = 42,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2_Channel1 = 56,
48 DMA2_Channel2 = 57,
49 DMA2_Channel3 = 58,
50 DMA2_Channel4 = 59,
51 DMA2_Channel5 = 60,
52 DMA2_Channel6 = 68,
53 DMA2_Channel7 = 69,
54 EXTI0 = 6,
55 EXTI1 = 7,
56 EXTI15_10 = 40,
57 EXTI2 = 8,
58 EXTI3 = 9,
59 EXTI4 = 10,
60 EXTI9_5 = 23,
61 FLASH = 4,
62 FMC = 48,
63 FPU = 81,
64 I2C1_ER = 32,
65 I2C1_EV = 31,
66 I2C2_ER = 34,
67 I2C2_EV = 33,
68 I2C3_ER = 73,
69 I2C3_EV = 72,
70 LPTIM1 = 65,
71 LPTIM2 = 66,
72 LPUART1 = 70,
73 PVD_PVM = 1,
74 QUADSPI = 71,
75 RCC = 5,
76 RNG = 80,
77 RTC_Alarm = 41,
78 RTC_WKUP = 3,
79 SAI1 = 74,
80 SAI2 = 75,
81 SDMMC1 = 49,
82 SPI1 = 35,
83 SPI2 = 36,
84 SPI3 = 51,
85 SWPMI1 = 76,
86 TAMP_STAMP = 2,
87 TIM1_BRK_TIM15 = 24,
88 TIM1_CC = 27,
89 TIM1_TRG_COM_TIM17 = 26,
90 TIM1_UP_TIM16 = 25,
91 TIM2 = 28,
92 TIM3 = 29,
93 TIM4 = 30,
94 TIM5 = 50,
95 TIM6_DAC = 54,
96 TIM7 = 55,
97 TIM8_BRK = 43,
98 TIM8_CC = 46,
99 TIM8_TRG_COM = 45,
100 TIM8_UP = 44,
101 TSC = 77,
102 UART4 = 52,
103 UART5 = 53,
104 USART1 = 37,
105 USART2 = 38,
106 USART3 = 39,
107 WWDG = 0,
108 }
109 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
110 #[inline(always)]
111 fn number(self) -> u16 {
112 self as u16
113 }
114 }
115
116 declare!(ADC1_2);
117 declare!(ADC3);
118 declare!(CAN1_RX0);
119 declare!(CAN1_RX1);
120 declare!(CAN1_SCE);
121 declare!(CAN1_TX);
122 declare!(COMP);
123 declare!(DFSDM1_FLT0);
124 declare!(DFSDM1_FLT1);
125 declare!(DFSDM1_FLT2);
126 declare!(DFSDM1_FLT3);
127 declare!(DMA1_Channel1);
128 declare!(DMA1_Channel2);
129 declare!(DMA1_Channel3);
130 declare!(DMA1_Channel4);
131 declare!(DMA1_Channel5);
132 declare!(DMA1_Channel6);
133 declare!(DMA1_Channel7);
134 declare!(DMA2_Channel1);
135 declare!(DMA2_Channel2);
136 declare!(DMA2_Channel3);
137 declare!(DMA2_Channel4);
138 declare!(DMA2_Channel5);
139 declare!(DMA2_Channel6);
140 declare!(DMA2_Channel7);
141 declare!(EXTI0);
142 declare!(EXTI1);
143 declare!(EXTI15_10);
144 declare!(EXTI2);
145 declare!(EXTI3);
146 declare!(EXTI4);
147 declare!(EXTI9_5);
148 declare!(FLASH);
149 declare!(FMC);
150 declare!(FPU);
151 declare!(I2C1_ER);
152 declare!(I2C1_EV);
153 declare!(I2C2_ER);
154 declare!(I2C2_EV);
155 declare!(I2C3_ER);
156 declare!(I2C3_EV);
157 declare!(LPTIM1);
158 declare!(LPTIM2);
159 declare!(LPUART1);
160 declare!(PVD_PVM);
161 declare!(QUADSPI);
162 declare!(RCC);
163 declare!(RNG);
164 declare!(RTC_Alarm);
165 declare!(RTC_WKUP);
166 declare!(SAI1);
167 declare!(SAI2);
168 declare!(SDMMC1);
169 declare!(SPI1);
170 declare!(SPI2);
171 declare!(SPI3);
172 declare!(SWPMI1);
173 declare!(TAMP_STAMP);
174 declare!(TIM1_BRK_TIM15);
175 declare!(TIM1_CC);
176 declare!(TIM1_TRG_COM_TIM17);
177 declare!(TIM1_UP_TIM16);
178 declare!(TIM2);
179 declare!(TIM3);
180 declare!(TIM4);
181 declare!(TIM5);
182 declare!(TIM6_DAC);
183 declare!(TIM7);
184 declare!(TIM8_BRK);
185 declare!(TIM8_CC);
186 declare!(TIM8_TRG_COM);
187 declare!(TIM8_UP);
188 declare!(TSC);
189 declare!(UART4);
190 declare!(UART5);
191 declare!(USART1);
192 declare!(USART2);
193 declare!(USART3);
194 declare!(WWDG);
195}
196mod interrupt_vector {
197 extern "C" {
198 fn ADC1_2();
199 fn ADC3();
200 fn CAN1_RX0();
201 fn CAN1_RX1();
202 fn CAN1_SCE();
203 fn CAN1_TX();
204 fn COMP();
205 fn DFSDM1_FLT0();
206 fn DFSDM1_FLT1();
207 fn DFSDM1_FLT2();
208 fn DFSDM1_FLT3();
209 fn DMA1_Channel1();
210 fn DMA1_Channel2();
211 fn DMA1_Channel3();
212 fn DMA1_Channel4();
213 fn DMA1_Channel5();
214 fn DMA1_Channel6();
215 fn DMA1_Channel7();
216 fn DMA2_Channel1();
217 fn DMA2_Channel2();
218 fn DMA2_Channel3();
219 fn DMA2_Channel4();
220 fn DMA2_Channel5();
221 fn DMA2_Channel6();
222 fn DMA2_Channel7();
223 fn EXTI0();
224 fn EXTI1();
225 fn EXTI15_10();
226 fn EXTI2();
227 fn EXTI3();
228 fn EXTI4();
229 fn EXTI9_5();
230 fn FLASH();
231 fn FMC();
232 fn FPU();
233 fn I2C1_ER();
234 fn I2C1_EV();
235 fn I2C2_ER();
236 fn I2C2_EV();
237 fn I2C3_ER();
238 fn I2C3_EV();
239 fn LPTIM1();
240 fn LPTIM2();
241 fn LPUART1();
242 fn PVD_PVM();
243 fn QUADSPI();
244 fn RCC();
245 fn RNG();
246 fn RTC_Alarm();
247 fn RTC_WKUP();
248 fn SAI1();
249 fn SAI2();
250 fn SDMMC1();
251 fn SPI1();
252 fn SPI2();
253 fn SPI3();
254 fn SWPMI1();
255 fn TAMP_STAMP();
256 fn TIM1_BRK_TIM15();
257 fn TIM1_CC();
258 fn TIM1_TRG_COM_TIM17();
259 fn TIM1_UP_TIM16();
260 fn TIM2();
261 fn TIM3();
262 fn TIM4();
263 fn TIM5();
264 fn TIM6_DAC();
265 fn TIM7();
266 fn TIM8_BRK();
267 fn TIM8_CC();
268 fn TIM8_TRG_COM();
269 fn TIM8_UP();
270 fn TSC();
271 fn UART4();
272 fn UART5();
273 fn USART1();
274 fn USART2();
275 fn USART3();
276 fn WWDG();
277 }
278 pub union Vector {
279 _handler: unsafe extern "C" fn(),
280 _reserved: u32,
281 }
282 #[link_section = ".vector_table.interrupts"]
283 #[no_mangle]
284 pub static __INTERRUPTS: [Vector; 82] = [
285 Vector { _handler: WWDG },
286 Vector { _handler: PVD_PVM },
287 Vector {
288 _handler: TAMP_STAMP,
289 },
290 Vector { _handler: RTC_WKUP },
291 Vector { _handler: FLASH },
292 Vector { _handler: RCC },
293 Vector { _handler: EXTI0 },
294 Vector { _handler: EXTI1 },
295 Vector { _handler: EXTI2 },
296 Vector { _handler: EXTI3 },
297 Vector { _handler: EXTI4 },
298 Vector {
299 _handler: DMA1_Channel1,
300 },
301 Vector {
302 _handler: DMA1_Channel2,
303 },
304 Vector {
305 _handler: DMA1_Channel3,
306 },
307 Vector {
308 _handler: DMA1_Channel4,
309 },
310 Vector {
311 _handler: DMA1_Channel5,
312 },
313 Vector {
314 _handler: DMA1_Channel6,
315 },
316 Vector {
317 _handler: DMA1_Channel7,
318 },
319 Vector { _handler: ADC1_2 },
320 Vector { _handler: CAN1_TX },
321 Vector { _handler: CAN1_RX0 },
322 Vector { _handler: CAN1_RX1 },
323 Vector { _handler: CAN1_SCE },
324 Vector { _handler: EXTI9_5 },
325 Vector {
326 _handler: TIM1_BRK_TIM15,
327 },
328 Vector {
329 _handler: TIM1_UP_TIM16,
330 },
331 Vector {
332 _handler: TIM1_TRG_COM_TIM17,
333 },
334 Vector { _handler: TIM1_CC },
335 Vector { _handler: TIM2 },
336 Vector { _handler: TIM3 },
337 Vector { _handler: TIM4 },
338 Vector { _handler: I2C1_EV },
339 Vector { _handler: I2C1_ER },
340 Vector { _handler: I2C2_EV },
341 Vector { _handler: I2C2_ER },
342 Vector { _handler: SPI1 },
343 Vector { _handler: SPI2 },
344 Vector { _handler: USART1 },
345 Vector { _handler: USART2 },
346 Vector { _handler: USART3 },
347 Vector {
348 _handler: EXTI15_10,
349 },
350 Vector {
351 _handler: RTC_Alarm,
352 },
353 Vector {
354 _handler: DFSDM1_FLT3,
355 },
356 Vector { _handler: TIM8_BRK },
357 Vector { _handler: TIM8_UP },
358 Vector {
359 _handler: TIM8_TRG_COM,
360 },
361 Vector { _handler: TIM8_CC },
362 Vector { _handler: ADC3 },
363 Vector { _handler: FMC },
364 Vector { _handler: SDMMC1 },
365 Vector { _handler: TIM5 },
366 Vector { _handler: SPI3 },
367 Vector { _handler: UART4 },
368 Vector { _handler: UART5 },
369 Vector { _handler: TIM6_DAC },
370 Vector { _handler: TIM7 },
371 Vector {
372 _handler: DMA2_Channel1,
373 },
374 Vector {
375 _handler: DMA2_Channel2,
376 },
377 Vector {
378 _handler: DMA2_Channel3,
379 },
380 Vector {
381 _handler: DMA2_Channel4,
382 },
383 Vector {
384 _handler: DMA2_Channel5,
385 },
386 Vector {
387 _handler: DFSDM1_FLT0,
388 },
389 Vector {
390 _handler: DFSDM1_FLT1,
391 },
392 Vector {
393 _handler: DFSDM1_FLT2,
394 },
395 Vector { _handler: COMP },
396 Vector { _handler: LPTIM1 },
397 Vector { _handler: LPTIM2 },
398 Vector { _reserved: 0 },
399 Vector {
400 _handler: DMA2_Channel6,
401 },
402 Vector {
403 _handler: DMA2_Channel7,
404 },
405 Vector { _handler: LPUART1 },
406 Vector { _handler: QUADSPI },
407 Vector { _handler: I2C3_EV },
408 Vector { _handler: I2C3_ER },
409 Vector { _handler: SAI1 },
410 Vector { _handler: SAI2 },
411 Vector { _handler: SWPMI1 },
412 Vector { _handler: TSC },
413 Vector { _reserved: 0 },
414 Vector { _reserved: 0 },
415 Vector { _handler: RNG },
416 Vector { _handler: FPU },
417 ];
418}
18impl_gpio_pin!(PA0, 0, 0, EXTI0); 419impl_gpio_pin!(PA0, 0, 0, EXTI0);
19impl_gpio_pin!(PA1, 0, 1, EXTI1); 420impl_gpio_pin!(PA1, 0, 1, EXTI1);
20impl_gpio_pin!(PA2, 0, 2, EXTI2); 421impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l471zg.rs b/embassy-stm32/src/chip/stm32l471zg.rs
index 937127de9..192060c1f 100644
--- a/embassy-stm32/src/chip/stm32l471zg.rs
+++ b/embassy-stm32/src/chip/stm32l471zg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -13,8 +13,409 @@ peripherals!(
13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, 13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2,
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG
15); 15);
16pub const SYSCFG_BASE: usize = 0x40010000;
17pub const EXTI_BASE: usize = 0x40010400;
16pub const GPIO_BASE: usize = 0x48000000; 18pub const GPIO_BASE: usize = 0x48000000;
17pub const GPIO_STRIDE: usize = 0x400; 19pub const GPIO_STRIDE: usize = 0x400;
20
21pub mod interrupt {
22 pub use cortex_m::interrupt::{CriticalSection, Mutex};
23 pub use embassy::interrupt::{declare, take, Interrupt};
24 pub use embassy_extras::interrupt::Priority4 as Priority;
25
26 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
27 #[allow(non_camel_case_types)]
28 enum InterruptEnum {
29 ADC1_2 = 18,
30 ADC3 = 47,
31 CAN1_RX0 = 20,
32 CAN1_RX1 = 21,
33 CAN1_SCE = 22,
34 CAN1_TX = 19,
35 COMP = 64,
36 DFSDM1_FLT0 = 61,
37 DFSDM1_FLT1 = 62,
38 DFSDM1_FLT2 = 63,
39 DFSDM1_FLT3 = 42,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2_Channel1 = 56,
48 DMA2_Channel2 = 57,
49 DMA2_Channel3 = 58,
50 DMA2_Channel4 = 59,
51 DMA2_Channel5 = 60,
52 DMA2_Channel6 = 68,
53 DMA2_Channel7 = 69,
54 EXTI0 = 6,
55 EXTI1 = 7,
56 EXTI15_10 = 40,
57 EXTI2 = 8,
58 EXTI3 = 9,
59 EXTI4 = 10,
60 EXTI9_5 = 23,
61 FLASH = 4,
62 FMC = 48,
63 FPU = 81,
64 I2C1_ER = 32,
65 I2C1_EV = 31,
66 I2C2_ER = 34,
67 I2C2_EV = 33,
68 I2C3_ER = 73,
69 I2C3_EV = 72,
70 LPTIM1 = 65,
71 LPTIM2 = 66,
72 LPUART1 = 70,
73 PVD_PVM = 1,
74 QUADSPI = 71,
75 RCC = 5,
76 RNG = 80,
77 RTC_Alarm = 41,
78 RTC_WKUP = 3,
79 SAI1 = 74,
80 SAI2 = 75,
81 SDMMC1 = 49,
82 SPI1 = 35,
83 SPI2 = 36,
84 SPI3 = 51,
85 SWPMI1 = 76,
86 TAMP_STAMP = 2,
87 TIM1_BRK_TIM15 = 24,
88 TIM1_CC = 27,
89 TIM1_TRG_COM_TIM17 = 26,
90 TIM1_UP_TIM16 = 25,
91 TIM2 = 28,
92 TIM3 = 29,
93 TIM4 = 30,
94 TIM5 = 50,
95 TIM6_DAC = 54,
96 TIM7 = 55,
97 TIM8_BRK = 43,
98 TIM8_CC = 46,
99 TIM8_TRG_COM = 45,
100 TIM8_UP = 44,
101 TSC = 77,
102 UART4 = 52,
103 UART5 = 53,
104 USART1 = 37,
105 USART2 = 38,
106 USART3 = 39,
107 WWDG = 0,
108 }
109 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
110 #[inline(always)]
111 fn number(self) -> u16 {
112 self as u16
113 }
114 }
115
116 declare!(ADC1_2);
117 declare!(ADC3);
118 declare!(CAN1_RX0);
119 declare!(CAN1_RX1);
120 declare!(CAN1_SCE);
121 declare!(CAN1_TX);
122 declare!(COMP);
123 declare!(DFSDM1_FLT0);
124 declare!(DFSDM1_FLT1);
125 declare!(DFSDM1_FLT2);
126 declare!(DFSDM1_FLT3);
127 declare!(DMA1_Channel1);
128 declare!(DMA1_Channel2);
129 declare!(DMA1_Channel3);
130 declare!(DMA1_Channel4);
131 declare!(DMA1_Channel5);
132 declare!(DMA1_Channel6);
133 declare!(DMA1_Channel7);
134 declare!(DMA2_Channel1);
135 declare!(DMA2_Channel2);
136 declare!(DMA2_Channel3);
137 declare!(DMA2_Channel4);
138 declare!(DMA2_Channel5);
139 declare!(DMA2_Channel6);
140 declare!(DMA2_Channel7);
141 declare!(EXTI0);
142 declare!(EXTI1);
143 declare!(EXTI15_10);
144 declare!(EXTI2);
145 declare!(EXTI3);
146 declare!(EXTI4);
147 declare!(EXTI9_5);
148 declare!(FLASH);
149 declare!(FMC);
150 declare!(FPU);
151 declare!(I2C1_ER);
152 declare!(I2C1_EV);
153 declare!(I2C2_ER);
154 declare!(I2C2_EV);
155 declare!(I2C3_ER);
156 declare!(I2C3_EV);
157 declare!(LPTIM1);
158 declare!(LPTIM2);
159 declare!(LPUART1);
160 declare!(PVD_PVM);
161 declare!(QUADSPI);
162 declare!(RCC);
163 declare!(RNG);
164 declare!(RTC_Alarm);
165 declare!(RTC_WKUP);
166 declare!(SAI1);
167 declare!(SAI2);
168 declare!(SDMMC1);
169 declare!(SPI1);
170 declare!(SPI2);
171 declare!(SPI3);
172 declare!(SWPMI1);
173 declare!(TAMP_STAMP);
174 declare!(TIM1_BRK_TIM15);
175 declare!(TIM1_CC);
176 declare!(TIM1_TRG_COM_TIM17);
177 declare!(TIM1_UP_TIM16);
178 declare!(TIM2);
179 declare!(TIM3);
180 declare!(TIM4);
181 declare!(TIM5);
182 declare!(TIM6_DAC);
183 declare!(TIM7);
184 declare!(TIM8_BRK);
185 declare!(TIM8_CC);
186 declare!(TIM8_TRG_COM);
187 declare!(TIM8_UP);
188 declare!(TSC);
189 declare!(UART4);
190 declare!(UART5);
191 declare!(USART1);
192 declare!(USART2);
193 declare!(USART3);
194 declare!(WWDG);
195}
196mod interrupt_vector {
197 extern "C" {
198 fn ADC1_2();
199 fn ADC3();
200 fn CAN1_RX0();
201 fn CAN1_RX1();
202 fn CAN1_SCE();
203 fn CAN1_TX();
204 fn COMP();
205 fn DFSDM1_FLT0();
206 fn DFSDM1_FLT1();
207 fn DFSDM1_FLT2();
208 fn DFSDM1_FLT3();
209 fn DMA1_Channel1();
210 fn DMA1_Channel2();
211 fn DMA1_Channel3();
212 fn DMA1_Channel4();
213 fn DMA1_Channel5();
214 fn DMA1_Channel6();
215 fn DMA1_Channel7();
216 fn DMA2_Channel1();
217 fn DMA2_Channel2();
218 fn DMA2_Channel3();
219 fn DMA2_Channel4();
220 fn DMA2_Channel5();
221 fn DMA2_Channel6();
222 fn DMA2_Channel7();
223 fn EXTI0();
224 fn EXTI1();
225 fn EXTI15_10();
226 fn EXTI2();
227 fn EXTI3();
228 fn EXTI4();
229 fn EXTI9_5();
230 fn FLASH();
231 fn FMC();
232 fn FPU();
233 fn I2C1_ER();
234 fn I2C1_EV();
235 fn I2C2_ER();
236 fn I2C2_EV();
237 fn I2C3_ER();
238 fn I2C3_EV();
239 fn LPTIM1();
240 fn LPTIM2();
241 fn LPUART1();
242 fn PVD_PVM();
243 fn QUADSPI();
244 fn RCC();
245 fn RNG();
246 fn RTC_Alarm();
247 fn RTC_WKUP();
248 fn SAI1();
249 fn SAI2();
250 fn SDMMC1();
251 fn SPI1();
252 fn SPI2();
253 fn SPI3();
254 fn SWPMI1();
255 fn TAMP_STAMP();
256 fn TIM1_BRK_TIM15();
257 fn TIM1_CC();
258 fn TIM1_TRG_COM_TIM17();
259 fn TIM1_UP_TIM16();
260 fn TIM2();
261 fn TIM3();
262 fn TIM4();
263 fn TIM5();
264 fn TIM6_DAC();
265 fn TIM7();
266 fn TIM8_BRK();
267 fn TIM8_CC();
268 fn TIM8_TRG_COM();
269 fn TIM8_UP();
270 fn TSC();
271 fn UART4();
272 fn UART5();
273 fn USART1();
274 fn USART2();
275 fn USART3();
276 fn WWDG();
277 }
278 pub union Vector {
279 _handler: unsafe extern "C" fn(),
280 _reserved: u32,
281 }
282 #[link_section = ".vector_table.interrupts"]
283 #[no_mangle]
284 pub static __INTERRUPTS: [Vector; 82] = [
285 Vector { _handler: WWDG },
286 Vector { _handler: PVD_PVM },
287 Vector {
288 _handler: TAMP_STAMP,
289 },
290 Vector { _handler: RTC_WKUP },
291 Vector { _handler: FLASH },
292 Vector { _handler: RCC },
293 Vector { _handler: EXTI0 },
294 Vector { _handler: EXTI1 },
295 Vector { _handler: EXTI2 },
296 Vector { _handler: EXTI3 },
297 Vector { _handler: EXTI4 },
298 Vector {
299 _handler: DMA1_Channel1,
300 },
301 Vector {
302 _handler: DMA1_Channel2,
303 },
304 Vector {
305 _handler: DMA1_Channel3,
306 },
307 Vector {
308 _handler: DMA1_Channel4,
309 },
310 Vector {
311 _handler: DMA1_Channel5,
312 },
313 Vector {
314 _handler: DMA1_Channel6,
315 },
316 Vector {
317 _handler: DMA1_Channel7,
318 },
319 Vector { _handler: ADC1_2 },
320 Vector { _handler: CAN1_TX },
321 Vector { _handler: CAN1_RX0 },
322 Vector { _handler: CAN1_RX1 },
323 Vector { _handler: CAN1_SCE },
324 Vector { _handler: EXTI9_5 },
325 Vector {
326 _handler: TIM1_BRK_TIM15,
327 },
328 Vector {
329 _handler: TIM1_UP_TIM16,
330 },
331 Vector {
332 _handler: TIM1_TRG_COM_TIM17,
333 },
334 Vector { _handler: TIM1_CC },
335 Vector { _handler: TIM2 },
336 Vector { _handler: TIM3 },
337 Vector { _handler: TIM4 },
338 Vector { _handler: I2C1_EV },
339 Vector { _handler: I2C1_ER },
340 Vector { _handler: I2C2_EV },
341 Vector { _handler: I2C2_ER },
342 Vector { _handler: SPI1 },
343 Vector { _handler: SPI2 },
344 Vector { _handler: USART1 },
345 Vector { _handler: USART2 },
346 Vector { _handler: USART3 },
347 Vector {
348 _handler: EXTI15_10,
349 },
350 Vector {
351 _handler: RTC_Alarm,
352 },
353 Vector {
354 _handler: DFSDM1_FLT3,
355 },
356 Vector { _handler: TIM8_BRK },
357 Vector { _handler: TIM8_UP },
358 Vector {
359 _handler: TIM8_TRG_COM,
360 },
361 Vector { _handler: TIM8_CC },
362 Vector { _handler: ADC3 },
363 Vector { _handler: FMC },
364 Vector { _handler: SDMMC1 },
365 Vector { _handler: TIM5 },
366 Vector { _handler: SPI3 },
367 Vector { _handler: UART4 },
368 Vector { _handler: UART5 },
369 Vector { _handler: TIM6_DAC },
370 Vector { _handler: TIM7 },
371 Vector {
372 _handler: DMA2_Channel1,
373 },
374 Vector {
375 _handler: DMA2_Channel2,
376 },
377 Vector {
378 _handler: DMA2_Channel3,
379 },
380 Vector {
381 _handler: DMA2_Channel4,
382 },
383 Vector {
384 _handler: DMA2_Channel5,
385 },
386 Vector {
387 _handler: DFSDM1_FLT0,
388 },
389 Vector {
390 _handler: DFSDM1_FLT1,
391 },
392 Vector {
393 _handler: DFSDM1_FLT2,
394 },
395 Vector { _handler: COMP },
396 Vector { _handler: LPTIM1 },
397 Vector { _handler: LPTIM2 },
398 Vector { _reserved: 0 },
399 Vector {
400 _handler: DMA2_Channel6,
401 },
402 Vector {
403 _handler: DMA2_Channel7,
404 },
405 Vector { _handler: LPUART1 },
406 Vector { _handler: QUADSPI },
407 Vector { _handler: I2C3_EV },
408 Vector { _handler: I2C3_ER },
409 Vector { _handler: SAI1 },
410 Vector { _handler: SAI2 },
411 Vector { _handler: SWPMI1 },
412 Vector { _handler: TSC },
413 Vector { _reserved: 0 },
414 Vector { _reserved: 0 },
415 Vector { _handler: RNG },
416 Vector { _handler: FPU },
417 ];
418}
18impl_gpio_pin!(PA0, 0, 0, EXTI0); 419impl_gpio_pin!(PA0, 0, 0, EXTI0);
19impl_gpio_pin!(PA1, 0, 1, EXTI1); 420impl_gpio_pin!(PA1, 0, 1, EXTI1);
20impl_gpio_pin!(PA2, 0, 2, EXTI2); 421impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l475rc.rs b/embassy-stm32/src/chip/stm32l475rc.rs
index 774df143c..7a818be15 100644
--- a/embassy-stm32/src/chip/stm32l475rc.rs
+++ b/embassy-stm32/src/chip/stm32l475rc.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,412 @@ peripherals!(
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS,
15 WWDG 15 WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LPTIM1 = 65,
72 LPTIM2 = 66,
73 LPUART1 = 70,
74 OTG_FS = 67,
75 PVD_PVM = 1,
76 QUADSPI = 71,
77 RCC = 5,
78 RNG = 80,
79 RTC_Alarm = 41,
80 RTC_WKUP = 3,
81 SAI1 = 74,
82 SAI2 = 75,
83 SDMMC1 = 49,
84 SPI1 = 35,
85 SPI2 = 36,
86 SPI3 = 51,
87 SWPMI1 = 76,
88 TAMP_STAMP = 2,
89 TIM1_BRK_TIM15 = 24,
90 TIM1_CC = 27,
91 TIM1_TRG_COM_TIM17 = 26,
92 TIM1_UP_TIM16 = 25,
93 TIM2 = 28,
94 TIM3 = 29,
95 TIM4 = 30,
96 TIM5 = 50,
97 TIM6_DAC = 54,
98 TIM7 = 55,
99 TIM8_BRK = 43,
100 TIM8_CC = 46,
101 TIM8_TRG_COM = 45,
102 TIM8_UP = 44,
103 TSC = 77,
104 UART4 = 52,
105 UART5 = 53,
106 USART1 = 37,
107 USART2 = 38,
108 USART3 = 39,
109 WWDG = 0,
110 }
111 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
112 #[inline(always)]
113 fn number(self) -> u16 {
114 self as u16
115 }
116 }
117
118 declare!(ADC1_2);
119 declare!(ADC3);
120 declare!(CAN1_RX0);
121 declare!(CAN1_RX1);
122 declare!(CAN1_SCE);
123 declare!(CAN1_TX);
124 declare!(COMP);
125 declare!(DFSDM1_FLT0);
126 declare!(DFSDM1_FLT1);
127 declare!(DFSDM1_FLT2);
128 declare!(DFSDM1_FLT3);
129 declare!(DMA1_Channel1);
130 declare!(DMA1_Channel2);
131 declare!(DMA1_Channel3);
132 declare!(DMA1_Channel4);
133 declare!(DMA1_Channel5);
134 declare!(DMA1_Channel6);
135 declare!(DMA1_Channel7);
136 declare!(DMA2_Channel1);
137 declare!(DMA2_Channel2);
138 declare!(DMA2_Channel3);
139 declare!(DMA2_Channel4);
140 declare!(DMA2_Channel5);
141 declare!(DMA2_Channel6);
142 declare!(DMA2_Channel7);
143 declare!(EXTI0);
144 declare!(EXTI1);
145 declare!(EXTI15_10);
146 declare!(EXTI2);
147 declare!(EXTI3);
148 declare!(EXTI4);
149 declare!(EXTI9_5);
150 declare!(FLASH);
151 declare!(FMC);
152 declare!(FPU);
153 declare!(I2C1_ER);
154 declare!(I2C1_EV);
155 declare!(I2C2_ER);
156 declare!(I2C2_EV);
157 declare!(I2C3_ER);
158 declare!(I2C3_EV);
159 declare!(LPTIM1);
160 declare!(LPTIM2);
161 declare!(LPUART1);
162 declare!(OTG_FS);
163 declare!(PVD_PVM);
164 declare!(QUADSPI);
165 declare!(RCC);
166 declare!(RNG);
167 declare!(RTC_Alarm);
168 declare!(RTC_WKUP);
169 declare!(SAI1);
170 declare!(SAI2);
171 declare!(SDMMC1);
172 declare!(SPI1);
173 declare!(SPI2);
174 declare!(SPI3);
175 declare!(SWPMI1);
176 declare!(TAMP_STAMP);
177 declare!(TIM1_BRK_TIM15);
178 declare!(TIM1_CC);
179 declare!(TIM1_TRG_COM_TIM17);
180 declare!(TIM1_UP_TIM16);
181 declare!(TIM2);
182 declare!(TIM3);
183 declare!(TIM4);
184 declare!(TIM5);
185 declare!(TIM6_DAC);
186 declare!(TIM7);
187 declare!(TIM8_BRK);
188 declare!(TIM8_CC);
189 declare!(TIM8_TRG_COM);
190 declare!(TIM8_UP);
191 declare!(TSC);
192 declare!(UART4);
193 declare!(UART5);
194 declare!(USART1);
195 declare!(USART2);
196 declare!(USART3);
197 declare!(WWDG);
198}
199mod interrupt_vector {
200 extern "C" {
201 fn ADC1_2();
202 fn ADC3();
203 fn CAN1_RX0();
204 fn CAN1_RX1();
205 fn CAN1_SCE();
206 fn CAN1_TX();
207 fn COMP();
208 fn DFSDM1_FLT0();
209 fn DFSDM1_FLT1();
210 fn DFSDM1_FLT2();
211 fn DFSDM1_FLT3();
212 fn DMA1_Channel1();
213 fn DMA1_Channel2();
214 fn DMA1_Channel3();
215 fn DMA1_Channel4();
216 fn DMA1_Channel5();
217 fn DMA1_Channel6();
218 fn DMA1_Channel7();
219 fn DMA2_Channel1();
220 fn DMA2_Channel2();
221 fn DMA2_Channel3();
222 fn DMA2_Channel4();
223 fn DMA2_Channel5();
224 fn DMA2_Channel6();
225 fn DMA2_Channel7();
226 fn EXTI0();
227 fn EXTI1();
228 fn EXTI15_10();
229 fn EXTI2();
230 fn EXTI3();
231 fn EXTI4();
232 fn EXTI9_5();
233 fn FLASH();
234 fn FMC();
235 fn FPU();
236 fn I2C1_ER();
237 fn I2C1_EV();
238 fn I2C2_ER();
239 fn I2C2_EV();
240 fn I2C3_ER();
241 fn I2C3_EV();
242 fn LPTIM1();
243 fn LPTIM2();
244 fn LPUART1();
245 fn OTG_FS();
246 fn PVD_PVM();
247 fn QUADSPI();
248 fn RCC();
249 fn RNG();
250 fn RTC_Alarm();
251 fn RTC_WKUP();
252 fn SAI1();
253 fn SAI2();
254 fn SDMMC1();
255 fn SPI1();
256 fn SPI2();
257 fn SPI3();
258 fn SWPMI1();
259 fn TAMP_STAMP();
260 fn TIM1_BRK_TIM15();
261 fn TIM1_CC();
262 fn TIM1_TRG_COM_TIM17();
263 fn TIM1_UP_TIM16();
264 fn TIM2();
265 fn TIM3();
266 fn TIM4();
267 fn TIM5();
268 fn TIM6_DAC();
269 fn TIM7();
270 fn TIM8_BRK();
271 fn TIM8_CC();
272 fn TIM8_TRG_COM();
273 fn TIM8_UP();
274 fn TSC();
275 fn UART4();
276 fn UART5();
277 fn USART1();
278 fn USART2();
279 fn USART3();
280 fn WWDG();
281 }
282 pub union Vector {
283 _handler: unsafe extern "C" fn(),
284 _reserved: u32,
285 }
286 #[link_section = ".vector_table.interrupts"]
287 #[no_mangle]
288 pub static __INTERRUPTS: [Vector; 82] = [
289 Vector { _handler: WWDG },
290 Vector { _handler: PVD_PVM },
291 Vector {
292 _handler: TAMP_STAMP,
293 },
294 Vector { _handler: RTC_WKUP },
295 Vector { _handler: FLASH },
296 Vector { _handler: RCC },
297 Vector { _handler: EXTI0 },
298 Vector { _handler: EXTI1 },
299 Vector { _handler: EXTI2 },
300 Vector { _handler: EXTI3 },
301 Vector { _handler: EXTI4 },
302 Vector {
303 _handler: DMA1_Channel1,
304 },
305 Vector {
306 _handler: DMA1_Channel2,
307 },
308 Vector {
309 _handler: DMA1_Channel3,
310 },
311 Vector {
312 _handler: DMA1_Channel4,
313 },
314 Vector {
315 _handler: DMA1_Channel5,
316 },
317 Vector {
318 _handler: DMA1_Channel6,
319 },
320 Vector {
321 _handler: DMA1_Channel7,
322 },
323 Vector { _handler: ADC1_2 },
324 Vector { _handler: CAN1_TX },
325 Vector { _handler: CAN1_RX0 },
326 Vector { _handler: CAN1_RX1 },
327 Vector { _handler: CAN1_SCE },
328 Vector { _handler: EXTI9_5 },
329 Vector {
330 _handler: TIM1_BRK_TIM15,
331 },
332 Vector {
333 _handler: TIM1_UP_TIM16,
334 },
335 Vector {
336 _handler: TIM1_TRG_COM_TIM17,
337 },
338 Vector { _handler: TIM1_CC },
339 Vector { _handler: TIM2 },
340 Vector { _handler: TIM3 },
341 Vector { _handler: TIM4 },
342 Vector { _handler: I2C1_EV },
343 Vector { _handler: I2C1_ER },
344 Vector { _handler: I2C2_EV },
345 Vector { _handler: I2C2_ER },
346 Vector { _handler: SPI1 },
347 Vector { _handler: SPI2 },
348 Vector { _handler: USART1 },
349 Vector { _handler: USART2 },
350 Vector { _handler: USART3 },
351 Vector {
352 _handler: EXTI15_10,
353 },
354 Vector {
355 _handler: RTC_Alarm,
356 },
357 Vector {
358 _handler: DFSDM1_FLT3,
359 },
360 Vector { _handler: TIM8_BRK },
361 Vector { _handler: TIM8_UP },
362 Vector {
363 _handler: TIM8_TRG_COM,
364 },
365 Vector { _handler: TIM8_CC },
366 Vector { _handler: ADC3 },
367 Vector { _handler: FMC },
368 Vector { _handler: SDMMC1 },
369 Vector { _handler: TIM5 },
370 Vector { _handler: SPI3 },
371 Vector { _handler: UART4 },
372 Vector { _handler: UART5 },
373 Vector { _handler: TIM6_DAC },
374 Vector { _handler: TIM7 },
375 Vector {
376 _handler: DMA2_Channel1,
377 },
378 Vector {
379 _handler: DMA2_Channel2,
380 },
381 Vector {
382 _handler: DMA2_Channel3,
383 },
384 Vector {
385 _handler: DMA2_Channel4,
386 },
387 Vector {
388 _handler: DMA2_Channel5,
389 },
390 Vector {
391 _handler: DFSDM1_FLT0,
392 },
393 Vector {
394 _handler: DFSDM1_FLT1,
395 },
396 Vector {
397 _handler: DFSDM1_FLT2,
398 },
399 Vector { _handler: COMP },
400 Vector { _handler: LPTIM1 },
401 Vector { _handler: LPTIM2 },
402 Vector { _handler: OTG_FS },
403 Vector {
404 _handler: DMA2_Channel6,
405 },
406 Vector {
407 _handler: DMA2_Channel7,
408 },
409 Vector { _handler: LPUART1 },
410 Vector { _handler: QUADSPI },
411 Vector { _handler: I2C3_EV },
412 Vector { _handler: I2C3_ER },
413 Vector { _handler: SAI1 },
414 Vector { _handler: SAI2 },
415 Vector { _handler: SWPMI1 },
416 Vector { _handler: TSC },
417 Vector { _reserved: 0 },
418 Vector { _reserved: 0 },
419 Vector { _handler: RNG },
420 Vector { _handler: FPU },
421 ];
422}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 423impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 424impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 425impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l475re.rs b/embassy-stm32/src/chip/stm32l475re.rs
index 774df143c..7a818be15 100644
--- a/embassy-stm32/src/chip/stm32l475re.rs
+++ b/embassy-stm32/src/chip/stm32l475re.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,412 @@ peripherals!(
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS,
15 WWDG 15 WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LPTIM1 = 65,
72 LPTIM2 = 66,
73 LPUART1 = 70,
74 OTG_FS = 67,
75 PVD_PVM = 1,
76 QUADSPI = 71,
77 RCC = 5,
78 RNG = 80,
79 RTC_Alarm = 41,
80 RTC_WKUP = 3,
81 SAI1 = 74,
82 SAI2 = 75,
83 SDMMC1 = 49,
84 SPI1 = 35,
85 SPI2 = 36,
86 SPI3 = 51,
87 SWPMI1 = 76,
88 TAMP_STAMP = 2,
89 TIM1_BRK_TIM15 = 24,
90 TIM1_CC = 27,
91 TIM1_TRG_COM_TIM17 = 26,
92 TIM1_UP_TIM16 = 25,
93 TIM2 = 28,
94 TIM3 = 29,
95 TIM4 = 30,
96 TIM5 = 50,
97 TIM6_DAC = 54,
98 TIM7 = 55,
99 TIM8_BRK = 43,
100 TIM8_CC = 46,
101 TIM8_TRG_COM = 45,
102 TIM8_UP = 44,
103 TSC = 77,
104 UART4 = 52,
105 UART5 = 53,
106 USART1 = 37,
107 USART2 = 38,
108 USART3 = 39,
109 WWDG = 0,
110 }
111 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
112 #[inline(always)]
113 fn number(self) -> u16 {
114 self as u16
115 }
116 }
117
118 declare!(ADC1_2);
119 declare!(ADC3);
120 declare!(CAN1_RX0);
121 declare!(CAN1_RX1);
122 declare!(CAN1_SCE);
123 declare!(CAN1_TX);
124 declare!(COMP);
125 declare!(DFSDM1_FLT0);
126 declare!(DFSDM1_FLT1);
127 declare!(DFSDM1_FLT2);
128 declare!(DFSDM1_FLT3);
129 declare!(DMA1_Channel1);
130 declare!(DMA1_Channel2);
131 declare!(DMA1_Channel3);
132 declare!(DMA1_Channel4);
133 declare!(DMA1_Channel5);
134 declare!(DMA1_Channel6);
135 declare!(DMA1_Channel7);
136 declare!(DMA2_Channel1);
137 declare!(DMA2_Channel2);
138 declare!(DMA2_Channel3);
139 declare!(DMA2_Channel4);
140 declare!(DMA2_Channel5);
141 declare!(DMA2_Channel6);
142 declare!(DMA2_Channel7);
143 declare!(EXTI0);
144 declare!(EXTI1);
145 declare!(EXTI15_10);
146 declare!(EXTI2);
147 declare!(EXTI3);
148 declare!(EXTI4);
149 declare!(EXTI9_5);
150 declare!(FLASH);
151 declare!(FMC);
152 declare!(FPU);
153 declare!(I2C1_ER);
154 declare!(I2C1_EV);
155 declare!(I2C2_ER);
156 declare!(I2C2_EV);
157 declare!(I2C3_ER);
158 declare!(I2C3_EV);
159 declare!(LPTIM1);
160 declare!(LPTIM2);
161 declare!(LPUART1);
162 declare!(OTG_FS);
163 declare!(PVD_PVM);
164 declare!(QUADSPI);
165 declare!(RCC);
166 declare!(RNG);
167 declare!(RTC_Alarm);
168 declare!(RTC_WKUP);
169 declare!(SAI1);
170 declare!(SAI2);
171 declare!(SDMMC1);
172 declare!(SPI1);
173 declare!(SPI2);
174 declare!(SPI3);
175 declare!(SWPMI1);
176 declare!(TAMP_STAMP);
177 declare!(TIM1_BRK_TIM15);
178 declare!(TIM1_CC);
179 declare!(TIM1_TRG_COM_TIM17);
180 declare!(TIM1_UP_TIM16);
181 declare!(TIM2);
182 declare!(TIM3);
183 declare!(TIM4);
184 declare!(TIM5);
185 declare!(TIM6_DAC);
186 declare!(TIM7);
187 declare!(TIM8_BRK);
188 declare!(TIM8_CC);
189 declare!(TIM8_TRG_COM);
190 declare!(TIM8_UP);
191 declare!(TSC);
192 declare!(UART4);
193 declare!(UART5);
194 declare!(USART1);
195 declare!(USART2);
196 declare!(USART3);
197 declare!(WWDG);
198}
199mod interrupt_vector {
200 extern "C" {
201 fn ADC1_2();
202 fn ADC3();
203 fn CAN1_RX0();
204 fn CAN1_RX1();
205 fn CAN1_SCE();
206 fn CAN1_TX();
207 fn COMP();
208 fn DFSDM1_FLT0();
209 fn DFSDM1_FLT1();
210 fn DFSDM1_FLT2();
211 fn DFSDM1_FLT3();
212 fn DMA1_Channel1();
213 fn DMA1_Channel2();
214 fn DMA1_Channel3();
215 fn DMA1_Channel4();
216 fn DMA1_Channel5();
217 fn DMA1_Channel6();
218 fn DMA1_Channel7();
219 fn DMA2_Channel1();
220 fn DMA2_Channel2();
221 fn DMA2_Channel3();
222 fn DMA2_Channel4();
223 fn DMA2_Channel5();
224 fn DMA2_Channel6();
225 fn DMA2_Channel7();
226 fn EXTI0();
227 fn EXTI1();
228 fn EXTI15_10();
229 fn EXTI2();
230 fn EXTI3();
231 fn EXTI4();
232 fn EXTI9_5();
233 fn FLASH();
234 fn FMC();
235 fn FPU();
236 fn I2C1_ER();
237 fn I2C1_EV();
238 fn I2C2_ER();
239 fn I2C2_EV();
240 fn I2C3_ER();
241 fn I2C3_EV();
242 fn LPTIM1();
243 fn LPTIM2();
244 fn LPUART1();
245 fn OTG_FS();
246 fn PVD_PVM();
247 fn QUADSPI();
248 fn RCC();
249 fn RNG();
250 fn RTC_Alarm();
251 fn RTC_WKUP();
252 fn SAI1();
253 fn SAI2();
254 fn SDMMC1();
255 fn SPI1();
256 fn SPI2();
257 fn SPI3();
258 fn SWPMI1();
259 fn TAMP_STAMP();
260 fn TIM1_BRK_TIM15();
261 fn TIM1_CC();
262 fn TIM1_TRG_COM_TIM17();
263 fn TIM1_UP_TIM16();
264 fn TIM2();
265 fn TIM3();
266 fn TIM4();
267 fn TIM5();
268 fn TIM6_DAC();
269 fn TIM7();
270 fn TIM8_BRK();
271 fn TIM8_CC();
272 fn TIM8_TRG_COM();
273 fn TIM8_UP();
274 fn TSC();
275 fn UART4();
276 fn UART5();
277 fn USART1();
278 fn USART2();
279 fn USART3();
280 fn WWDG();
281 }
282 pub union Vector {
283 _handler: unsafe extern "C" fn(),
284 _reserved: u32,
285 }
286 #[link_section = ".vector_table.interrupts"]
287 #[no_mangle]
288 pub static __INTERRUPTS: [Vector; 82] = [
289 Vector { _handler: WWDG },
290 Vector { _handler: PVD_PVM },
291 Vector {
292 _handler: TAMP_STAMP,
293 },
294 Vector { _handler: RTC_WKUP },
295 Vector { _handler: FLASH },
296 Vector { _handler: RCC },
297 Vector { _handler: EXTI0 },
298 Vector { _handler: EXTI1 },
299 Vector { _handler: EXTI2 },
300 Vector { _handler: EXTI3 },
301 Vector { _handler: EXTI4 },
302 Vector {
303 _handler: DMA1_Channel1,
304 },
305 Vector {
306 _handler: DMA1_Channel2,
307 },
308 Vector {
309 _handler: DMA1_Channel3,
310 },
311 Vector {
312 _handler: DMA1_Channel4,
313 },
314 Vector {
315 _handler: DMA1_Channel5,
316 },
317 Vector {
318 _handler: DMA1_Channel6,
319 },
320 Vector {
321 _handler: DMA1_Channel7,
322 },
323 Vector { _handler: ADC1_2 },
324 Vector { _handler: CAN1_TX },
325 Vector { _handler: CAN1_RX0 },
326 Vector { _handler: CAN1_RX1 },
327 Vector { _handler: CAN1_SCE },
328 Vector { _handler: EXTI9_5 },
329 Vector {
330 _handler: TIM1_BRK_TIM15,
331 },
332 Vector {
333 _handler: TIM1_UP_TIM16,
334 },
335 Vector {
336 _handler: TIM1_TRG_COM_TIM17,
337 },
338 Vector { _handler: TIM1_CC },
339 Vector { _handler: TIM2 },
340 Vector { _handler: TIM3 },
341 Vector { _handler: TIM4 },
342 Vector { _handler: I2C1_EV },
343 Vector { _handler: I2C1_ER },
344 Vector { _handler: I2C2_EV },
345 Vector { _handler: I2C2_ER },
346 Vector { _handler: SPI1 },
347 Vector { _handler: SPI2 },
348 Vector { _handler: USART1 },
349 Vector { _handler: USART2 },
350 Vector { _handler: USART3 },
351 Vector {
352 _handler: EXTI15_10,
353 },
354 Vector {
355 _handler: RTC_Alarm,
356 },
357 Vector {
358 _handler: DFSDM1_FLT3,
359 },
360 Vector { _handler: TIM8_BRK },
361 Vector { _handler: TIM8_UP },
362 Vector {
363 _handler: TIM8_TRG_COM,
364 },
365 Vector { _handler: TIM8_CC },
366 Vector { _handler: ADC3 },
367 Vector { _handler: FMC },
368 Vector { _handler: SDMMC1 },
369 Vector { _handler: TIM5 },
370 Vector { _handler: SPI3 },
371 Vector { _handler: UART4 },
372 Vector { _handler: UART5 },
373 Vector { _handler: TIM6_DAC },
374 Vector { _handler: TIM7 },
375 Vector {
376 _handler: DMA2_Channel1,
377 },
378 Vector {
379 _handler: DMA2_Channel2,
380 },
381 Vector {
382 _handler: DMA2_Channel3,
383 },
384 Vector {
385 _handler: DMA2_Channel4,
386 },
387 Vector {
388 _handler: DMA2_Channel5,
389 },
390 Vector {
391 _handler: DFSDM1_FLT0,
392 },
393 Vector {
394 _handler: DFSDM1_FLT1,
395 },
396 Vector {
397 _handler: DFSDM1_FLT2,
398 },
399 Vector { _handler: COMP },
400 Vector { _handler: LPTIM1 },
401 Vector { _handler: LPTIM2 },
402 Vector { _handler: OTG_FS },
403 Vector {
404 _handler: DMA2_Channel6,
405 },
406 Vector {
407 _handler: DMA2_Channel7,
408 },
409 Vector { _handler: LPUART1 },
410 Vector { _handler: QUADSPI },
411 Vector { _handler: I2C3_EV },
412 Vector { _handler: I2C3_ER },
413 Vector { _handler: SAI1 },
414 Vector { _handler: SAI2 },
415 Vector { _handler: SWPMI1 },
416 Vector { _handler: TSC },
417 Vector { _reserved: 0 },
418 Vector { _reserved: 0 },
419 Vector { _handler: RNG },
420 Vector { _handler: FPU },
421 ];
422}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 423impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 424impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 425impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l475rg.rs b/embassy-stm32/src/chip/stm32l475rg.rs
index 774df143c..7a818be15 100644
--- a/embassy-stm32/src/chip/stm32l475rg.rs
+++ b/embassy-stm32/src/chip/stm32l475rg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,412 @@ peripherals!(
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS,
15 WWDG 15 WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LPTIM1 = 65,
72 LPTIM2 = 66,
73 LPUART1 = 70,
74 OTG_FS = 67,
75 PVD_PVM = 1,
76 QUADSPI = 71,
77 RCC = 5,
78 RNG = 80,
79 RTC_Alarm = 41,
80 RTC_WKUP = 3,
81 SAI1 = 74,
82 SAI2 = 75,
83 SDMMC1 = 49,
84 SPI1 = 35,
85 SPI2 = 36,
86 SPI3 = 51,
87 SWPMI1 = 76,
88 TAMP_STAMP = 2,
89 TIM1_BRK_TIM15 = 24,
90 TIM1_CC = 27,
91 TIM1_TRG_COM_TIM17 = 26,
92 TIM1_UP_TIM16 = 25,
93 TIM2 = 28,
94 TIM3 = 29,
95 TIM4 = 30,
96 TIM5 = 50,
97 TIM6_DAC = 54,
98 TIM7 = 55,
99 TIM8_BRK = 43,
100 TIM8_CC = 46,
101 TIM8_TRG_COM = 45,
102 TIM8_UP = 44,
103 TSC = 77,
104 UART4 = 52,
105 UART5 = 53,
106 USART1 = 37,
107 USART2 = 38,
108 USART3 = 39,
109 WWDG = 0,
110 }
111 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
112 #[inline(always)]
113 fn number(self) -> u16 {
114 self as u16
115 }
116 }
117
118 declare!(ADC1_2);
119 declare!(ADC3);
120 declare!(CAN1_RX0);
121 declare!(CAN1_RX1);
122 declare!(CAN1_SCE);
123 declare!(CAN1_TX);
124 declare!(COMP);
125 declare!(DFSDM1_FLT0);
126 declare!(DFSDM1_FLT1);
127 declare!(DFSDM1_FLT2);
128 declare!(DFSDM1_FLT3);
129 declare!(DMA1_Channel1);
130 declare!(DMA1_Channel2);
131 declare!(DMA1_Channel3);
132 declare!(DMA1_Channel4);
133 declare!(DMA1_Channel5);
134 declare!(DMA1_Channel6);
135 declare!(DMA1_Channel7);
136 declare!(DMA2_Channel1);
137 declare!(DMA2_Channel2);
138 declare!(DMA2_Channel3);
139 declare!(DMA2_Channel4);
140 declare!(DMA2_Channel5);
141 declare!(DMA2_Channel6);
142 declare!(DMA2_Channel7);
143 declare!(EXTI0);
144 declare!(EXTI1);
145 declare!(EXTI15_10);
146 declare!(EXTI2);
147 declare!(EXTI3);
148 declare!(EXTI4);
149 declare!(EXTI9_5);
150 declare!(FLASH);
151 declare!(FMC);
152 declare!(FPU);
153 declare!(I2C1_ER);
154 declare!(I2C1_EV);
155 declare!(I2C2_ER);
156 declare!(I2C2_EV);
157 declare!(I2C3_ER);
158 declare!(I2C3_EV);
159 declare!(LPTIM1);
160 declare!(LPTIM2);
161 declare!(LPUART1);
162 declare!(OTG_FS);
163 declare!(PVD_PVM);
164 declare!(QUADSPI);
165 declare!(RCC);
166 declare!(RNG);
167 declare!(RTC_Alarm);
168 declare!(RTC_WKUP);
169 declare!(SAI1);
170 declare!(SAI2);
171 declare!(SDMMC1);
172 declare!(SPI1);
173 declare!(SPI2);
174 declare!(SPI3);
175 declare!(SWPMI1);
176 declare!(TAMP_STAMP);
177 declare!(TIM1_BRK_TIM15);
178 declare!(TIM1_CC);
179 declare!(TIM1_TRG_COM_TIM17);
180 declare!(TIM1_UP_TIM16);
181 declare!(TIM2);
182 declare!(TIM3);
183 declare!(TIM4);
184 declare!(TIM5);
185 declare!(TIM6_DAC);
186 declare!(TIM7);
187 declare!(TIM8_BRK);
188 declare!(TIM8_CC);
189 declare!(TIM8_TRG_COM);
190 declare!(TIM8_UP);
191 declare!(TSC);
192 declare!(UART4);
193 declare!(UART5);
194 declare!(USART1);
195 declare!(USART2);
196 declare!(USART3);
197 declare!(WWDG);
198}
199mod interrupt_vector {
200 extern "C" {
201 fn ADC1_2();
202 fn ADC3();
203 fn CAN1_RX0();
204 fn CAN1_RX1();
205 fn CAN1_SCE();
206 fn CAN1_TX();
207 fn COMP();
208 fn DFSDM1_FLT0();
209 fn DFSDM1_FLT1();
210 fn DFSDM1_FLT2();
211 fn DFSDM1_FLT3();
212 fn DMA1_Channel1();
213 fn DMA1_Channel2();
214 fn DMA1_Channel3();
215 fn DMA1_Channel4();
216 fn DMA1_Channel5();
217 fn DMA1_Channel6();
218 fn DMA1_Channel7();
219 fn DMA2_Channel1();
220 fn DMA2_Channel2();
221 fn DMA2_Channel3();
222 fn DMA2_Channel4();
223 fn DMA2_Channel5();
224 fn DMA2_Channel6();
225 fn DMA2_Channel7();
226 fn EXTI0();
227 fn EXTI1();
228 fn EXTI15_10();
229 fn EXTI2();
230 fn EXTI3();
231 fn EXTI4();
232 fn EXTI9_5();
233 fn FLASH();
234 fn FMC();
235 fn FPU();
236 fn I2C1_ER();
237 fn I2C1_EV();
238 fn I2C2_ER();
239 fn I2C2_EV();
240 fn I2C3_ER();
241 fn I2C3_EV();
242 fn LPTIM1();
243 fn LPTIM2();
244 fn LPUART1();
245 fn OTG_FS();
246 fn PVD_PVM();
247 fn QUADSPI();
248 fn RCC();
249 fn RNG();
250 fn RTC_Alarm();
251 fn RTC_WKUP();
252 fn SAI1();
253 fn SAI2();
254 fn SDMMC1();
255 fn SPI1();
256 fn SPI2();
257 fn SPI3();
258 fn SWPMI1();
259 fn TAMP_STAMP();
260 fn TIM1_BRK_TIM15();
261 fn TIM1_CC();
262 fn TIM1_TRG_COM_TIM17();
263 fn TIM1_UP_TIM16();
264 fn TIM2();
265 fn TIM3();
266 fn TIM4();
267 fn TIM5();
268 fn TIM6_DAC();
269 fn TIM7();
270 fn TIM8_BRK();
271 fn TIM8_CC();
272 fn TIM8_TRG_COM();
273 fn TIM8_UP();
274 fn TSC();
275 fn UART4();
276 fn UART5();
277 fn USART1();
278 fn USART2();
279 fn USART3();
280 fn WWDG();
281 }
282 pub union Vector {
283 _handler: unsafe extern "C" fn(),
284 _reserved: u32,
285 }
286 #[link_section = ".vector_table.interrupts"]
287 #[no_mangle]
288 pub static __INTERRUPTS: [Vector; 82] = [
289 Vector { _handler: WWDG },
290 Vector { _handler: PVD_PVM },
291 Vector {
292 _handler: TAMP_STAMP,
293 },
294 Vector { _handler: RTC_WKUP },
295 Vector { _handler: FLASH },
296 Vector { _handler: RCC },
297 Vector { _handler: EXTI0 },
298 Vector { _handler: EXTI1 },
299 Vector { _handler: EXTI2 },
300 Vector { _handler: EXTI3 },
301 Vector { _handler: EXTI4 },
302 Vector {
303 _handler: DMA1_Channel1,
304 },
305 Vector {
306 _handler: DMA1_Channel2,
307 },
308 Vector {
309 _handler: DMA1_Channel3,
310 },
311 Vector {
312 _handler: DMA1_Channel4,
313 },
314 Vector {
315 _handler: DMA1_Channel5,
316 },
317 Vector {
318 _handler: DMA1_Channel6,
319 },
320 Vector {
321 _handler: DMA1_Channel7,
322 },
323 Vector { _handler: ADC1_2 },
324 Vector { _handler: CAN1_TX },
325 Vector { _handler: CAN1_RX0 },
326 Vector { _handler: CAN1_RX1 },
327 Vector { _handler: CAN1_SCE },
328 Vector { _handler: EXTI9_5 },
329 Vector {
330 _handler: TIM1_BRK_TIM15,
331 },
332 Vector {
333 _handler: TIM1_UP_TIM16,
334 },
335 Vector {
336 _handler: TIM1_TRG_COM_TIM17,
337 },
338 Vector { _handler: TIM1_CC },
339 Vector { _handler: TIM2 },
340 Vector { _handler: TIM3 },
341 Vector { _handler: TIM4 },
342 Vector { _handler: I2C1_EV },
343 Vector { _handler: I2C1_ER },
344 Vector { _handler: I2C2_EV },
345 Vector { _handler: I2C2_ER },
346 Vector { _handler: SPI1 },
347 Vector { _handler: SPI2 },
348 Vector { _handler: USART1 },
349 Vector { _handler: USART2 },
350 Vector { _handler: USART3 },
351 Vector {
352 _handler: EXTI15_10,
353 },
354 Vector {
355 _handler: RTC_Alarm,
356 },
357 Vector {
358 _handler: DFSDM1_FLT3,
359 },
360 Vector { _handler: TIM8_BRK },
361 Vector { _handler: TIM8_UP },
362 Vector {
363 _handler: TIM8_TRG_COM,
364 },
365 Vector { _handler: TIM8_CC },
366 Vector { _handler: ADC3 },
367 Vector { _handler: FMC },
368 Vector { _handler: SDMMC1 },
369 Vector { _handler: TIM5 },
370 Vector { _handler: SPI3 },
371 Vector { _handler: UART4 },
372 Vector { _handler: UART5 },
373 Vector { _handler: TIM6_DAC },
374 Vector { _handler: TIM7 },
375 Vector {
376 _handler: DMA2_Channel1,
377 },
378 Vector {
379 _handler: DMA2_Channel2,
380 },
381 Vector {
382 _handler: DMA2_Channel3,
383 },
384 Vector {
385 _handler: DMA2_Channel4,
386 },
387 Vector {
388 _handler: DMA2_Channel5,
389 },
390 Vector {
391 _handler: DFSDM1_FLT0,
392 },
393 Vector {
394 _handler: DFSDM1_FLT1,
395 },
396 Vector {
397 _handler: DFSDM1_FLT2,
398 },
399 Vector { _handler: COMP },
400 Vector { _handler: LPTIM1 },
401 Vector { _handler: LPTIM2 },
402 Vector { _handler: OTG_FS },
403 Vector {
404 _handler: DMA2_Channel6,
405 },
406 Vector {
407 _handler: DMA2_Channel7,
408 },
409 Vector { _handler: LPUART1 },
410 Vector { _handler: QUADSPI },
411 Vector { _handler: I2C3_EV },
412 Vector { _handler: I2C3_ER },
413 Vector { _handler: SAI1 },
414 Vector { _handler: SAI2 },
415 Vector { _handler: SWPMI1 },
416 Vector { _handler: TSC },
417 Vector { _reserved: 0 },
418 Vector { _reserved: 0 },
419 Vector { _handler: RNG },
420 Vector { _handler: FPU },
421 ];
422}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 423impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 424impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 425impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l475vc.rs b/embassy-stm32/src/chip/stm32l475vc.rs
index 774df143c..7a818be15 100644
--- a/embassy-stm32/src/chip/stm32l475vc.rs
+++ b/embassy-stm32/src/chip/stm32l475vc.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,412 @@ peripherals!(
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS,
15 WWDG 15 WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LPTIM1 = 65,
72 LPTIM2 = 66,
73 LPUART1 = 70,
74 OTG_FS = 67,
75 PVD_PVM = 1,
76 QUADSPI = 71,
77 RCC = 5,
78 RNG = 80,
79 RTC_Alarm = 41,
80 RTC_WKUP = 3,
81 SAI1 = 74,
82 SAI2 = 75,
83 SDMMC1 = 49,
84 SPI1 = 35,
85 SPI2 = 36,
86 SPI3 = 51,
87 SWPMI1 = 76,
88 TAMP_STAMP = 2,
89 TIM1_BRK_TIM15 = 24,
90 TIM1_CC = 27,
91 TIM1_TRG_COM_TIM17 = 26,
92 TIM1_UP_TIM16 = 25,
93 TIM2 = 28,
94 TIM3 = 29,
95 TIM4 = 30,
96 TIM5 = 50,
97 TIM6_DAC = 54,
98 TIM7 = 55,
99 TIM8_BRK = 43,
100 TIM8_CC = 46,
101 TIM8_TRG_COM = 45,
102 TIM8_UP = 44,
103 TSC = 77,
104 UART4 = 52,
105 UART5 = 53,
106 USART1 = 37,
107 USART2 = 38,
108 USART3 = 39,
109 WWDG = 0,
110 }
111 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
112 #[inline(always)]
113 fn number(self) -> u16 {
114 self as u16
115 }
116 }
117
118 declare!(ADC1_2);
119 declare!(ADC3);
120 declare!(CAN1_RX0);
121 declare!(CAN1_RX1);
122 declare!(CAN1_SCE);
123 declare!(CAN1_TX);
124 declare!(COMP);
125 declare!(DFSDM1_FLT0);
126 declare!(DFSDM1_FLT1);
127 declare!(DFSDM1_FLT2);
128 declare!(DFSDM1_FLT3);
129 declare!(DMA1_Channel1);
130 declare!(DMA1_Channel2);
131 declare!(DMA1_Channel3);
132 declare!(DMA1_Channel4);
133 declare!(DMA1_Channel5);
134 declare!(DMA1_Channel6);
135 declare!(DMA1_Channel7);
136 declare!(DMA2_Channel1);
137 declare!(DMA2_Channel2);
138 declare!(DMA2_Channel3);
139 declare!(DMA2_Channel4);
140 declare!(DMA2_Channel5);
141 declare!(DMA2_Channel6);
142 declare!(DMA2_Channel7);
143 declare!(EXTI0);
144 declare!(EXTI1);
145 declare!(EXTI15_10);
146 declare!(EXTI2);
147 declare!(EXTI3);
148 declare!(EXTI4);
149 declare!(EXTI9_5);
150 declare!(FLASH);
151 declare!(FMC);
152 declare!(FPU);
153 declare!(I2C1_ER);
154 declare!(I2C1_EV);
155 declare!(I2C2_ER);
156 declare!(I2C2_EV);
157 declare!(I2C3_ER);
158 declare!(I2C3_EV);
159 declare!(LPTIM1);
160 declare!(LPTIM2);
161 declare!(LPUART1);
162 declare!(OTG_FS);
163 declare!(PVD_PVM);
164 declare!(QUADSPI);
165 declare!(RCC);
166 declare!(RNG);
167 declare!(RTC_Alarm);
168 declare!(RTC_WKUP);
169 declare!(SAI1);
170 declare!(SAI2);
171 declare!(SDMMC1);
172 declare!(SPI1);
173 declare!(SPI2);
174 declare!(SPI3);
175 declare!(SWPMI1);
176 declare!(TAMP_STAMP);
177 declare!(TIM1_BRK_TIM15);
178 declare!(TIM1_CC);
179 declare!(TIM1_TRG_COM_TIM17);
180 declare!(TIM1_UP_TIM16);
181 declare!(TIM2);
182 declare!(TIM3);
183 declare!(TIM4);
184 declare!(TIM5);
185 declare!(TIM6_DAC);
186 declare!(TIM7);
187 declare!(TIM8_BRK);
188 declare!(TIM8_CC);
189 declare!(TIM8_TRG_COM);
190 declare!(TIM8_UP);
191 declare!(TSC);
192 declare!(UART4);
193 declare!(UART5);
194 declare!(USART1);
195 declare!(USART2);
196 declare!(USART3);
197 declare!(WWDG);
198}
199mod interrupt_vector {
200 extern "C" {
201 fn ADC1_2();
202 fn ADC3();
203 fn CAN1_RX0();
204 fn CAN1_RX1();
205 fn CAN1_SCE();
206 fn CAN1_TX();
207 fn COMP();
208 fn DFSDM1_FLT0();
209 fn DFSDM1_FLT1();
210 fn DFSDM1_FLT2();
211 fn DFSDM1_FLT3();
212 fn DMA1_Channel1();
213 fn DMA1_Channel2();
214 fn DMA1_Channel3();
215 fn DMA1_Channel4();
216 fn DMA1_Channel5();
217 fn DMA1_Channel6();
218 fn DMA1_Channel7();
219 fn DMA2_Channel1();
220 fn DMA2_Channel2();
221 fn DMA2_Channel3();
222 fn DMA2_Channel4();
223 fn DMA2_Channel5();
224 fn DMA2_Channel6();
225 fn DMA2_Channel7();
226 fn EXTI0();
227 fn EXTI1();
228 fn EXTI15_10();
229 fn EXTI2();
230 fn EXTI3();
231 fn EXTI4();
232 fn EXTI9_5();
233 fn FLASH();
234 fn FMC();
235 fn FPU();
236 fn I2C1_ER();
237 fn I2C1_EV();
238 fn I2C2_ER();
239 fn I2C2_EV();
240 fn I2C3_ER();
241 fn I2C3_EV();
242 fn LPTIM1();
243 fn LPTIM2();
244 fn LPUART1();
245 fn OTG_FS();
246 fn PVD_PVM();
247 fn QUADSPI();
248 fn RCC();
249 fn RNG();
250 fn RTC_Alarm();
251 fn RTC_WKUP();
252 fn SAI1();
253 fn SAI2();
254 fn SDMMC1();
255 fn SPI1();
256 fn SPI2();
257 fn SPI3();
258 fn SWPMI1();
259 fn TAMP_STAMP();
260 fn TIM1_BRK_TIM15();
261 fn TIM1_CC();
262 fn TIM1_TRG_COM_TIM17();
263 fn TIM1_UP_TIM16();
264 fn TIM2();
265 fn TIM3();
266 fn TIM4();
267 fn TIM5();
268 fn TIM6_DAC();
269 fn TIM7();
270 fn TIM8_BRK();
271 fn TIM8_CC();
272 fn TIM8_TRG_COM();
273 fn TIM8_UP();
274 fn TSC();
275 fn UART4();
276 fn UART5();
277 fn USART1();
278 fn USART2();
279 fn USART3();
280 fn WWDG();
281 }
282 pub union Vector {
283 _handler: unsafe extern "C" fn(),
284 _reserved: u32,
285 }
286 #[link_section = ".vector_table.interrupts"]
287 #[no_mangle]
288 pub static __INTERRUPTS: [Vector; 82] = [
289 Vector { _handler: WWDG },
290 Vector { _handler: PVD_PVM },
291 Vector {
292 _handler: TAMP_STAMP,
293 },
294 Vector { _handler: RTC_WKUP },
295 Vector { _handler: FLASH },
296 Vector { _handler: RCC },
297 Vector { _handler: EXTI0 },
298 Vector { _handler: EXTI1 },
299 Vector { _handler: EXTI2 },
300 Vector { _handler: EXTI3 },
301 Vector { _handler: EXTI4 },
302 Vector {
303 _handler: DMA1_Channel1,
304 },
305 Vector {
306 _handler: DMA1_Channel2,
307 },
308 Vector {
309 _handler: DMA1_Channel3,
310 },
311 Vector {
312 _handler: DMA1_Channel4,
313 },
314 Vector {
315 _handler: DMA1_Channel5,
316 },
317 Vector {
318 _handler: DMA1_Channel6,
319 },
320 Vector {
321 _handler: DMA1_Channel7,
322 },
323 Vector { _handler: ADC1_2 },
324 Vector { _handler: CAN1_TX },
325 Vector { _handler: CAN1_RX0 },
326 Vector { _handler: CAN1_RX1 },
327 Vector { _handler: CAN1_SCE },
328 Vector { _handler: EXTI9_5 },
329 Vector {
330 _handler: TIM1_BRK_TIM15,
331 },
332 Vector {
333 _handler: TIM1_UP_TIM16,
334 },
335 Vector {
336 _handler: TIM1_TRG_COM_TIM17,
337 },
338 Vector { _handler: TIM1_CC },
339 Vector { _handler: TIM2 },
340 Vector { _handler: TIM3 },
341 Vector { _handler: TIM4 },
342 Vector { _handler: I2C1_EV },
343 Vector { _handler: I2C1_ER },
344 Vector { _handler: I2C2_EV },
345 Vector { _handler: I2C2_ER },
346 Vector { _handler: SPI1 },
347 Vector { _handler: SPI2 },
348 Vector { _handler: USART1 },
349 Vector { _handler: USART2 },
350 Vector { _handler: USART3 },
351 Vector {
352 _handler: EXTI15_10,
353 },
354 Vector {
355 _handler: RTC_Alarm,
356 },
357 Vector {
358 _handler: DFSDM1_FLT3,
359 },
360 Vector { _handler: TIM8_BRK },
361 Vector { _handler: TIM8_UP },
362 Vector {
363 _handler: TIM8_TRG_COM,
364 },
365 Vector { _handler: TIM8_CC },
366 Vector { _handler: ADC3 },
367 Vector { _handler: FMC },
368 Vector { _handler: SDMMC1 },
369 Vector { _handler: TIM5 },
370 Vector { _handler: SPI3 },
371 Vector { _handler: UART4 },
372 Vector { _handler: UART5 },
373 Vector { _handler: TIM6_DAC },
374 Vector { _handler: TIM7 },
375 Vector {
376 _handler: DMA2_Channel1,
377 },
378 Vector {
379 _handler: DMA2_Channel2,
380 },
381 Vector {
382 _handler: DMA2_Channel3,
383 },
384 Vector {
385 _handler: DMA2_Channel4,
386 },
387 Vector {
388 _handler: DMA2_Channel5,
389 },
390 Vector {
391 _handler: DFSDM1_FLT0,
392 },
393 Vector {
394 _handler: DFSDM1_FLT1,
395 },
396 Vector {
397 _handler: DFSDM1_FLT2,
398 },
399 Vector { _handler: COMP },
400 Vector { _handler: LPTIM1 },
401 Vector { _handler: LPTIM2 },
402 Vector { _handler: OTG_FS },
403 Vector {
404 _handler: DMA2_Channel6,
405 },
406 Vector {
407 _handler: DMA2_Channel7,
408 },
409 Vector { _handler: LPUART1 },
410 Vector { _handler: QUADSPI },
411 Vector { _handler: I2C3_EV },
412 Vector { _handler: I2C3_ER },
413 Vector { _handler: SAI1 },
414 Vector { _handler: SAI2 },
415 Vector { _handler: SWPMI1 },
416 Vector { _handler: TSC },
417 Vector { _reserved: 0 },
418 Vector { _reserved: 0 },
419 Vector { _handler: RNG },
420 Vector { _handler: FPU },
421 ];
422}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 423impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 424impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 425impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l475ve.rs b/embassy-stm32/src/chip/stm32l475ve.rs
index 774df143c..7a818be15 100644
--- a/embassy-stm32/src/chip/stm32l475ve.rs
+++ b/embassy-stm32/src/chip/stm32l475ve.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,412 @@ peripherals!(
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS,
15 WWDG 15 WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LPTIM1 = 65,
72 LPTIM2 = 66,
73 LPUART1 = 70,
74 OTG_FS = 67,
75 PVD_PVM = 1,
76 QUADSPI = 71,
77 RCC = 5,
78 RNG = 80,
79 RTC_Alarm = 41,
80 RTC_WKUP = 3,
81 SAI1 = 74,
82 SAI2 = 75,
83 SDMMC1 = 49,
84 SPI1 = 35,
85 SPI2 = 36,
86 SPI3 = 51,
87 SWPMI1 = 76,
88 TAMP_STAMP = 2,
89 TIM1_BRK_TIM15 = 24,
90 TIM1_CC = 27,
91 TIM1_TRG_COM_TIM17 = 26,
92 TIM1_UP_TIM16 = 25,
93 TIM2 = 28,
94 TIM3 = 29,
95 TIM4 = 30,
96 TIM5 = 50,
97 TIM6_DAC = 54,
98 TIM7 = 55,
99 TIM8_BRK = 43,
100 TIM8_CC = 46,
101 TIM8_TRG_COM = 45,
102 TIM8_UP = 44,
103 TSC = 77,
104 UART4 = 52,
105 UART5 = 53,
106 USART1 = 37,
107 USART2 = 38,
108 USART3 = 39,
109 WWDG = 0,
110 }
111 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
112 #[inline(always)]
113 fn number(self) -> u16 {
114 self as u16
115 }
116 }
117
118 declare!(ADC1_2);
119 declare!(ADC3);
120 declare!(CAN1_RX0);
121 declare!(CAN1_RX1);
122 declare!(CAN1_SCE);
123 declare!(CAN1_TX);
124 declare!(COMP);
125 declare!(DFSDM1_FLT0);
126 declare!(DFSDM1_FLT1);
127 declare!(DFSDM1_FLT2);
128 declare!(DFSDM1_FLT3);
129 declare!(DMA1_Channel1);
130 declare!(DMA1_Channel2);
131 declare!(DMA1_Channel3);
132 declare!(DMA1_Channel4);
133 declare!(DMA1_Channel5);
134 declare!(DMA1_Channel6);
135 declare!(DMA1_Channel7);
136 declare!(DMA2_Channel1);
137 declare!(DMA2_Channel2);
138 declare!(DMA2_Channel3);
139 declare!(DMA2_Channel4);
140 declare!(DMA2_Channel5);
141 declare!(DMA2_Channel6);
142 declare!(DMA2_Channel7);
143 declare!(EXTI0);
144 declare!(EXTI1);
145 declare!(EXTI15_10);
146 declare!(EXTI2);
147 declare!(EXTI3);
148 declare!(EXTI4);
149 declare!(EXTI9_5);
150 declare!(FLASH);
151 declare!(FMC);
152 declare!(FPU);
153 declare!(I2C1_ER);
154 declare!(I2C1_EV);
155 declare!(I2C2_ER);
156 declare!(I2C2_EV);
157 declare!(I2C3_ER);
158 declare!(I2C3_EV);
159 declare!(LPTIM1);
160 declare!(LPTIM2);
161 declare!(LPUART1);
162 declare!(OTG_FS);
163 declare!(PVD_PVM);
164 declare!(QUADSPI);
165 declare!(RCC);
166 declare!(RNG);
167 declare!(RTC_Alarm);
168 declare!(RTC_WKUP);
169 declare!(SAI1);
170 declare!(SAI2);
171 declare!(SDMMC1);
172 declare!(SPI1);
173 declare!(SPI2);
174 declare!(SPI3);
175 declare!(SWPMI1);
176 declare!(TAMP_STAMP);
177 declare!(TIM1_BRK_TIM15);
178 declare!(TIM1_CC);
179 declare!(TIM1_TRG_COM_TIM17);
180 declare!(TIM1_UP_TIM16);
181 declare!(TIM2);
182 declare!(TIM3);
183 declare!(TIM4);
184 declare!(TIM5);
185 declare!(TIM6_DAC);
186 declare!(TIM7);
187 declare!(TIM8_BRK);
188 declare!(TIM8_CC);
189 declare!(TIM8_TRG_COM);
190 declare!(TIM8_UP);
191 declare!(TSC);
192 declare!(UART4);
193 declare!(UART5);
194 declare!(USART1);
195 declare!(USART2);
196 declare!(USART3);
197 declare!(WWDG);
198}
199mod interrupt_vector {
200 extern "C" {
201 fn ADC1_2();
202 fn ADC3();
203 fn CAN1_RX0();
204 fn CAN1_RX1();
205 fn CAN1_SCE();
206 fn CAN1_TX();
207 fn COMP();
208 fn DFSDM1_FLT0();
209 fn DFSDM1_FLT1();
210 fn DFSDM1_FLT2();
211 fn DFSDM1_FLT3();
212 fn DMA1_Channel1();
213 fn DMA1_Channel2();
214 fn DMA1_Channel3();
215 fn DMA1_Channel4();
216 fn DMA1_Channel5();
217 fn DMA1_Channel6();
218 fn DMA1_Channel7();
219 fn DMA2_Channel1();
220 fn DMA2_Channel2();
221 fn DMA2_Channel3();
222 fn DMA2_Channel4();
223 fn DMA2_Channel5();
224 fn DMA2_Channel6();
225 fn DMA2_Channel7();
226 fn EXTI0();
227 fn EXTI1();
228 fn EXTI15_10();
229 fn EXTI2();
230 fn EXTI3();
231 fn EXTI4();
232 fn EXTI9_5();
233 fn FLASH();
234 fn FMC();
235 fn FPU();
236 fn I2C1_ER();
237 fn I2C1_EV();
238 fn I2C2_ER();
239 fn I2C2_EV();
240 fn I2C3_ER();
241 fn I2C3_EV();
242 fn LPTIM1();
243 fn LPTIM2();
244 fn LPUART1();
245 fn OTG_FS();
246 fn PVD_PVM();
247 fn QUADSPI();
248 fn RCC();
249 fn RNG();
250 fn RTC_Alarm();
251 fn RTC_WKUP();
252 fn SAI1();
253 fn SAI2();
254 fn SDMMC1();
255 fn SPI1();
256 fn SPI2();
257 fn SPI3();
258 fn SWPMI1();
259 fn TAMP_STAMP();
260 fn TIM1_BRK_TIM15();
261 fn TIM1_CC();
262 fn TIM1_TRG_COM_TIM17();
263 fn TIM1_UP_TIM16();
264 fn TIM2();
265 fn TIM3();
266 fn TIM4();
267 fn TIM5();
268 fn TIM6_DAC();
269 fn TIM7();
270 fn TIM8_BRK();
271 fn TIM8_CC();
272 fn TIM8_TRG_COM();
273 fn TIM8_UP();
274 fn TSC();
275 fn UART4();
276 fn UART5();
277 fn USART1();
278 fn USART2();
279 fn USART3();
280 fn WWDG();
281 }
282 pub union Vector {
283 _handler: unsafe extern "C" fn(),
284 _reserved: u32,
285 }
286 #[link_section = ".vector_table.interrupts"]
287 #[no_mangle]
288 pub static __INTERRUPTS: [Vector; 82] = [
289 Vector { _handler: WWDG },
290 Vector { _handler: PVD_PVM },
291 Vector {
292 _handler: TAMP_STAMP,
293 },
294 Vector { _handler: RTC_WKUP },
295 Vector { _handler: FLASH },
296 Vector { _handler: RCC },
297 Vector { _handler: EXTI0 },
298 Vector { _handler: EXTI1 },
299 Vector { _handler: EXTI2 },
300 Vector { _handler: EXTI3 },
301 Vector { _handler: EXTI4 },
302 Vector {
303 _handler: DMA1_Channel1,
304 },
305 Vector {
306 _handler: DMA1_Channel2,
307 },
308 Vector {
309 _handler: DMA1_Channel3,
310 },
311 Vector {
312 _handler: DMA1_Channel4,
313 },
314 Vector {
315 _handler: DMA1_Channel5,
316 },
317 Vector {
318 _handler: DMA1_Channel6,
319 },
320 Vector {
321 _handler: DMA1_Channel7,
322 },
323 Vector { _handler: ADC1_2 },
324 Vector { _handler: CAN1_TX },
325 Vector { _handler: CAN1_RX0 },
326 Vector { _handler: CAN1_RX1 },
327 Vector { _handler: CAN1_SCE },
328 Vector { _handler: EXTI9_5 },
329 Vector {
330 _handler: TIM1_BRK_TIM15,
331 },
332 Vector {
333 _handler: TIM1_UP_TIM16,
334 },
335 Vector {
336 _handler: TIM1_TRG_COM_TIM17,
337 },
338 Vector { _handler: TIM1_CC },
339 Vector { _handler: TIM2 },
340 Vector { _handler: TIM3 },
341 Vector { _handler: TIM4 },
342 Vector { _handler: I2C1_EV },
343 Vector { _handler: I2C1_ER },
344 Vector { _handler: I2C2_EV },
345 Vector { _handler: I2C2_ER },
346 Vector { _handler: SPI1 },
347 Vector { _handler: SPI2 },
348 Vector { _handler: USART1 },
349 Vector { _handler: USART2 },
350 Vector { _handler: USART3 },
351 Vector {
352 _handler: EXTI15_10,
353 },
354 Vector {
355 _handler: RTC_Alarm,
356 },
357 Vector {
358 _handler: DFSDM1_FLT3,
359 },
360 Vector { _handler: TIM8_BRK },
361 Vector { _handler: TIM8_UP },
362 Vector {
363 _handler: TIM8_TRG_COM,
364 },
365 Vector { _handler: TIM8_CC },
366 Vector { _handler: ADC3 },
367 Vector { _handler: FMC },
368 Vector { _handler: SDMMC1 },
369 Vector { _handler: TIM5 },
370 Vector { _handler: SPI3 },
371 Vector { _handler: UART4 },
372 Vector { _handler: UART5 },
373 Vector { _handler: TIM6_DAC },
374 Vector { _handler: TIM7 },
375 Vector {
376 _handler: DMA2_Channel1,
377 },
378 Vector {
379 _handler: DMA2_Channel2,
380 },
381 Vector {
382 _handler: DMA2_Channel3,
383 },
384 Vector {
385 _handler: DMA2_Channel4,
386 },
387 Vector {
388 _handler: DMA2_Channel5,
389 },
390 Vector {
391 _handler: DFSDM1_FLT0,
392 },
393 Vector {
394 _handler: DFSDM1_FLT1,
395 },
396 Vector {
397 _handler: DFSDM1_FLT2,
398 },
399 Vector { _handler: COMP },
400 Vector { _handler: LPTIM1 },
401 Vector { _handler: LPTIM2 },
402 Vector { _handler: OTG_FS },
403 Vector {
404 _handler: DMA2_Channel6,
405 },
406 Vector {
407 _handler: DMA2_Channel7,
408 },
409 Vector { _handler: LPUART1 },
410 Vector { _handler: QUADSPI },
411 Vector { _handler: I2C3_EV },
412 Vector { _handler: I2C3_ER },
413 Vector { _handler: SAI1 },
414 Vector { _handler: SAI2 },
415 Vector { _handler: SWPMI1 },
416 Vector { _handler: TSC },
417 Vector { _reserved: 0 },
418 Vector { _reserved: 0 },
419 Vector { _handler: RNG },
420 Vector { _handler: FPU },
421 ];
422}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 423impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 424impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 425impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l475vg.rs b/embassy-stm32/src/chip/stm32l475vg.rs
index 774df143c..7a818be15 100644
--- a/embassy-stm32/src/chip/stm32l475vg.rs
+++ b/embassy-stm32/src/chip/stm32l475vg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,412 @@ peripherals!(
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, 14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS,
15 WWDG 15 WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LPTIM1 = 65,
72 LPTIM2 = 66,
73 LPUART1 = 70,
74 OTG_FS = 67,
75 PVD_PVM = 1,
76 QUADSPI = 71,
77 RCC = 5,
78 RNG = 80,
79 RTC_Alarm = 41,
80 RTC_WKUP = 3,
81 SAI1 = 74,
82 SAI2 = 75,
83 SDMMC1 = 49,
84 SPI1 = 35,
85 SPI2 = 36,
86 SPI3 = 51,
87 SWPMI1 = 76,
88 TAMP_STAMP = 2,
89 TIM1_BRK_TIM15 = 24,
90 TIM1_CC = 27,
91 TIM1_TRG_COM_TIM17 = 26,
92 TIM1_UP_TIM16 = 25,
93 TIM2 = 28,
94 TIM3 = 29,
95 TIM4 = 30,
96 TIM5 = 50,
97 TIM6_DAC = 54,
98 TIM7 = 55,
99 TIM8_BRK = 43,
100 TIM8_CC = 46,
101 TIM8_TRG_COM = 45,
102 TIM8_UP = 44,
103 TSC = 77,
104 UART4 = 52,
105 UART5 = 53,
106 USART1 = 37,
107 USART2 = 38,
108 USART3 = 39,
109 WWDG = 0,
110 }
111 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
112 #[inline(always)]
113 fn number(self) -> u16 {
114 self as u16
115 }
116 }
117
118 declare!(ADC1_2);
119 declare!(ADC3);
120 declare!(CAN1_RX0);
121 declare!(CAN1_RX1);
122 declare!(CAN1_SCE);
123 declare!(CAN1_TX);
124 declare!(COMP);
125 declare!(DFSDM1_FLT0);
126 declare!(DFSDM1_FLT1);
127 declare!(DFSDM1_FLT2);
128 declare!(DFSDM1_FLT3);
129 declare!(DMA1_Channel1);
130 declare!(DMA1_Channel2);
131 declare!(DMA1_Channel3);
132 declare!(DMA1_Channel4);
133 declare!(DMA1_Channel5);
134 declare!(DMA1_Channel6);
135 declare!(DMA1_Channel7);
136 declare!(DMA2_Channel1);
137 declare!(DMA2_Channel2);
138 declare!(DMA2_Channel3);
139 declare!(DMA2_Channel4);
140 declare!(DMA2_Channel5);
141 declare!(DMA2_Channel6);
142 declare!(DMA2_Channel7);
143 declare!(EXTI0);
144 declare!(EXTI1);
145 declare!(EXTI15_10);
146 declare!(EXTI2);
147 declare!(EXTI3);
148 declare!(EXTI4);
149 declare!(EXTI9_5);
150 declare!(FLASH);
151 declare!(FMC);
152 declare!(FPU);
153 declare!(I2C1_ER);
154 declare!(I2C1_EV);
155 declare!(I2C2_ER);
156 declare!(I2C2_EV);
157 declare!(I2C3_ER);
158 declare!(I2C3_EV);
159 declare!(LPTIM1);
160 declare!(LPTIM2);
161 declare!(LPUART1);
162 declare!(OTG_FS);
163 declare!(PVD_PVM);
164 declare!(QUADSPI);
165 declare!(RCC);
166 declare!(RNG);
167 declare!(RTC_Alarm);
168 declare!(RTC_WKUP);
169 declare!(SAI1);
170 declare!(SAI2);
171 declare!(SDMMC1);
172 declare!(SPI1);
173 declare!(SPI2);
174 declare!(SPI3);
175 declare!(SWPMI1);
176 declare!(TAMP_STAMP);
177 declare!(TIM1_BRK_TIM15);
178 declare!(TIM1_CC);
179 declare!(TIM1_TRG_COM_TIM17);
180 declare!(TIM1_UP_TIM16);
181 declare!(TIM2);
182 declare!(TIM3);
183 declare!(TIM4);
184 declare!(TIM5);
185 declare!(TIM6_DAC);
186 declare!(TIM7);
187 declare!(TIM8_BRK);
188 declare!(TIM8_CC);
189 declare!(TIM8_TRG_COM);
190 declare!(TIM8_UP);
191 declare!(TSC);
192 declare!(UART4);
193 declare!(UART5);
194 declare!(USART1);
195 declare!(USART2);
196 declare!(USART3);
197 declare!(WWDG);
198}
199mod interrupt_vector {
200 extern "C" {
201 fn ADC1_2();
202 fn ADC3();
203 fn CAN1_RX0();
204 fn CAN1_RX1();
205 fn CAN1_SCE();
206 fn CAN1_TX();
207 fn COMP();
208 fn DFSDM1_FLT0();
209 fn DFSDM1_FLT1();
210 fn DFSDM1_FLT2();
211 fn DFSDM1_FLT3();
212 fn DMA1_Channel1();
213 fn DMA1_Channel2();
214 fn DMA1_Channel3();
215 fn DMA1_Channel4();
216 fn DMA1_Channel5();
217 fn DMA1_Channel6();
218 fn DMA1_Channel7();
219 fn DMA2_Channel1();
220 fn DMA2_Channel2();
221 fn DMA2_Channel3();
222 fn DMA2_Channel4();
223 fn DMA2_Channel5();
224 fn DMA2_Channel6();
225 fn DMA2_Channel7();
226 fn EXTI0();
227 fn EXTI1();
228 fn EXTI15_10();
229 fn EXTI2();
230 fn EXTI3();
231 fn EXTI4();
232 fn EXTI9_5();
233 fn FLASH();
234 fn FMC();
235 fn FPU();
236 fn I2C1_ER();
237 fn I2C1_EV();
238 fn I2C2_ER();
239 fn I2C2_EV();
240 fn I2C3_ER();
241 fn I2C3_EV();
242 fn LPTIM1();
243 fn LPTIM2();
244 fn LPUART1();
245 fn OTG_FS();
246 fn PVD_PVM();
247 fn QUADSPI();
248 fn RCC();
249 fn RNG();
250 fn RTC_Alarm();
251 fn RTC_WKUP();
252 fn SAI1();
253 fn SAI2();
254 fn SDMMC1();
255 fn SPI1();
256 fn SPI2();
257 fn SPI3();
258 fn SWPMI1();
259 fn TAMP_STAMP();
260 fn TIM1_BRK_TIM15();
261 fn TIM1_CC();
262 fn TIM1_TRG_COM_TIM17();
263 fn TIM1_UP_TIM16();
264 fn TIM2();
265 fn TIM3();
266 fn TIM4();
267 fn TIM5();
268 fn TIM6_DAC();
269 fn TIM7();
270 fn TIM8_BRK();
271 fn TIM8_CC();
272 fn TIM8_TRG_COM();
273 fn TIM8_UP();
274 fn TSC();
275 fn UART4();
276 fn UART5();
277 fn USART1();
278 fn USART2();
279 fn USART3();
280 fn WWDG();
281 }
282 pub union Vector {
283 _handler: unsafe extern "C" fn(),
284 _reserved: u32,
285 }
286 #[link_section = ".vector_table.interrupts"]
287 #[no_mangle]
288 pub static __INTERRUPTS: [Vector; 82] = [
289 Vector { _handler: WWDG },
290 Vector { _handler: PVD_PVM },
291 Vector {
292 _handler: TAMP_STAMP,
293 },
294 Vector { _handler: RTC_WKUP },
295 Vector { _handler: FLASH },
296 Vector { _handler: RCC },
297 Vector { _handler: EXTI0 },
298 Vector { _handler: EXTI1 },
299 Vector { _handler: EXTI2 },
300 Vector { _handler: EXTI3 },
301 Vector { _handler: EXTI4 },
302 Vector {
303 _handler: DMA1_Channel1,
304 },
305 Vector {
306 _handler: DMA1_Channel2,
307 },
308 Vector {
309 _handler: DMA1_Channel3,
310 },
311 Vector {
312 _handler: DMA1_Channel4,
313 },
314 Vector {
315 _handler: DMA1_Channel5,
316 },
317 Vector {
318 _handler: DMA1_Channel6,
319 },
320 Vector {
321 _handler: DMA1_Channel7,
322 },
323 Vector { _handler: ADC1_2 },
324 Vector { _handler: CAN1_TX },
325 Vector { _handler: CAN1_RX0 },
326 Vector { _handler: CAN1_RX1 },
327 Vector { _handler: CAN1_SCE },
328 Vector { _handler: EXTI9_5 },
329 Vector {
330 _handler: TIM1_BRK_TIM15,
331 },
332 Vector {
333 _handler: TIM1_UP_TIM16,
334 },
335 Vector {
336 _handler: TIM1_TRG_COM_TIM17,
337 },
338 Vector { _handler: TIM1_CC },
339 Vector { _handler: TIM2 },
340 Vector { _handler: TIM3 },
341 Vector { _handler: TIM4 },
342 Vector { _handler: I2C1_EV },
343 Vector { _handler: I2C1_ER },
344 Vector { _handler: I2C2_EV },
345 Vector { _handler: I2C2_ER },
346 Vector { _handler: SPI1 },
347 Vector { _handler: SPI2 },
348 Vector { _handler: USART1 },
349 Vector { _handler: USART2 },
350 Vector { _handler: USART3 },
351 Vector {
352 _handler: EXTI15_10,
353 },
354 Vector {
355 _handler: RTC_Alarm,
356 },
357 Vector {
358 _handler: DFSDM1_FLT3,
359 },
360 Vector { _handler: TIM8_BRK },
361 Vector { _handler: TIM8_UP },
362 Vector {
363 _handler: TIM8_TRG_COM,
364 },
365 Vector { _handler: TIM8_CC },
366 Vector { _handler: ADC3 },
367 Vector { _handler: FMC },
368 Vector { _handler: SDMMC1 },
369 Vector { _handler: TIM5 },
370 Vector { _handler: SPI3 },
371 Vector { _handler: UART4 },
372 Vector { _handler: UART5 },
373 Vector { _handler: TIM6_DAC },
374 Vector { _handler: TIM7 },
375 Vector {
376 _handler: DMA2_Channel1,
377 },
378 Vector {
379 _handler: DMA2_Channel2,
380 },
381 Vector {
382 _handler: DMA2_Channel3,
383 },
384 Vector {
385 _handler: DMA2_Channel4,
386 },
387 Vector {
388 _handler: DMA2_Channel5,
389 },
390 Vector {
391 _handler: DFSDM1_FLT0,
392 },
393 Vector {
394 _handler: DFSDM1_FLT1,
395 },
396 Vector {
397 _handler: DFSDM1_FLT2,
398 },
399 Vector { _handler: COMP },
400 Vector { _handler: LPTIM1 },
401 Vector { _handler: LPTIM2 },
402 Vector { _handler: OTG_FS },
403 Vector {
404 _handler: DMA2_Channel6,
405 },
406 Vector {
407 _handler: DMA2_Channel7,
408 },
409 Vector { _handler: LPUART1 },
410 Vector { _handler: QUADSPI },
411 Vector { _handler: I2C3_EV },
412 Vector { _handler: I2C3_ER },
413 Vector { _handler: SAI1 },
414 Vector { _handler: SAI2 },
415 Vector { _handler: SWPMI1 },
416 Vector { _handler: TSC },
417 Vector { _reserved: 0 },
418 Vector { _reserved: 0 },
419 Vector { _handler: RNG },
420 Vector { _handler: FPU },
421 ];
422}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 423impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 424impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 425impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476je.rs b/embassy-stm32/src/chip/stm32l476je.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476je.rs
+++ b/embassy-stm32/src/chip/stm32l476je.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476jg.rs b/embassy-stm32/src/chip/stm32l476jg.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476jg.rs
+++ b/embassy-stm32/src/chip/stm32l476jg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476me.rs b/embassy-stm32/src/chip/stm32l476me.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476me.rs
+++ b/embassy-stm32/src/chip/stm32l476me.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476mg.rs b/embassy-stm32/src/chip/stm32l476mg.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476mg.rs
+++ b/embassy-stm32/src/chip/stm32l476mg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476qe.rs b/embassy-stm32/src/chip/stm32l476qe.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476qe.rs
+++ b/embassy-stm32/src/chip/stm32l476qe.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476qg.rs b/embassy-stm32/src/chip/stm32l476qg.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476qg.rs
+++ b/embassy-stm32/src/chip/stm32l476qg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476rc.rs b/embassy-stm32/src/chip/stm32l476rc.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476rc.rs
+++ b/embassy-stm32/src/chip/stm32l476rc.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476re.rs b/embassy-stm32/src/chip/stm32l476re.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476re.rs
+++ b/embassy-stm32/src/chip/stm32l476re.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476rg.rs b/embassy-stm32/src/chip/stm32l476rg.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476rg.rs
+++ b/embassy-stm32/src/chip/stm32l476rg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476vc.rs b/embassy-stm32/src/chip/stm32l476vc.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476vc.rs
+++ b/embassy-stm32/src/chip/stm32l476vc.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476ve.rs b/embassy-stm32/src/chip/stm32l476ve.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476ve.rs
+++ b/embassy-stm32/src/chip/stm32l476ve.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476vg.rs b/embassy-stm32/src/chip/stm32l476vg.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476vg.rs
+++ b/embassy-stm32/src/chip/stm32l476vg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476ze.rs b/embassy-stm32/src/chip/stm32l476ze.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476ze.rs
+++ b/embassy-stm32/src/chip/stm32l476ze.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l476zg.rs b/embassy-stm32/src/chip/stm32l476zg.rs
index ce07466a5..d5b271290 100644
--- a/embassy-stm32/src/chip/stm32l476zg.rs
+++ b/embassy-stm32/src/chip/stm32l476zg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -14,8 +14,415 @@ peripherals!(
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 USB_OTG_FS, WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DFSDM1_FLT0 = 61,
38 DFSDM1_FLT1 = 62,
39 DFSDM1_FLT2 = 63,
40 DFSDM1_FLT3 = 42,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 EXTI0 = 6,
56 EXTI1 = 7,
57 EXTI15_10 = 40,
58 EXTI2 = 8,
59 EXTI3 = 9,
60 EXTI4 = 10,
61 EXTI9_5 = 23,
62 FLASH = 4,
63 FMC = 48,
64 FPU = 81,
65 I2C1_ER = 32,
66 I2C1_EV = 31,
67 I2C2_ER = 34,
68 I2C2_EV = 33,
69 I2C3_ER = 73,
70 I2C3_EV = 72,
71 LCD = 78,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(CAN1_RX0);
122 declare!(CAN1_RX1);
123 declare!(CAN1_SCE);
124 declare!(CAN1_TX);
125 declare!(COMP);
126 declare!(DFSDM1_FLT0);
127 declare!(DFSDM1_FLT1);
128 declare!(DFSDM1_FLT2);
129 declare!(DFSDM1_FLT3);
130 declare!(DMA1_Channel1);
131 declare!(DMA1_Channel2);
132 declare!(DMA1_Channel3);
133 declare!(DMA1_Channel4);
134 declare!(DMA1_Channel5);
135 declare!(DMA1_Channel6);
136 declare!(DMA1_Channel7);
137 declare!(DMA2_Channel1);
138 declare!(DMA2_Channel2);
139 declare!(DMA2_Channel3);
140 declare!(DMA2_Channel4);
141 declare!(DMA2_Channel5);
142 declare!(DMA2_Channel6);
143 declare!(DMA2_Channel7);
144 declare!(EXTI0);
145 declare!(EXTI1);
146 declare!(EXTI15_10);
147 declare!(EXTI2);
148 declare!(EXTI3);
149 declare!(EXTI4);
150 declare!(EXTI9_5);
151 declare!(FLASH);
152 declare!(FMC);
153 declare!(FPU);
154 declare!(I2C1_ER);
155 declare!(I2C1_EV);
156 declare!(I2C2_ER);
157 declare!(I2C2_EV);
158 declare!(I2C3_ER);
159 declare!(I2C3_EV);
160 declare!(LCD);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn CAN1_RX0();
206 fn CAN1_RX1();
207 fn CAN1_SCE();
208 fn CAN1_TX();
209 fn COMP();
210 fn DFSDM1_FLT0();
211 fn DFSDM1_FLT1();
212 fn DFSDM1_FLT2();
213 fn DFSDM1_FLT3();
214 fn DMA1_Channel1();
215 fn DMA1_Channel2();
216 fn DMA1_Channel3();
217 fn DMA1_Channel4();
218 fn DMA1_Channel5();
219 fn DMA1_Channel6();
220 fn DMA1_Channel7();
221 fn DMA2_Channel1();
222 fn DMA2_Channel2();
223 fn DMA2_Channel3();
224 fn DMA2_Channel4();
225 fn DMA2_Channel5();
226 fn DMA2_Channel6();
227 fn DMA2_Channel7();
228 fn EXTI0();
229 fn EXTI1();
230 fn EXTI15_10();
231 fn EXTI2();
232 fn EXTI3();
233 fn EXTI4();
234 fn EXTI9_5();
235 fn FLASH();
236 fn FMC();
237 fn FPU();
238 fn I2C1_ER();
239 fn I2C1_EV();
240 fn I2C2_ER();
241 fn I2C2_EV();
242 fn I2C3_ER();
243 fn I2C3_EV();
244 fn LCD();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _handler: LCD },
421 Vector { _reserved: 0 },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l485jc.rs b/embassy-stm32/src/chip/stm32l485jc.rs
index 77b2e512c..829a5b5a8 100644
--- a/embassy-stm32/src/chip/stm32l485jc.rs
+++ b/embassy-stm32/src/chip/stm32l485jc.rs
@@ -1,21 +1,428 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI,
13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, 13 RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17,
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DFSDM1_FLT2 = 63,
41 DFSDM1_FLT3 = 42,
42 DMA1_Channel1 = 11,
43 DMA1_Channel2 = 12,
44 DMA1_Channel3 = 13,
45 DMA1_Channel4 = 14,
46 DMA1_Channel5 = 15,
47 DMA1_Channel6 = 16,
48 DMA1_Channel7 = 17,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 I2C1_ER = 32,
67 I2C1_EV = 31,
68 I2C2_ER = 34,
69 I2C2_EV = 33,
70 I2C3_ER = 73,
71 I2C3_EV = 72,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(AES);
122 declare!(CAN1_RX0);
123 declare!(CAN1_RX1);
124 declare!(CAN1_SCE);
125 declare!(CAN1_TX);
126 declare!(COMP);
127 declare!(DFSDM1_FLT0);
128 declare!(DFSDM1_FLT1);
129 declare!(DFSDM1_FLT2);
130 declare!(DFSDM1_FLT3);
131 declare!(DMA1_Channel1);
132 declare!(DMA1_Channel2);
133 declare!(DMA1_Channel3);
134 declare!(DMA1_Channel4);
135 declare!(DMA1_Channel5);
136 declare!(DMA1_Channel6);
137 declare!(DMA1_Channel7);
138 declare!(DMA2_Channel1);
139 declare!(DMA2_Channel2);
140 declare!(DMA2_Channel3);
141 declare!(DMA2_Channel4);
142 declare!(DMA2_Channel5);
143 declare!(DMA2_Channel6);
144 declare!(DMA2_Channel7);
145 declare!(EXTI0);
146 declare!(EXTI1);
147 declare!(EXTI15_10);
148 declare!(EXTI2);
149 declare!(EXTI3);
150 declare!(EXTI4);
151 declare!(EXTI9_5);
152 declare!(FLASH);
153 declare!(FMC);
154 declare!(FPU);
155 declare!(I2C1_ER);
156 declare!(I2C1_EV);
157 declare!(I2C2_ER);
158 declare!(I2C2_EV);
159 declare!(I2C3_ER);
160 declare!(I2C3_EV);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn AES();
206 fn CAN1_RX0();
207 fn CAN1_RX1();
208 fn CAN1_SCE();
209 fn CAN1_TX();
210 fn COMP();
211 fn DFSDM1_FLT0();
212 fn DFSDM1_FLT1();
213 fn DFSDM1_FLT2();
214 fn DFSDM1_FLT3();
215 fn DMA1_Channel1();
216 fn DMA1_Channel2();
217 fn DMA1_Channel3();
218 fn DMA1_Channel4();
219 fn DMA1_Channel5();
220 fn DMA1_Channel6();
221 fn DMA1_Channel7();
222 fn DMA2_Channel1();
223 fn DMA2_Channel2();
224 fn DMA2_Channel3();
225 fn DMA2_Channel4();
226 fn DMA2_Channel5();
227 fn DMA2_Channel6();
228 fn DMA2_Channel7();
229 fn EXTI0();
230 fn EXTI1();
231 fn EXTI15_10();
232 fn EXTI2();
233 fn EXTI3();
234 fn EXTI4();
235 fn EXTI9_5();
236 fn FLASH();
237 fn FMC();
238 fn FPU();
239 fn I2C1_ER();
240 fn I2C1_EV();
241 fn I2C2_ER();
242 fn I2C2_EV();
243 fn I2C3_ER();
244 fn I2C3_EV();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _reserved: 0 },
421 Vector { _handler: AES },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l485je.rs b/embassy-stm32/src/chip/stm32l485je.rs
index 77b2e512c..829a5b5a8 100644
--- a/embassy-stm32/src/chip/stm32l485je.rs
+++ b/embassy-stm32/src/chip/stm32l485je.rs
@@ -1,21 +1,428 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI,
13 RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, 13 RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17,
14 TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, 14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3,
15 WWDG 15 USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DFSDM1_FLT2 = 63,
41 DFSDM1_FLT3 = 42,
42 DMA1_Channel1 = 11,
43 DMA1_Channel2 = 12,
44 DMA1_Channel3 = 13,
45 DMA1_Channel4 = 14,
46 DMA1_Channel5 = 15,
47 DMA1_Channel6 = 16,
48 DMA1_Channel7 = 17,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 I2C1_ER = 32,
67 I2C1_EV = 31,
68 I2C2_ER = 34,
69 I2C2_EV = 33,
70 I2C3_ER = 73,
71 I2C3_EV = 72,
72 LPTIM1 = 65,
73 LPTIM2 = 66,
74 LPUART1 = 70,
75 OTG_FS = 67,
76 PVD_PVM = 1,
77 QUADSPI = 71,
78 RCC = 5,
79 RNG = 80,
80 RTC_Alarm = 41,
81 RTC_WKUP = 3,
82 SAI1 = 74,
83 SAI2 = 75,
84 SDMMC1 = 49,
85 SPI1 = 35,
86 SPI2 = 36,
87 SPI3 = 51,
88 SWPMI1 = 76,
89 TAMP_STAMP = 2,
90 TIM1_BRK_TIM15 = 24,
91 TIM1_CC = 27,
92 TIM1_TRG_COM_TIM17 = 26,
93 TIM1_UP_TIM16 = 25,
94 TIM2 = 28,
95 TIM3 = 29,
96 TIM4 = 30,
97 TIM5 = 50,
98 TIM6_DAC = 54,
99 TIM7 = 55,
100 TIM8_BRK = 43,
101 TIM8_CC = 46,
102 TIM8_TRG_COM = 45,
103 TIM8_UP = 44,
104 TSC = 77,
105 UART4 = 52,
106 UART5 = 53,
107 USART1 = 37,
108 USART2 = 38,
109 USART3 = 39,
110 WWDG = 0,
111 }
112 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
113 #[inline(always)]
114 fn number(self) -> u16 {
115 self as u16
116 }
117 }
118
119 declare!(ADC1_2);
120 declare!(ADC3);
121 declare!(AES);
122 declare!(CAN1_RX0);
123 declare!(CAN1_RX1);
124 declare!(CAN1_SCE);
125 declare!(CAN1_TX);
126 declare!(COMP);
127 declare!(DFSDM1_FLT0);
128 declare!(DFSDM1_FLT1);
129 declare!(DFSDM1_FLT2);
130 declare!(DFSDM1_FLT3);
131 declare!(DMA1_Channel1);
132 declare!(DMA1_Channel2);
133 declare!(DMA1_Channel3);
134 declare!(DMA1_Channel4);
135 declare!(DMA1_Channel5);
136 declare!(DMA1_Channel6);
137 declare!(DMA1_Channel7);
138 declare!(DMA2_Channel1);
139 declare!(DMA2_Channel2);
140 declare!(DMA2_Channel3);
141 declare!(DMA2_Channel4);
142 declare!(DMA2_Channel5);
143 declare!(DMA2_Channel6);
144 declare!(DMA2_Channel7);
145 declare!(EXTI0);
146 declare!(EXTI1);
147 declare!(EXTI15_10);
148 declare!(EXTI2);
149 declare!(EXTI3);
150 declare!(EXTI4);
151 declare!(EXTI9_5);
152 declare!(FLASH);
153 declare!(FMC);
154 declare!(FPU);
155 declare!(I2C1_ER);
156 declare!(I2C1_EV);
157 declare!(I2C2_ER);
158 declare!(I2C2_EV);
159 declare!(I2C3_ER);
160 declare!(I2C3_EV);
161 declare!(LPTIM1);
162 declare!(LPTIM2);
163 declare!(LPUART1);
164 declare!(OTG_FS);
165 declare!(PVD_PVM);
166 declare!(QUADSPI);
167 declare!(RCC);
168 declare!(RNG);
169 declare!(RTC_Alarm);
170 declare!(RTC_WKUP);
171 declare!(SAI1);
172 declare!(SAI2);
173 declare!(SDMMC1);
174 declare!(SPI1);
175 declare!(SPI2);
176 declare!(SPI3);
177 declare!(SWPMI1);
178 declare!(TAMP_STAMP);
179 declare!(TIM1_BRK_TIM15);
180 declare!(TIM1_CC);
181 declare!(TIM1_TRG_COM_TIM17);
182 declare!(TIM1_UP_TIM16);
183 declare!(TIM2);
184 declare!(TIM3);
185 declare!(TIM4);
186 declare!(TIM5);
187 declare!(TIM6_DAC);
188 declare!(TIM7);
189 declare!(TIM8_BRK);
190 declare!(TIM8_CC);
191 declare!(TIM8_TRG_COM);
192 declare!(TIM8_UP);
193 declare!(TSC);
194 declare!(UART4);
195 declare!(UART5);
196 declare!(USART1);
197 declare!(USART2);
198 declare!(USART3);
199 declare!(WWDG);
200}
201mod interrupt_vector {
202 extern "C" {
203 fn ADC1_2();
204 fn ADC3();
205 fn AES();
206 fn CAN1_RX0();
207 fn CAN1_RX1();
208 fn CAN1_SCE();
209 fn CAN1_TX();
210 fn COMP();
211 fn DFSDM1_FLT0();
212 fn DFSDM1_FLT1();
213 fn DFSDM1_FLT2();
214 fn DFSDM1_FLT3();
215 fn DMA1_Channel1();
216 fn DMA1_Channel2();
217 fn DMA1_Channel3();
218 fn DMA1_Channel4();
219 fn DMA1_Channel5();
220 fn DMA1_Channel6();
221 fn DMA1_Channel7();
222 fn DMA2_Channel1();
223 fn DMA2_Channel2();
224 fn DMA2_Channel3();
225 fn DMA2_Channel4();
226 fn DMA2_Channel5();
227 fn DMA2_Channel6();
228 fn DMA2_Channel7();
229 fn EXTI0();
230 fn EXTI1();
231 fn EXTI15_10();
232 fn EXTI2();
233 fn EXTI3();
234 fn EXTI4();
235 fn EXTI9_5();
236 fn FLASH();
237 fn FMC();
238 fn FPU();
239 fn I2C1_ER();
240 fn I2C1_EV();
241 fn I2C2_ER();
242 fn I2C2_EV();
243 fn I2C3_ER();
244 fn I2C3_EV();
245 fn LPTIM1();
246 fn LPTIM2();
247 fn LPUART1();
248 fn OTG_FS();
249 fn PVD_PVM();
250 fn QUADSPI();
251 fn RCC();
252 fn RNG();
253 fn RTC_Alarm();
254 fn RTC_WKUP();
255 fn SAI1();
256 fn SAI2();
257 fn SDMMC1();
258 fn SPI1();
259 fn SPI2();
260 fn SPI3();
261 fn SWPMI1();
262 fn TAMP_STAMP();
263 fn TIM1_BRK_TIM15();
264 fn TIM1_CC();
265 fn TIM1_TRG_COM_TIM17();
266 fn TIM1_UP_TIM16();
267 fn TIM2();
268 fn TIM3();
269 fn TIM4();
270 fn TIM5();
271 fn TIM6_DAC();
272 fn TIM7();
273 fn TIM8_BRK();
274 fn TIM8_CC();
275 fn TIM8_TRG_COM();
276 fn TIM8_UP();
277 fn TSC();
278 fn UART4();
279 fn UART5();
280 fn USART1();
281 fn USART2();
282 fn USART3();
283 fn WWDG();
284 }
285 pub union Vector {
286 _handler: unsafe extern "C" fn(),
287 _reserved: u32,
288 }
289 #[link_section = ".vector_table.interrupts"]
290 #[no_mangle]
291 pub static __INTERRUPTS: [Vector; 82] = [
292 Vector { _handler: WWDG },
293 Vector { _handler: PVD_PVM },
294 Vector {
295 _handler: TAMP_STAMP,
296 },
297 Vector { _handler: RTC_WKUP },
298 Vector { _handler: FLASH },
299 Vector { _handler: RCC },
300 Vector { _handler: EXTI0 },
301 Vector { _handler: EXTI1 },
302 Vector { _handler: EXTI2 },
303 Vector { _handler: EXTI3 },
304 Vector { _handler: EXTI4 },
305 Vector {
306 _handler: DMA1_Channel1,
307 },
308 Vector {
309 _handler: DMA1_Channel2,
310 },
311 Vector {
312 _handler: DMA1_Channel3,
313 },
314 Vector {
315 _handler: DMA1_Channel4,
316 },
317 Vector {
318 _handler: DMA1_Channel5,
319 },
320 Vector {
321 _handler: DMA1_Channel6,
322 },
323 Vector {
324 _handler: DMA1_Channel7,
325 },
326 Vector { _handler: ADC1_2 },
327 Vector { _handler: CAN1_TX },
328 Vector { _handler: CAN1_RX0 },
329 Vector { _handler: CAN1_RX1 },
330 Vector { _handler: CAN1_SCE },
331 Vector { _handler: EXTI9_5 },
332 Vector {
333 _handler: TIM1_BRK_TIM15,
334 },
335 Vector {
336 _handler: TIM1_UP_TIM16,
337 },
338 Vector {
339 _handler: TIM1_TRG_COM_TIM17,
340 },
341 Vector { _handler: TIM1_CC },
342 Vector { _handler: TIM2 },
343 Vector { _handler: TIM3 },
344 Vector { _handler: TIM4 },
345 Vector { _handler: I2C1_EV },
346 Vector { _handler: I2C1_ER },
347 Vector { _handler: I2C2_EV },
348 Vector { _handler: I2C2_ER },
349 Vector { _handler: SPI1 },
350 Vector { _handler: SPI2 },
351 Vector { _handler: USART1 },
352 Vector { _handler: USART2 },
353 Vector { _handler: USART3 },
354 Vector {
355 _handler: EXTI15_10,
356 },
357 Vector {
358 _handler: RTC_Alarm,
359 },
360 Vector {
361 _handler: DFSDM1_FLT3,
362 },
363 Vector { _handler: TIM8_BRK },
364 Vector { _handler: TIM8_UP },
365 Vector {
366 _handler: TIM8_TRG_COM,
367 },
368 Vector { _handler: TIM8_CC },
369 Vector { _handler: ADC3 },
370 Vector { _handler: FMC },
371 Vector { _handler: SDMMC1 },
372 Vector { _handler: TIM5 },
373 Vector { _handler: SPI3 },
374 Vector { _handler: UART4 },
375 Vector { _handler: UART5 },
376 Vector { _handler: TIM6_DAC },
377 Vector { _handler: TIM7 },
378 Vector {
379 _handler: DMA2_Channel1,
380 },
381 Vector {
382 _handler: DMA2_Channel2,
383 },
384 Vector {
385 _handler: DMA2_Channel3,
386 },
387 Vector {
388 _handler: DMA2_Channel4,
389 },
390 Vector {
391 _handler: DMA2_Channel5,
392 },
393 Vector {
394 _handler: DFSDM1_FLT0,
395 },
396 Vector {
397 _handler: DFSDM1_FLT1,
398 },
399 Vector {
400 _handler: DFSDM1_FLT2,
401 },
402 Vector { _handler: COMP },
403 Vector { _handler: LPTIM1 },
404 Vector { _handler: LPTIM2 },
405 Vector { _handler: OTG_FS },
406 Vector {
407 _handler: DMA2_Channel6,
408 },
409 Vector {
410 _handler: DMA2_Channel7,
411 },
412 Vector { _handler: LPUART1 },
413 Vector { _handler: QUADSPI },
414 Vector { _handler: I2C3_EV },
415 Vector { _handler: I2C3_ER },
416 Vector { _handler: SAI1 },
417 Vector { _handler: SAI2 },
418 Vector { _handler: SWPMI1 },
419 Vector { _handler: TSC },
420 Vector { _reserved: 0 },
421 Vector { _handler: AES },
422 Vector { _handler: RNG },
423 Vector { _handler: FPU },
424 ];
425}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 426impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 427impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 428impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l486jg.rs b/embassy-stm32/src/chip/stm32l486jg.rs
index e6b55967e..27ce58704 100644
--- a/embassy-stm32/src/chip/stm32l486jg.rs
+++ b/embassy-stm32/src/chip/stm32l486jg.rs
@@ -1,21 +1,431 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2,
13 RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, 13 QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15,
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
15 USB_OTG_FS, WWDG 15 USART3, USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DFSDM1_FLT2 = 63,
41 DFSDM1_FLT3 = 42,
42 DMA1_Channel1 = 11,
43 DMA1_Channel2 = 12,
44 DMA1_Channel3 = 13,
45 DMA1_Channel4 = 14,
46 DMA1_Channel5 = 15,
47 DMA1_Channel6 = 16,
48 DMA1_Channel7 = 17,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 I2C1_ER = 32,
67 I2C1_EV = 31,
68 I2C2_ER = 34,
69 I2C2_EV = 33,
70 I2C3_ER = 73,
71 I2C3_EV = 72,
72 LCD = 78,
73 LPTIM1 = 65,
74 LPTIM2 = 66,
75 LPUART1 = 70,
76 OTG_FS = 67,
77 PVD_PVM = 1,
78 QUADSPI = 71,
79 RCC = 5,
80 RNG = 80,
81 RTC_Alarm = 41,
82 RTC_WKUP = 3,
83 SAI1 = 74,
84 SAI2 = 75,
85 SDMMC1 = 49,
86 SPI1 = 35,
87 SPI2 = 36,
88 SPI3 = 51,
89 SWPMI1 = 76,
90 TAMP_STAMP = 2,
91 TIM1_BRK_TIM15 = 24,
92 TIM1_CC = 27,
93 TIM1_TRG_COM_TIM17 = 26,
94 TIM1_UP_TIM16 = 25,
95 TIM2 = 28,
96 TIM3 = 29,
97 TIM4 = 30,
98 TIM5 = 50,
99 TIM6_DAC = 54,
100 TIM7 = 55,
101 TIM8_BRK = 43,
102 TIM8_CC = 46,
103 TIM8_TRG_COM = 45,
104 TIM8_UP = 44,
105 TSC = 77,
106 UART4 = 52,
107 UART5 = 53,
108 USART1 = 37,
109 USART2 = 38,
110 USART3 = 39,
111 WWDG = 0,
112 }
113 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
114 #[inline(always)]
115 fn number(self) -> u16 {
116 self as u16
117 }
118 }
119
120 declare!(ADC1_2);
121 declare!(ADC3);
122 declare!(AES);
123 declare!(CAN1_RX0);
124 declare!(CAN1_RX1);
125 declare!(CAN1_SCE);
126 declare!(CAN1_TX);
127 declare!(COMP);
128 declare!(DFSDM1_FLT0);
129 declare!(DFSDM1_FLT1);
130 declare!(DFSDM1_FLT2);
131 declare!(DFSDM1_FLT3);
132 declare!(DMA1_Channel1);
133 declare!(DMA1_Channel2);
134 declare!(DMA1_Channel3);
135 declare!(DMA1_Channel4);
136 declare!(DMA1_Channel5);
137 declare!(DMA1_Channel6);
138 declare!(DMA1_Channel7);
139 declare!(DMA2_Channel1);
140 declare!(DMA2_Channel2);
141 declare!(DMA2_Channel3);
142 declare!(DMA2_Channel4);
143 declare!(DMA2_Channel5);
144 declare!(DMA2_Channel6);
145 declare!(DMA2_Channel7);
146 declare!(EXTI0);
147 declare!(EXTI1);
148 declare!(EXTI15_10);
149 declare!(EXTI2);
150 declare!(EXTI3);
151 declare!(EXTI4);
152 declare!(EXTI9_5);
153 declare!(FLASH);
154 declare!(FMC);
155 declare!(FPU);
156 declare!(I2C1_ER);
157 declare!(I2C1_EV);
158 declare!(I2C2_ER);
159 declare!(I2C2_EV);
160 declare!(I2C3_ER);
161 declare!(I2C3_EV);
162 declare!(LCD);
163 declare!(LPTIM1);
164 declare!(LPTIM2);
165 declare!(LPUART1);
166 declare!(OTG_FS);
167 declare!(PVD_PVM);
168 declare!(QUADSPI);
169 declare!(RCC);
170 declare!(RNG);
171 declare!(RTC_Alarm);
172 declare!(RTC_WKUP);
173 declare!(SAI1);
174 declare!(SAI2);
175 declare!(SDMMC1);
176 declare!(SPI1);
177 declare!(SPI2);
178 declare!(SPI3);
179 declare!(SWPMI1);
180 declare!(TAMP_STAMP);
181 declare!(TIM1_BRK_TIM15);
182 declare!(TIM1_CC);
183 declare!(TIM1_TRG_COM_TIM17);
184 declare!(TIM1_UP_TIM16);
185 declare!(TIM2);
186 declare!(TIM3);
187 declare!(TIM4);
188 declare!(TIM5);
189 declare!(TIM6_DAC);
190 declare!(TIM7);
191 declare!(TIM8_BRK);
192 declare!(TIM8_CC);
193 declare!(TIM8_TRG_COM);
194 declare!(TIM8_UP);
195 declare!(TSC);
196 declare!(UART4);
197 declare!(UART5);
198 declare!(USART1);
199 declare!(USART2);
200 declare!(USART3);
201 declare!(WWDG);
202}
203mod interrupt_vector {
204 extern "C" {
205 fn ADC1_2();
206 fn ADC3();
207 fn AES();
208 fn CAN1_RX0();
209 fn CAN1_RX1();
210 fn CAN1_SCE();
211 fn CAN1_TX();
212 fn COMP();
213 fn DFSDM1_FLT0();
214 fn DFSDM1_FLT1();
215 fn DFSDM1_FLT2();
216 fn DFSDM1_FLT3();
217 fn DMA1_Channel1();
218 fn DMA1_Channel2();
219 fn DMA1_Channel3();
220 fn DMA1_Channel4();
221 fn DMA1_Channel5();
222 fn DMA1_Channel6();
223 fn DMA1_Channel7();
224 fn DMA2_Channel1();
225 fn DMA2_Channel2();
226 fn DMA2_Channel3();
227 fn DMA2_Channel4();
228 fn DMA2_Channel5();
229 fn DMA2_Channel6();
230 fn DMA2_Channel7();
231 fn EXTI0();
232 fn EXTI1();
233 fn EXTI15_10();
234 fn EXTI2();
235 fn EXTI3();
236 fn EXTI4();
237 fn EXTI9_5();
238 fn FLASH();
239 fn FMC();
240 fn FPU();
241 fn I2C1_ER();
242 fn I2C1_EV();
243 fn I2C2_ER();
244 fn I2C2_EV();
245 fn I2C3_ER();
246 fn I2C3_EV();
247 fn LCD();
248 fn LPTIM1();
249 fn LPTIM2();
250 fn LPUART1();
251 fn OTG_FS();
252 fn PVD_PVM();
253 fn QUADSPI();
254 fn RCC();
255 fn RNG();
256 fn RTC_Alarm();
257 fn RTC_WKUP();
258 fn SAI1();
259 fn SAI2();
260 fn SDMMC1();
261 fn SPI1();
262 fn SPI2();
263 fn SPI3();
264 fn SWPMI1();
265 fn TAMP_STAMP();
266 fn TIM1_BRK_TIM15();
267 fn TIM1_CC();
268 fn TIM1_TRG_COM_TIM17();
269 fn TIM1_UP_TIM16();
270 fn TIM2();
271 fn TIM3();
272 fn TIM4();
273 fn TIM5();
274 fn TIM6_DAC();
275 fn TIM7();
276 fn TIM8_BRK();
277 fn TIM8_CC();
278 fn TIM8_TRG_COM();
279 fn TIM8_UP();
280 fn TSC();
281 fn UART4();
282 fn UART5();
283 fn USART1();
284 fn USART2();
285 fn USART3();
286 fn WWDG();
287 }
288 pub union Vector {
289 _handler: unsafe extern "C" fn(),
290 _reserved: u32,
291 }
292 #[link_section = ".vector_table.interrupts"]
293 #[no_mangle]
294 pub static __INTERRUPTS: [Vector; 82] = [
295 Vector { _handler: WWDG },
296 Vector { _handler: PVD_PVM },
297 Vector {
298 _handler: TAMP_STAMP,
299 },
300 Vector { _handler: RTC_WKUP },
301 Vector { _handler: FLASH },
302 Vector { _handler: RCC },
303 Vector { _handler: EXTI0 },
304 Vector { _handler: EXTI1 },
305 Vector { _handler: EXTI2 },
306 Vector { _handler: EXTI3 },
307 Vector { _handler: EXTI4 },
308 Vector {
309 _handler: DMA1_Channel1,
310 },
311 Vector {
312 _handler: DMA1_Channel2,
313 },
314 Vector {
315 _handler: DMA1_Channel3,
316 },
317 Vector {
318 _handler: DMA1_Channel4,
319 },
320 Vector {
321 _handler: DMA1_Channel5,
322 },
323 Vector {
324 _handler: DMA1_Channel6,
325 },
326 Vector {
327 _handler: DMA1_Channel7,
328 },
329 Vector { _handler: ADC1_2 },
330 Vector { _handler: CAN1_TX },
331 Vector { _handler: CAN1_RX0 },
332 Vector { _handler: CAN1_RX1 },
333 Vector { _handler: CAN1_SCE },
334 Vector { _handler: EXTI9_5 },
335 Vector {
336 _handler: TIM1_BRK_TIM15,
337 },
338 Vector {
339 _handler: TIM1_UP_TIM16,
340 },
341 Vector {
342 _handler: TIM1_TRG_COM_TIM17,
343 },
344 Vector { _handler: TIM1_CC },
345 Vector { _handler: TIM2 },
346 Vector { _handler: TIM3 },
347 Vector { _handler: TIM4 },
348 Vector { _handler: I2C1_EV },
349 Vector { _handler: I2C1_ER },
350 Vector { _handler: I2C2_EV },
351 Vector { _handler: I2C2_ER },
352 Vector { _handler: SPI1 },
353 Vector { _handler: SPI2 },
354 Vector { _handler: USART1 },
355 Vector { _handler: USART2 },
356 Vector { _handler: USART3 },
357 Vector {
358 _handler: EXTI15_10,
359 },
360 Vector {
361 _handler: RTC_Alarm,
362 },
363 Vector {
364 _handler: DFSDM1_FLT3,
365 },
366 Vector { _handler: TIM8_BRK },
367 Vector { _handler: TIM8_UP },
368 Vector {
369 _handler: TIM8_TRG_COM,
370 },
371 Vector { _handler: TIM8_CC },
372 Vector { _handler: ADC3 },
373 Vector { _handler: FMC },
374 Vector { _handler: SDMMC1 },
375 Vector { _handler: TIM5 },
376 Vector { _handler: SPI3 },
377 Vector { _handler: UART4 },
378 Vector { _handler: UART5 },
379 Vector { _handler: TIM6_DAC },
380 Vector { _handler: TIM7 },
381 Vector {
382 _handler: DMA2_Channel1,
383 },
384 Vector {
385 _handler: DMA2_Channel2,
386 },
387 Vector {
388 _handler: DMA2_Channel3,
389 },
390 Vector {
391 _handler: DMA2_Channel4,
392 },
393 Vector {
394 _handler: DMA2_Channel5,
395 },
396 Vector {
397 _handler: DFSDM1_FLT0,
398 },
399 Vector {
400 _handler: DFSDM1_FLT1,
401 },
402 Vector {
403 _handler: DFSDM1_FLT2,
404 },
405 Vector { _handler: COMP },
406 Vector { _handler: LPTIM1 },
407 Vector { _handler: LPTIM2 },
408 Vector { _handler: OTG_FS },
409 Vector {
410 _handler: DMA2_Channel6,
411 },
412 Vector {
413 _handler: DMA2_Channel7,
414 },
415 Vector { _handler: LPUART1 },
416 Vector { _handler: QUADSPI },
417 Vector { _handler: I2C3_EV },
418 Vector { _handler: I2C3_ER },
419 Vector { _handler: SAI1 },
420 Vector { _handler: SAI2 },
421 Vector { _handler: SWPMI1 },
422 Vector { _handler: TSC },
423 Vector { _handler: LCD },
424 Vector { _handler: AES },
425 Vector { _handler: RNG },
426 Vector { _handler: FPU },
427 ];
428}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 429impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 430impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 431impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l486qg.rs b/embassy-stm32/src/chip/stm32l486qg.rs
index e6b55967e..27ce58704 100644
--- a/embassy-stm32/src/chip/stm32l486qg.rs
+++ b/embassy-stm32/src/chip/stm32l486qg.rs
@@ -1,21 +1,431 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2,
13 RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, 13 QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15,
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
15 USB_OTG_FS, WWDG 15 USART3, USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DFSDM1_FLT2 = 63,
41 DFSDM1_FLT3 = 42,
42 DMA1_Channel1 = 11,
43 DMA1_Channel2 = 12,
44 DMA1_Channel3 = 13,
45 DMA1_Channel4 = 14,
46 DMA1_Channel5 = 15,
47 DMA1_Channel6 = 16,
48 DMA1_Channel7 = 17,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 I2C1_ER = 32,
67 I2C1_EV = 31,
68 I2C2_ER = 34,
69 I2C2_EV = 33,
70 I2C3_ER = 73,
71 I2C3_EV = 72,
72 LCD = 78,
73 LPTIM1 = 65,
74 LPTIM2 = 66,
75 LPUART1 = 70,
76 OTG_FS = 67,
77 PVD_PVM = 1,
78 QUADSPI = 71,
79 RCC = 5,
80 RNG = 80,
81 RTC_Alarm = 41,
82 RTC_WKUP = 3,
83 SAI1 = 74,
84 SAI2 = 75,
85 SDMMC1 = 49,
86 SPI1 = 35,
87 SPI2 = 36,
88 SPI3 = 51,
89 SWPMI1 = 76,
90 TAMP_STAMP = 2,
91 TIM1_BRK_TIM15 = 24,
92 TIM1_CC = 27,
93 TIM1_TRG_COM_TIM17 = 26,
94 TIM1_UP_TIM16 = 25,
95 TIM2 = 28,
96 TIM3 = 29,
97 TIM4 = 30,
98 TIM5 = 50,
99 TIM6_DAC = 54,
100 TIM7 = 55,
101 TIM8_BRK = 43,
102 TIM8_CC = 46,
103 TIM8_TRG_COM = 45,
104 TIM8_UP = 44,
105 TSC = 77,
106 UART4 = 52,
107 UART5 = 53,
108 USART1 = 37,
109 USART2 = 38,
110 USART3 = 39,
111 WWDG = 0,
112 }
113 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
114 #[inline(always)]
115 fn number(self) -> u16 {
116 self as u16
117 }
118 }
119
120 declare!(ADC1_2);
121 declare!(ADC3);
122 declare!(AES);
123 declare!(CAN1_RX0);
124 declare!(CAN1_RX1);
125 declare!(CAN1_SCE);
126 declare!(CAN1_TX);
127 declare!(COMP);
128 declare!(DFSDM1_FLT0);
129 declare!(DFSDM1_FLT1);
130 declare!(DFSDM1_FLT2);
131 declare!(DFSDM1_FLT3);
132 declare!(DMA1_Channel1);
133 declare!(DMA1_Channel2);
134 declare!(DMA1_Channel3);
135 declare!(DMA1_Channel4);
136 declare!(DMA1_Channel5);
137 declare!(DMA1_Channel6);
138 declare!(DMA1_Channel7);
139 declare!(DMA2_Channel1);
140 declare!(DMA2_Channel2);
141 declare!(DMA2_Channel3);
142 declare!(DMA2_Channel4);
143 declare!(DMA2_Channel5);
144 declare!(DMA2_Channel6);
145 declare!(DMA2_Channel7);
146 declare!(EXTI0);
147 declare!(EXTI1);
148 declare!(EXTI15_10);
149 declare!(EXTI2);
150 declare!(EXTI3);
151 declare!(EXTI4);
152 declare!(EXTI9_5);
153 declare!(FLASH);
154 declare!(FMC);
155 declare!(FPU);
156 declare!(I2C1_ER);
157 declare!(I2C1_EV);
158 declare!(I2C2_ER);
159 declare!(I2C2_EV);
160 declare!(I2C3_ER);
161 declare!(I2C3_EV);
162 declare!(LCD);
163 declare!(LPTIM1);
164 declare!(LPTIM2);
165 declare!(LPUART1);
166 declare!(OTG_FS);
167 declare!(PVD_PVM);
168 declare!(QUADSPI);
169 declare!(RCC);
170 declare!(RNG);
171 declare!(RTC_Alarm);
172 declare!(RTC_WKUP);
173 declare!(SAI1);
174 declare!(SAI2);
175 declare!(SDMMC1);
176 declare!(SPI1);
177 declare!(SPI2);
178 declare!(SPI3);
179 declare!(SWPMI1);
180 declare!(TAMP_STAMP);
181 declare!(TIM1_BRK_TIM15);
182 declare!(TIM1_CC);
183 declare!(TIM1_TRG_COM_TIM17);
184 declare!(TIM1_UP_TIM16);
185 declare!(TIM2);
186 declare!(TIM3);
187 declare!(TIM4);
188 declare!(TIM5);
189 declare!(TIM6_DAC);
190 declare!(TIM7);
191 declare!(TIM8_BRK);
192 declare!(TIM8_CC);
193 declare!(TIM8_TRG_COM);
194 declare!(TIM8_UP);
195 declare!(TSC);
196 declare!(UART4);
197 declare!(UART5);
198 declare!(USART1);
199 declare!(USART2);
200 declare!(USART3);
201 declare!(WWDG);
202}
203mod interrupt_vector {
204 extern "C" {
205 fn ADC1_2();
206 fn ADC3();
207 fn AES();
208 fn CAN1_RX0();
209 fn CAN1_RX1();
210 fn CAN1_SCE();
211 fn CAN1_TX();
212 fn COMP();
213 fn DFSDM1_FLT0();
214 fn DFSDM1_FLT1();
215 fn DFSDM1_FLT2();
216 fn DFSDM1_FLT3();
217 fn DMA1_Channel1();
218 fn DMA1_Channel2();
219 fn DMA1_Channel3();
220 fn DMA1_Channel4();
221 fn DMA1_Channel5();
222 fn DMA1_Channel6();
223 fn DMA1_Channel7();
224 fn DMA2_Channel1();
225 fn DMA2_Channel2();
226 fn DMA2_Channel3();
227 fn DMA2_Channel4();
228 fn DMA2_Channel5();
229 fn DMA2_Channel6();
230 fn DMA2_Channel7();
231 fn EXTI0();
232 fn EXTI1();
233 fn EXTI15_10();
234 fn EXTI2();
235 fn EXTI3();
236 fn EXTI4();
237 fn EXTI9_5();
238 fn FLASH();
239 fn FMC();
240 fn FPU();
241 fn I2C1_ER();
242 fn I2C1_EV();
243 fn I2C2_ER();
244 fn I2C2_EV();
245 fn I2C3_ER();
246 fn I2C3_EV();
247 fn LCD();
248 fn LPTIM1();
249 fn LPTIM2();
250 fn LPUART1();
251 fn OTG_FS();
252 fn PVD_PVM();
253 fn QUADSPI();
254 fn RCC();
255 fn RNG();
256 fn RTC_Alarm();
257 fn RTC_WKUP();
258 fn SAI1();
259 fn SAI2();
260 fn SDMMC1();
261 fn SPI1();
262 fn SPI2();
263 fn SPI3();
264 fn SWPMI1();
265 fn TAMP_STAMP();
266 fn TIM1_BRK_TIM15();
267 fn TIM1_CC();
268 fn TIM1_TRG_COM_TIM17();
269 fn TIM1_UP_TIM16();
270 fn TIM2();
271 fn TIM3();
272 fn TIM4();
273 fn TIM5();
274 fn TIM6_DAC();
275 fn TIM7();
276 fn TIM8_BRK();
277 fn TIM8_CC();
278 fn TIM8_TRG_COM();
279 fn TIM8_UP();
280 fn TSC();
281 fn UART4();
282 fn UART5();
283 fn USART1();
284 fn USART2();
285 fn USART3();
286 fn WWDG();
287 }
288 pub union Vector {
289 _handler: unsafe extern "C" fn(),
290 _reserved: u32,
291 }
292 #[link_section = ".vector_table.interrupts"]
293 #[no_mangle]
294 pub static __INTERRUPTS: [Vector; 82] = [
295 Vector { _handler: WWDG },
296 Vector { _handler: PVD_PVM },
297 Vector {
298 _handler: TAMP_STAMP,
299 },
300 Vector { _handler: RTC_WKUP },
301 Vector { _handler: FLASH },
302 Vector { _handler: RCC },
303 Vector { _handler: EXTI0 },
304 Vector { _handler: EXTI1 },
305 Vector { _handler: EXTI2 },
306 Vector { _handler: EXTI3 },
307 Vector { _handler: EXTI4 },
308 Vector {
309 _handler: DMA1_Channel1,
310 },
311 Vector {
312 _handler: DMA1_Channel2,
313 },
314 Vector {
315 _handler: DMA1_Channel3,
316 },
317 Vector {
318 _handler: DMA1_Channel4,
319 },
320 Vector {
321 _handler: DMA1_Channel5,
322 },
323 Vector {
324 _handler: DMA1_Channel6,
325 },
326 Vector {
327 _handler: DMA1_Channel7,
328 },
329 Vector { _handler: ADC1_2 },
330 Vector { _handler: CAN1_TX },
331 Vector { _handler: CAN1_RX0 },
332 Vector { _handler: CAN1_RX1 },
333 Vector { _handler: CAN1_SCE },
334 Vector { _handler: EXTI9_5 },
335 Vector {
336 _handler: TIM1_BRK_TIM15,
337 },
338 Vector {
339 _handler: TIM1_UP_TIM16,
340 },
341 Vector {
342 _handler: TIM1_TRG_COM_TIM17,
343 },
344 Vector { _handler: TIM1_CC },
345 Vector { _handler: TIM2 },
346 Vector { _handler: TIM3 },
347 Vector { _handler: TIM4 },
348 Vector { _handler: I2C1_EV },
349 Vector { _handler: I2C1_ER },
350 Vector { _handler: I2C2_EV },
351 Vector { _handler: I2C2_ER },
352 Vector { _handler: SPI1 },
353 Vector { _handler: SPI2 },
354 Vector { _handler: USART1 },
355 Vector { _handler: USART2 },
356 Vector { _handler: USART3 },
357 Vector {
358 _handler: EXTI15_10,
359 },
360 Vector {
361 _handler: RTC_Alarm,
362 },
363 Vector {
364 _handler: DFSDM1_FLT3,
365 },
366 Vector { _handler: TIM8_BRK },
367 Vector { _handler: TIM8_UP },
368 Vector {
369 _handler: TIM8_TRG_COM,
370 },
371 Vector { _handler: TIM8_CC },
372 Vector { _handler: ADC3 },
373 Vector { _handler: FMC },
374 Vector { _handler: SDMMC1 },
375 Vector { _handler: TIM5 },
376 Vector { _handler: SPI3 },
377 Vector { _handler: UART4 },
378 Vector { _handler: UART5 },
379 Vector { _handler: TIM6_DAC },
380 Vector { _handler: TIM7 },
381 Vector {
382 _handler: DMA2_Channel1,
383 },
384 Vector {
385 _handler: DMA2_Channel2,
386 },
387 Vector {
388 _handler: DMA2_Channel3,
389 },
390 Vector {
391 _handler: DMA2_Channel4,
392 },
393 Vector {
394 _handler: DMA2_Channel5,
395 },
396 Vector {
397 _handler: DFSDM1_FLT0,
398 },
399 Vector {
400 _handler: DFSDM1_FLT1,
401 },
402 Vector {
403 _handler: DFSDM1_FLT2,
404 },
405 Vector { _handler: COMP },
406 Vector { _handler: LPTIM1 },
407 Vector { _handler: LPTIM2 },
408 Vector { _handler: OTG_FS },
409 Vector {
410 _handler: DMA2_Channel6,
411 },
412 Vector {
413 _handler: DMA2_Channel7,
414 },
415 Vector { _handler: LPUART1 },
416 Vector { _handler: QUADSPI },
417 Vector { _handler: I2C3_EV },
418 Vector { _handler: I2C3_ER },
419 Vector { _handler: SAI1 },
420 Vector { _handler: SAI2 },
421 Vector { _handler: SWPMI1 },
422 Vector { _handler: TSC },
423 Vector { _handler: LCD },
424 Vector { _handler: AES },
425 Vector { _handler: RNG },
426 Vector { _handler: FPU },
427 ];
428}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 429impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 430impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 431impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l486rg.rs b/embassy-stm32/src/chip/stm32l486rg.rs
index e6b55967e..27ce58704 100644
--- a/embassy-stm32/src/chip/stm32l486rg.rs
+++ b/embassy-stm32/src/chip/stm32l486rg.rs
@@ -1,21 +1,431 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2,
13 RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, 13 QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15,
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
15 USB_OTG_FS, WWDG 15 USART3, USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DFSDM1_FLT2 = 63,
41 DFSDM1_FLT3 = 42,
42 DMA1_Channel1 = 11,
43 DMA1_Channel2 = 12,
44 DMA1_Channel3 = 13,
45 DMA1_Channel4 = 14,
46 DMA1_Channel5 = 15,
47 DMA1_Channel6 = 16,
48 DMA1_Channel7 = 17,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 I2C1_ER = 32,
67 I2C1_EV = 31,
68 I2C2_ER = 34,
69 I2C2_EV = 33,
70 I2C3_ER = 73,
71 I2C3_EV = 72,
72 LCD = 78,
73 LPTIM1 = 65,
74 LPTIM2 = 66,
75 LPUART1 = 70,
76 OTG_FS = 67,
77 PVD_PVM = 1,
78 QUADSPI = 71,
79 RCC = 5,
80 RNG = 80,
81 RTC_Alarm = 41,
82 RTC_WKUP = 3,
83 SAI1 = 74,
84 SAI2 = 75,
85 SDMMC1 = 49,
86 SPI1 = 35,
87 SPI2 = 36,
88 SPI3 = 51,
89 SWPMI1 = 76,
90 TAMP_STAMP = 2,
91 TIM1_BRK_TIM15 = 24,
92 TIM1_CC = 27,
93 TIM1_TRG_COM_TIM17 = 26,
94 TIM1_UP_TIM16 = 25,
95 TIM2 = 28,
96 TIM3 = 29,
97 TIM4 = 30,
98 TIM5 = 50,
99 TIM6_DAC = 54,
100 TIM7 = 55,
101 TIM8_BRK = 43,
102 TIM8_CC = 46,
103 TIM8_TRG_COM = 45,
104 TIM8_UP = 44,
105 TSC = 77,
106 UART4 = 52,
107 UART5 = 53,
108 USART1 = 37,
109 USART2 = 38,
110 USART3 = 39,
111 WWDG = 0,
112 }
113 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
114 #[inline(always)]
115 fn number(self) -> u16 {
116 self as u16
117 }
118 }
119
120 declare!(ADC1_2);
121 declare!(ADC3);
122 declare!(AES);
123 declare!(CAN1_RX0);
124 declare!(CAN1_RX1);
125 declare!(CAN1_SCE);
126 declare!(CAN1_TX);
127 declare!(COMP);
128 declare!(DFSDM1_FLT0);
129 declare!(DFSDM1_FLT1);
130 declare!(DFSDM1_FLT2);
131 declare!(DFSDM1_FLT3);
132 declare!(DMA1_Channel1);
133 declare!(DMA1_Channel2);
134 declare!(DMA1_Channel3);
135 declare!(DMA1_Channel4);
136 declare!(DMA1_Channel5);
137 declare!(DMA1_Channel6);
138 declare!(DMA1_Channel7);
139 declare!(DMA2_Channel1);
140 declare!(DMA2_Channel2);
141 declare!(DMA2_Channel3);
142 declare!(DMA2_Channel4);
143 declare!(DMA2_Channel5);
144 declare!(DMA2_Channel6);
145 declare!(DMA2_Channel7);
146 declare!(EXTI0);
147 declare!(EXTI1);
148 declare!(EXTI15_10);
149 declare!(EXTI2);
150 declare!(EXTI3);
151 declare!(EXTI4);
152 declare!(EXTI9_5);
153 declare!(FLASH);
154 declare!(FMC);
155 declare!(FPU);
156 declare!(I2C1_ER);
157 declare!(I2C1_EV);
158 declare!(I2C2_ER);
159 declare!(I2C2_EV);
160 declare!(I2C3_ER);
161 declare!(I2C3_EV);
162 declare!(LCD);
163 declare!(LPTIM1);
164 declare!(LPTIM2);
165 declare!(LPUART1);
166 declare!(OTG_FS);
167 declare!(PVD_PVM);
168 declare!(QUADSPI);
169 declare!(RCC);
170 declare!(RNG);
171 declare!(RTC_Alarm);
172 declare!(RTC_WKUP);
173 declare!(SAI1);
174 declare!(SAI2);
175 declare!(SDMMC1);
176 declare!(SPI1);
177 declare!(SPI2);
178 declare!(SPI3);
179 declare!(SWPMI1);
180 declare!(TAMP_STAMP);
181 declare!(TIM1_BRK_TIM15);
182 declare!(TIM1_CC);
183 declare!(TIM1_TRG_COM_TIM17);
184 declare!(TIM1_UP_TIM16);
185 declare!(TIM2);
186 declare!(TIM3);
187 declare!(TIM4);
188 declare!(TIM5);
189 declare!(TIM6_DAC);
190 declare!(TIM7);
191 declare!(TIM8_BRK);
192 declare!(TIM8_CC);
193 declare!(TIM8_TRG_COM);
194 declare!(TIM8_UP);
195 declare!(TSC);
196 declare!(UART4);
197 declare!(UART5);
198 declare!(USART1);
199 declare!(USART2);
200 declare!(USART3);
201 declare!(WWDG);
202}
203mod interrupt_vector {
204 extern "C" {
205 fn ADC1_2();
206 fn ADC3();
207 fn AES();
208 fn CAN1_RX0();
209 fn CAN1_RX1();
210 fn CAN1_SCE();
211 fn CAN1_TX();
212 fn COMP();
213 fn DFSDM1_FLT0();
214 fn DFSDM1_FLT1();
215 fn DFSDM1_FLT2();
216 fn DFSDM1_FLT3();
217 fn DMA1_Channel1();
218 fn DMA1_Channel2();
219 fn DMA1_Channel3();
220 fn DMA1_Channel4();
221 fn DMA1_Channel5();
222 fn DMA1_Channel6();
223 fn DMA1_Channel7();
224 fn DMA2_Channel1();
225 fn DMA2_Channel2();
226 fn DMA2_Channel3();
227 fn DMA2_Channel4();
228 fn DMA2_Channel5();
229 fn DMA2_Channel6();
230 fn DMA2_Channel7();
231 fn EXTI0();
232 fn EXTI1();
233 fn EXTI15_10();
234 fn EXTI2();
235 fn EXTI3();
236 fn EXTI4();
237 fn EXTI9_5();
238 fn FLASH();
239 fn FMC();
240 fn FPU();
241 fn I2C1_ER();
242 fn I2C1_EV();
243 fn I2C2_ER();
244 fn I2C2_EV();
245 fn I2C3_ER();
246 fn I2C3_EV();
247 fn LCD();
248 fn LPTIM1();
249 fn LPTIM2();
250 fn LPUART1();
251 fn OTG_FS();
252 fn PVD_PVM();
253 fn QUADSPI();
254 fn RCC();
255 fn RNG();
256 fn RTC_Alarm();
257 fn RTC_WKUP();
258 fn SAI1();
259 fn SAI2();
260 fn SDMMC1();
261 fn SPI1();
262 fn SPI2();
263 fn SPI3();
264 fn SWPMI1();
265 fn TAMP_STAMP();
266 fn TIM1_BRK_TIM15();
267 fn TIM1_CC();
268 fn TIM1_TRG_COM_TIM17();
269 fn TIM1_UP_TIM16();
270 fn TIM2();
271 fn TIM3();
272 fn TIM4();
273 fn TIM5();
274 fn TIM6_DAC();
275 fn TIM7();
276 fn TIM8_BRK();
277 fn TIM8_CC();
278 fn TIM8_TRG_COM();
279 fn TIM8_UP();
280 fn TSC();
281 fn UART4();
282 fn UART5();
283 fn USART1();
284 fn USART2();
285 fn USART3();
286 fn WWDG();
287 }
288 pub union Vector {
289 _handler: unsafe extern "C" fn(),
290 _reserved: u32,
291 }
292 #[link_section = ".vector_table.interrupts"]
293 #[no_mangle]
294 pub static __INTERRUPTS: [Vector; 82] = [
295 Vector { _handler: WWDG },
296 Vector { _handler: PVD_PVM },
297 Vector {
298 _handler: TAMP_STAMP,
299 },
300 Vector { _handler: RTC_WKUP },
301 Vector { _handler: FLASH },
302 Vector { _handler: RCC },
303 Vector { _handler: EXTI0 },
304 Vector { _handler: EXTI1 },
305 Vector { _handler: EXTI2 },
306 Vector { _handler: EXTI3 },
307 Vector { _handler: EXTI4 },
308 Vector {
309 _handler: DMA1_Channel1,
310 },
311 Vector {
312 _handler: DMA1_Channel2,
313 },
314 Vector {
315 _handler: DMA1_Channel3,
316 },
317 Vector {
318 _handler: DMA1_Channel4,
319 },
320 Vector {
321 _handler: DMA1_Channel5,
322 },
323 Vector {
324 _handler: DMA1_Channel6,
325 },
326 Vector {
327 _handler: DMA1_Channel7,
328 },
329 Vector { _handler: ADC1_2 },
330 Vector { _handler: CAN1_TX },
331 Vector { _handler: CAN1_RX0 },
332 Vector { _handler: CAN1_RX1 },
333 Vector { _handler: CAN1_SCE },
334 Vector { _handler: EXTI9_5 },
335 Vector {
336 _handler: TIM1_BRK_TIM15,
337 },
338 Vector {
339 _handler: TIM1_UP_TIM16,
340 },
341 Vector {
342 _handler: TIM1_TRG_COM_TIM17,
343 },
344 Vector { _handler: TIM1_CC },
345 Vector { _handler: TIM2 },
346 Vector { _handler: TIM3 },
347 Vector { _handler: TIM4 },
348 Vector { _handler: I2C1_EV },
349 Vector { _handler: I2C1_ER },
350 Vector { _handler: I2C2_EV },
351 Vector { _handler: I2C2_ER },
352 Vector { _handler: SPI1 },
353 Vector { _handler: SPI2 },
354 Vector { _handler: USART1 },
355 Vector { _handler: USART2 },
356 Vector { _handler: USART3 },
357 Vector {
358 _handler: EXTI15_10,
359 },
360 Vector {
361 _handler: RTC_Alarm,
362 },
363 Vector {
364 _handler: DFSDM1_FLT3,
365 },
366 Vector { _handler: TIM8_BRK },
367 Vector { _handler: TIM8_UP },
368 Vector {
369 _handler: TIM8_TRG_COM,
370 },
371 Vector { _handler: TIM8_CC },
372 Vector { _handler: ADC3 },
373 Vector { _handler: FMC },
374 Vector { _handler: SDMMC1 },
375 Vector { _handler: TIM5 },
376 Vector { _handler: SPI3 },
377 Vector { _handler: UART4 },
378 Vector { _handler: UART5 },
379 Vector { _handler: TIM6_DAC },
380 Vector { _handler: TIM7 },
381 Vector {
382 _handler: DMA2_Channel1,
383 },
384 Vector {
385 _handler: DMA2_Channel2,
386 },
387 Vector {
388 _handler: DMA2_Channel3,
389 },
390 Vector {
391 _handler: DMA2_Channel4,
392 },
393 Vector {
394 _handler: DMA2_Channel5,
395 },
396 Vector {
397 _handler: DFSDM1_FLT0,
398 },
399 Vector {
400 _handler: DFSDM1_FLT1,
401 },
402 Vector {
403 _handler: DFSDM1_FLT2,
404 },
405 Vector { _handler: COMP },
406 Vector { _handler: LPTIM1 },
407 Vector { _handler: LPTIM2 },
408 Vector { _handler: OTG_FS },
409 Vector {
410 _handler: DMA2_Channel6,
411 },
412 Vector {
413 _handler: DMA2_Channel7,
414 },
415 Vector { _handler: LPUART1 },
416 Vector { _handler: QUADSPI },
417 Vector { _handler: I2C3_EV },
418 Vector { _handler: I2C3_ER },
419 Vector { _handler: SAI1 },
420 Vector { _handler: SAI2 },
421 Vector { _handler: SWPMI1 },
422 Vector { _handler: TSC },
423 Vector { _handler: LCD },
424 Vector { _handler: AES },
425 Vector { _handler: RNG },
426 Vector { _handler: FPU },
427 ];
428}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 429impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 430impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 431impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l486vg.rs b/embassy-stm32/src/chip/stm32l486vg.rs
index e6b55967e..27ce58704 100644
--- a/embassy-stm32/src/chip/stm32l486vg.rs
+++ b/embassy-stm32/src/chip/stm32l486vg.rs
@@ -1,21 +1,431 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2,
13 RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, 13 QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15,
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
15 USB_OTG_FS, WWDG 15 USART3, USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DFSDM1_FLT2 = 63,
41 DFSDM1_FLT3 = 42,
42 DMA1_Channel1 = 11,
43 DMA1_Channel2 = 12,
44 DMA1_Channel3 = 13,
45 DMA1_Channel4 = 14,
46 DMA1_Channel5 = 15,
47 DMA1_Channel6 = 16,
48 DMA1_Channel7 = 17,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 I2C1_ER = 32,
67 I2C1_EV = 31,
68 I2C2_ER = 34,
69 I2C2_EV = 33,
70 I2C3_ER = 73,
71 I2C3_EV = 72,
72 LCD = 78,
73 LPTIM1 = 65,
74 LPTIM2 = 66,
75 LPUART1 = 70,
76 OTG_FS = 67,
77 PVD_PVM = 1,
78 QUADSPI = 71,
79 RCC = 5,
80 RNG = 80,
81 RTC_Alarm = 41,
82 RTC_WKUP = 3,
83 SAI1 = 74,
84 SAI2 = 75,
85 SDMMC1 = 49,
86 SPI1 = 35,
87 SPI2 = 36,
88 SPI3 = 51,
89 SWPMI1 = 76,
90 TAMP_STAMP = 2,
91 TIM1_BRK_TIM15 = 24,
92 TIM1_CC = 27,
93 TIM1_TRG_COM_TIM17 = 26,
94 TIM1_UP_TIM16 = 25,
95 TIM2 = 28,
96 TIM3 = 29,
97 TIM4 = 30,
98 TIM5 = 50,
99 TIM6_DAC = 54,
100 TIM7 = 55,
101 TIM8_BRK = 43,
102 TIM8_CC = 46,
103 TIM8_TRG_COM = 45,
104 TIM8_UP = 44,
105 TSC = 77,
106 UART4 = 52,
107 UART5 = 53,
108 USART1 = 37,
109 USART2 = 38,
110 USART3 = 39,
111 WWDG = 0,
112 }
113 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
114 #[inline(always)]
115 fn number(self) -> u16 {
116 self as u16
117 }
118 }
119
120 declare!(ADC1_2);
121 declare!(ADC3);
122 declare!(AES);
123 declare!(CAN1_RX0);
124 declare!(CAN1_RX1);
125 declare!(CAN1_SCE);
126 declare!(CAN1_TX);
127 declare!(COMP);
128 declare!(DFSDM1_FLT0);
129 declare!(DFSDM1_FLT1);
130 declare!(DFSDM1_FLT2);
131 declare!(DFSDM1_FLT3);
132 declare!(DMA1_Channel1);
133 declare!(DMA1_Channel2);
134 declare!(DMA1_Channel3);
135 declare!(DMA1_Channel4);
136 declare!(DMA1_Channel5);
137 declare!(DMA1_Channel6);
138 declare!(DMA1_Channel7);
139 declare!(DMA2_Channel1);
140 declare!(DMA2_Channel2);
141 declare!(DMA2_Channel3);
142 declare!(DMA2_Channel4);
143 declare!(DMA2_Channel5);
144 declare!(DMA2_Channel6);
145 declare!(DMA2_Channel7);
146 declare!(EXTI0);
147 declare!(EXTI1);
148 declare!(EXTI15_10);
149 declare!(EXTI2);
150 declare!(EXTI3);
151 declare!(EXTI4);
152 declare!(EXTI9_5);
153 declare!(FLASH);
154 declare!(FMC);
155 declare!(FPU);
156 declare!(I2C1_ER);
157 declare!(I2C1_EV);
158 declare!(I2C2_ER);
159 declare!(I2C2_EV);
160 declare!(I2C3_ER);
161 declare!(I2C3_EV);
162 declare!(LCD);
163 declare!(LPTIM1);
164 declare!(LPTIM2);
165 declare!(LPUART1);
166 declare!(OTG_FS);
167 declare!(PVD_PVM);
168 declare!(QUADSPI);
169 declare!(RCC);
170 declare!(RNG);
171 declare!(RTC_Alarm);
172 declare!(RTC_WKUP);
173 declare!(SAI1);
174 declare!(SAI2);
175 declare!(SDMMC1);
176 declare!(SPI1);
177 declare!(SPI2);
178 declare!(SPI3);
179 declare!(SWPMI1);
180 declare!(TAMP_STAMP);
181 declare!(TIM1_BRK_TIM15);
182 declare!(TIM1_CC);
183 declare!(TIM1_TRG_COM_TIM17);
184 declare!(TIM1_UP_TIM16);
185 declare!(TIM2);
186 declare!(TIM3);
187 declare!(TIM4);
188 declare!(TIM5);
189 declare!(TIM6_DAC);
190 declare!(TIM7);
191 declare!(TIM8_BRK);
192 declare!(TIM8_CC);
193 declare!(TIM8_TRG_COM);
194 declare!(TIM8_UP);
195 declare!(TSC);
196 declare!(UART4);
197 declare!(UART5);
198 declare!(USART1);
199 declare!(USART2);
200 declare!(USART3);
201 declare!(WWDG);
202}
203mod interrupt_vector {
204 extern "C" {
205 fn ADC1_2();
206 fn ADC3();
207 fn AES();
208 fn CAN1_RX0();
209 fn CAN1_RX1();
210 fn CAN1_SCE();
211 fn CAN1_TX();
212 fn COMP();
213 fn DFSDM1_FLT0();
214 fn DFSDM1_FLT1();
215 fn DFSDM1_FLT2();
216 fn DFSDM1_FLT3();
217 fn DMA1_Channel1();
218 fn DMA1_Channel2();
219 fn DMA1_Channel3();
220 fn DMA1_Channel4();
221 fn DMA1_Channel5();
222 fn DMA1_Channel6();
223 fn DMA1_Channel7();
224 fn DMA2_Channel1();
225 fn DMA2_Channel2();
226 fn DMA2_Channel3();
227 fn DMA2_Channel4();
228 fn DMA2_Channel5();
229 fn DMA2_Channel6();
230 fn DMA2_Channel7();
231 fn EXTI0();
232 fn EXTI1();
233 fn EXTI15_10();
234 fn EXTI2();
235 fn EXTI3();
236 fn EXTI4();
237 fn EXTI9_5();
238 fn FLASH();
239 fn FMC();
240 fn FPU();
241 fn I2C1_ER();
242 fn I2C1_EV();
243 fn I2C2_ER();
244 fn I2C2_EV();
245 fn I2C3_ER();
246 fn I2C3_EV();
247 fn LCD();
248 fn LPTIM1();
249 fn LPTIM2();
250 fn LPUART1();
251 fn OTG_FS();
252 fn PVD_PVM();
253 fn QUADSPI();
254 fn RCC();
255 fn RNG();
256 fn RTC_Alarm();
257 fn RTC_WKUP();
258 fn SAI1();
259 fn SAI2();
260 fn SDMMC1();
261 fn SPI1();
262 fn SPI2();
263 fn SPI3();
264 fn SWPMI1();
265 fn TAMP_STAMP();
266 fn TIM1_BRK_TIM15();
267 fn TIM1_CC();
268 fn TIM1_TRG_COM_TIM17();
269 fn TIM1_UP_TIM16();
270 fn TIM2();
271 fn TIM3();
272 fn TIM4();
273 fn TIM5();
274 fn TIM6_DAC();
275 fn TIM7();
276 fn TIM8_BRK();
277 fn TIM8_CC();
278 fn TIM8_TRG_COM();
279 fn TIM8_UP();
280 fn TSC();
281 fn UART4();
282 fn UART5();
283 fn USART1();
284 fn USART2();
285 fn USART3();
286 fn WWDG();
287 }
288 pub union Vector {
289 _handler: unsafe extern "C" fn(),
290 _reserved: u32,
291 }
292 #[link_section = ".vector_table.interrupts"]
293 #[no_mangle]
294 pub static __INTERRUPTS: [Vector; 82] = [
295 Vector { _handler: WWDG },
296 Vector { _handler: PVD_PVM },
297 Vector {
298 _handler: TAMP_STAMP,
299 },
300 Vector { _handler: RTC_WKUP },
301 Vector { _handler: FLASH },
302 Vector { _handler: RCC },
303 Vector { _handler: EXTI0 },
304 Vector { _handler: EXTI1 },
305 Vector { _handler: EXTI2 },
306 Vector { _handler: EXTI3 },
307 Vector { _handler: EXTI4 },
308 Vector {
309 _handler: DMA1_Channel1,
310 },
311 Vector {
312 _handler: DMA1_Channel2,
313 },
314 Vector {
315 _handler: DMA1_Channel3,
316 },
317 Vector {
318 _handler: DMA1_Channel4,
319 },
320 Vector {
321 _handler: DMA1_Channel5,
322 },
323 Vector {
324 _handler: DMA1_Channel6,
325 },
326 Vector {
327 _handler: DMA1_Channel7,
328 },
329 Vector { _handler: ADC1_2 },
330 Vector { _handler: CAN1_TX },
331 Vector { _handler: CAN1_RX0 },
332 Vector { _handler: CAN1_RX1 },
333 Vector { _handler: CAN1_SCE },
334 Vector { _handler: EXTI9_5 },
335 Vector {
336 _handler: TIM1_BRK_TIM15,
337 },
338 Vector {
339 _handler: TIM1_UP_TIM16,
340 },
341 Vector {
342 _handler: TIM1_TRG_COM_TIM17,
343 },
344 Vector { _handler: TIM1_CC },
345 Vector { _handler: TIM2 },
346 Vector { _handler: TIM3 },
347 Vector { _handler: TIM4 },
348 Vector { _handler: I2C1_EV },
349 Vector { _handler: I2C1_ER },
350 Vector { _handler: I2C2_EV },
351 Vector { _handler: I2C2_ER },
352 Vector { _handler: SPI1 },
353 Vector { _handler: SPI2 },
354 Vector { _handler: USART1 },
355 Vector { _handler: USART2 },
356 Vector { _handler: USART3 },
357 Vector {
358 _handler: EXTI15_10,
359 },
360 Vector {
361 _handler: RTC_Alarm,
362 },
363 Vector {
364 _handler: DFSDM1_FLT3,
365 },
366 Vector { _handler: TIM8_BRK },
367 Vector { _handler: TIM8_UP },
368 Vector {
369 _handler: TIM8_TRG_COM,
370 },
371 Vector { _handler: TIM8_CC },
372 Vector { _handler: ADC3 },
373 Vector { _handler: FMC },
374 Vector { _handler: SDMMC1 },
375 Vector { _handler: TIM5 },
376 Vector { _handler: SPI3 },
377 Vector { _handler: UART4 },
378 Vector { _handler: UART5 },
379 Vector { _handler: TIM6_DAC },
380 Vector { _handler: TIM7 },
381 Vector {
382 _handler: DMA2_Channel1,
383 },
384 Vector {
385 _handler: DMA2_Channel2,
386 },
387 Vector {
388 _handler: DMA2_Channel3,
389 },
390 Vector {
391 _handler: DMA2_Channel4,
392 },
393 Vector {
394 _handler: DMA2_Channel5,
395 },
396 Vector {
397 _handler: DFSDM1_FLT0,
398 },
399 Vector {
400 _handler: DFSDM1_FLT1,
401 },
402 Vector {
403 _handler: DFSDM1_FLT2,
404 },
405 Vector { _handler: COMP },
406 Vector { _handler: LPTIM1 },
407 Vector { _handler: LPTIM2 },
408 Vector { _handler: OTG_FS },
409 Vector {
410 _handler: DMA2_Channel6,
411 },
412 Vector {
413 _handler: DMA2_Channel7,
414 },
415 Vector { _handler: LPUART1 },
416 Vector { _handler: QUADSPI },
417 Vector { _handler: I2C3_EV },
418 Vector { _handler: I2C3_ER },
419 Vector { _handler: SAI1 },
420 Vector { _handler: SAI2 },
421 Vector { _handler: SWPMI1 },
422 Vector { _handler: TSC },
423 Vector { _handler: LCD },
424 Vector { _handler: AES },
425 Vector { _handler: RNG },
426 Vector { _handler: FPU },
427 ];
428}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 429impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 430impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 431impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l486zg.rs b/embassy-stm32/src/chip/stm32l486zg.rs
index e6b55967e..27ce58704 100644
--- a/embassy-stm32/src/chip/stm32l486zg.rs
+++ b/embassy-stm32/src/chip/stm32l486zg.rs
@@ -1,21 +1,431 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, 12 PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2,
13 RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, 13 QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15,
14 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, 14 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
15 USB_OTG_FS, WWDG 15 USART3, USB_OTG_FS, WWDG
16); 16);
17pub const SYSCFG_BASE: usize = 0x40010000;
18pub const EXTI_BASE: usize = 0x40010400;
17pub const GPIO_BASE: usize = 0x48000000; 19pub const GPIO_BASE: usize = 0x48000000;
18pub const GPIO_STRIDE: usize = 0x400; 20pub const GPIO_STRIDE: usize = 0x400;
21
22pub mod interrupt {
23 pub use cortex_m::interrupt::{CriticalSection, Mutex};
24 pub use embassy::interrupt::{declare, take, Interrupt};
25 pub use embassy_extras::interrupt::Priority4 as Priority;
26
27 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
28 #[allow(non_camel_case_types)]
29 enum InterruptEnum {
30 ADC1_2 = 18,
31 ADC3 = 47,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DFSDM1_FLT2 = 63,
41 DFSDM1_FLT3 = 42,
42 DMA1_Channel1 = 11,
43 DMA1_Channel2 = 12,
44 DMA1_Channel3 = 13,
45 DMA1_Channel4 = 14,
46 DMA1_Channel5 = 15,
47 DMA1_Channel6 = 16,
48 DMA1_Channel7 = 17,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 I2C1_ER = 32,
67 I2C1_EV = 31,
68 I2C2_ER = 34,
69 I2C2_EV = 33,
70 I2C3_ER = 73,
71 I2C3_EV = 72,
72 LCD = 78,
73 LPTIM1 = 65,
74 LPTIM2 = 66,
75 LPUART1 = 70,
76 OTG_FS = 67,
77 PVD_PVM = 1,
78 QUADSPI = 71,
79 RCC = 5,
80 RNG = 80,
81 RTC_Alarm = 41,
82 RTC_WKUP = 3,
83 SAI1 = 74,
84 SAI2 = 75,
85 SDMMC1 = 49,
86 SPI1 = 35,
87 SPI2 = 36,
88 SPI3 = 51,
89 SWPMI1 = 76,
90 TAMP_STAMP = 2,
91 TIM1_BRK_TIM15 = 24,
92 TIM1_CC = 27,
93 TIM1_TRG_COM_TIM17 = 26,
94 TIM1_UP_TIM16 = 25,
95 TIM2 = 28,
96 TIM3 = 29,
97 TIM4 = 30,
98 TIM5 = 50,
99 TIM6_DAC = 54,
100 TIM7 = 55,
101 TIM8_BRK = 43,
102 TIM8_CC = 46,
103 TIM8_TRG_COM = 45,
104 TIM8_UP = 44,
105 TSC = 77,
106 UART4 = 52,
107 UART5 = 53,
108 USART1 = 37,
109 USART2 = 38,
110 USART3 = 39,
111 WWDG = 0,
112 }
113 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
114 #[inline(always)]
115 fn number(self) -> u16 {
116 self as u16
117 }
118 }
119
120 declare!(ADC1_2);
121 declare!(ADC3);
122 declare!(AES);
123 declare!(CAN1_RX0);
124 declare!(CAN1_RX1);
125 declare!(CAN1_SCE);
126 declare!(CAN1_TX);
127 declare!(COMP);
128 declare!(DFSDM1_FLT0);
129 declare!(DFSDM1_FLT1);
130 declare!(DFSDM1_FLT2);
131 declare!(DFSDM1_FLT3);
132 declare!(DMA1_Channel1);
133 declare!(DMA1_Channel2);
134 declare!(DMA1_Channel3);
135 declare!(DMA1_Channel4);
136 declare!(DMA1_Channel5);
137 declare!(DMA1_Channel6);
138 declare!(DMA1_Channel7);
139 declare!(DMA2_Channel1);
140 declare!(DMA2_Channel2);
141 declare!(DMA2_Channel3);
142 declare!(DMA2_Channel4);
143 declare!(DMA2_Channel5);
144 declare!(DMA2_Channel6);
145 declare!(DMA2_Channel7);
146 declare!(EXTI0);
147 declare!(EXTI1);
148 declare!(EXTI15_10);
149 declare!(EXTI2);
150 declare!(EXTI3);
151 declare!(EXTI4);
152 declare!(EXTI9_5);
153 declare!(FLASH);
154 declare!(FMC);
155 declare!(FPU);
156 declare!(I2C1_ER);
157 declare!(I2C1_EV);
158 declare!(I2C2_ER);
159 declare!(I2C2_EV);
160 declare!(I2C3_ER);
161 declare!(I2C3_EV);
162 declare!(LCD);
163 declare!(LPTIM1);
164 declare!(LPTIM2);
165 declare!(LPUART1);
166 declare!(OTG_FS);
167 declare!(PVD_PVM);
168 declare!(QUADSPI);
169 declare!(RCC);
170 declare!(RNG);
171 declare!(RTC_Alarm);
172 declare!(RTC_WKUP);
173 declare!(SAI1);
174 declare!(SAI2);
175 declare!(SDMMC1);
176 declare!(SPI1);
177 declare!(SPI2);
178 declare!(SPI3);
179 declare!(SWPMI1);
180 declare!(TAMP_STAMP);
181 declare!(TIM1_BRK_TIM15);
182 declare!(TIM1_CC);
183 declare!(TIM1_TRG_COM_TIM17);
184 declare!(TIM1_UP_TIM16);
185 declare!(TIM2);
186 declare!(TIM3);
187 declare!(TIM4);
188 declare!(TIM5);
189 declare!(TIM6_DAC);
190 declare!(TIM7);
191 declare!(TIM8_BRK);
192 declare!(TIM8_CC);
193 declare!(TIM8_TRG_COM);
194 declare!(TIM8_UP);
195 declare!(TSC);
196 declare!(UART4);
197 declare!(UART5);
198 declare!(USART1);
199 declare!(USART2);
200 declare!(USART3);
201 declare!(WWDG);
202}
203mod interrupt_vector {
204 extern "C" {
205 fn ADC1_2();
206 fn ADC3();
207 fn AES();
208 fn CAN1_RX0();
209 fn CAN1_RX1();
210 fn CAN1_SCE();
211 fn CAN1_TX();
212 fn COMP();
213 fn DFSDM1_FLT0();
214 fn DFSDM1_FLT1();
215 fn DFSDM1_FLT2();
216 fn DFSDM1_FLT3();
217 fn DMA1_Channel1();
218 fn DMA1_Channel2();
219 fn DMA1_Channel3();
220 fn DMA1_Channel4();
221 fn DMA1_Channel5();
222 fn DMA1_Channel6();
223 fn DMA1_Channel7();
224 fn DMA2_Channel1();
225 fn DMA2_Channel2();
226 fn DMA2_Channel3();
227 fn DMA2_Channel4();
228 fn DMA2_Channel5();
229 fn DMA2_Channel6();
230 fn DMA2_Channel7();
231 fn EXTI0();
232 fn EXTI1();
233 fn EXTI15_10();
234 fn EXTI2();
235 fn EXTI3();
236 fn EXTI4();
237 fn EXTI9_5();
238 fn FLASH();
239 fn FMC();
240 fn FPU();
241 fn I2C1_ER();
242 fn I2C1_EV();
243 fn I2C2_ER();
244 fn I2C2_EV();
245 fn I2C3_ER();
246 fn I2C3_EV();
247 fn LCD();
248 fn LPTIM1();
249 fn LPTIM2();
250 fn LPUART1();
251 fn OTG_FS();
252 fn PVD_PVM();
253 fn QUADSPI();
254 fn RCC();
255 fn RNG();
256 fn RTC_Alarm();
257 fn RTC_WKUP();
258 fn SAI1();
259 fn SAI2();
260 fn SDMMC1();
261 fn SPI1();
262 fn SPI2();
263 fn SPI3();
264 fn SWPMI1();
265 fn TAMP_STAMP();
266 fn TIM1_BRK_TIM15();
267 fn TIM1_CC();
268 fn TIM1_TRG_COM_TIM17();
269 fn TIM1_UP_TIM16();
270 fn TIM2();
271 fn TIM3();
272 fn TIM4();
273 fn TIM5();
274 fn TIM6_DAC();
275 fn TIM7();
276 fn TIM8_BRK();
277 fn TIM8_CC();
278 fn TIM8_TRG_COM();
279 fn TIM8_UP();
280 fn TSC();
281 fn UART4();
282 fn UART5();
283 fn USART1();
284 fn USART2();
285 fn USART3();
286 fn WWDG();
287 }
288 pub union Vector {
289 _handler: unsafe extern "C" fn(),
290 _reserved: u32,
291 }
292 #[link_section = ".vector_table.interrupts"]
293 #[no_mangle]
294 pub static __INTERRUPTS: [Vector; 82] = [
295 Vector { _handler: WWDG },
296 Vector { _handler: PVD_PVM },
297 Vector {
298 _handler: TAMP_STAMP,
299 },
300 Vector { _handler: RTC_WKUP },
301 Vector { _handler: FLASH },
302 Vector { _handler: RCC },
303 Vector { _handler: EXTI0 },
304 Vector { _handler: EXTI1 },
305 Vector { _handler: EXTI2 },
306 Vector { _handler: EXTI3 },
307 Vector { _handler: EXTI4 },
308 Vector {
309 _handler: DMA1_Channel1,
310 },
311 Vector {
312 _handler: DMA1_Channel2,
313 },
314 Vector {
315 _handler: DMA1_Channel3,
316 },
317 Vector {
318 _handler: DMA1_Channel4,
319 },
320 Vector {
321 _handler: DMA1_Channel5,
322 },
323 Vector {
324 _handler: DMA1_Channel6,
325 },
326 Vector {
327 _handler: DMA1_Channel7,
328 },
329 Vector { _handler: ADC1_2 },
330 Vector { _handler: CAN1_TX },
331 Vector { _handler: CAN1_RX0 },
332 Vector { _handler: CAN1_RX1 },
333 Vector { _handler: CAN1_SCE },
334 Vector { _handler: EXTI9_5 },
335 Vector {
336 _handler: TIM1_BRK_TIM15,
337 },
338 Vector {
339 _handler: TIM1_UP_TIM16,
340 },
341 Vector {
342 _handler: TIM1_TRG_COM_TIM17,
343 },
344 Vector { _handler: TIM1_CC },
345 Vector { _handler: TIM2 },
346 Vector { _handler: TIM3 },
347 Vector { _handler: TIM4 },
348 Vector { _handler: I2C1_EV },
349 Vector { _handler: I2C1_ER },
350 Vector { _handler: I2C2_EV },
351 Vector { _handler: I2C2_ER },
352 Vector { _handler: SPI1 },
353 Vector { _handler: SPI2 },
354 Vector { _handler: USART1 },
355 Vector { _handler: USART2 },
356 Vector { _handler: USART3 },
357 Vector {
358 _handler: EXTI15_10,
359 },
360 Vector {
361 _handler: RTC_Alarm,
362 },
363 Vector {
364 _handler: DFSDM1_FLT3,
365 },
366 Vector { _handler: TIM8_BRK },
367 Vector { _handler: TIM8_UP },
368 Vector {
369 _handler: TIM8_TRG_COM,
370 },
371 Vector { _handler: TIM8_CC },
372 Vector { _handler: ADC3 },
373 Vector { _handler: FMC },
374 Vector { _handler: SDMMC1 },
375 Vector { _handler: TIM5 },
376 Vector { _handler: SPI3 },
377 Vector { _handler: UART4 },
378 Vector { _handler: UART5 },
379 Vector { _handler: TIM6_DAC },
380 Vector { _handler: TIM7 },
381 Vector {
382 _handler: DMA2_Channel1,
383 },
384 Vector {
385 _handler: DMA2_Channel2,
386 },
387 Vector {
388 _handler: DMA2_Channel3,
389 },
390 Vector {
391 _handler: DMA2_Channel4,
392 },
393 Vector {
394 _handler: DMA2_Channel5,
395 },
396 Vector {
397 _handler: DFSDM1_FLT0,
398 },
399 Vector {
400 _handler: DFSDM1_FLT1,
401 },
402 Vector {
403 _handler: DFSDM1_FLT2,
404 },
405 Vector { _handler: COMP },
406 Vector { _handler: LPTIM1 },
407 Vector { _handler: LPTIM2 },
408 Vector { _handler: OTG_FS },
409 Vector {
410 _handler: DMA2_Channel6,
411 },
412 Vector {
413 _handler: DMA2_Channel7,
414 },
415 Vector { _handler: LPUART1 },
416 Vector { _handler: QUADSPI },
417 Vector { _handler: I2C3_EV },
418 Vector { _handler: I2C3_ER },
419 Vector { _handler: SAI1 },
420 Vector { _handler: SAI2 },
421 Vector { _handler: SWPMI1 },
422 Vector { _handler: TSC },
423 Vector { _handler: LCD },
424 Vector { _handler: AES },
425 Vector { _handler: RNG },
426 Vector { _handler: FPU },
427 ];
428}
19impl_gpio_pin!(PA0, 0, 0, EXTI0); 429impl_gpio_pin!(PA0, 0, 0, EXTI0);
20impl_gpio_pin!(PA1, 0, 1, EXTI1); 430impl_gpio_pin!(PA1, 0, 1, EXTI1);
21impl_gpio_pin!(PA2, 0, 2, EXTI2); 431impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l496ae.rs b/embassy-stm32/src/chip/stm32l496ae.rs
index 5200ecd80..e54e0774d 100644
--- a/embassy-stm32/src/chip/stm32l496ae.rs
+++ b/embassy-stm32/src/chip/stm32l496ae.rs
@@ -1,12 +1,12 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI,
5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, 5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, 6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3,
7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, 7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5,
8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, 8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7,
9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 CAN2_RX0 = 87,
38 CAN2_RX1 = 88,
39 CAN2_SCE = 89,
40 CAN2_TX = 86,
41 COMP = 64,
42 CRS = 82,
43 DCMI = 85,
44 DFSDM1_FLT0 = 61,
45 DFSDM1_FLT1 = 62,
46 DFSDM1_FLT2 = 63,
47 DFSDM1_FLT3 = 42,
48 DMA1_Channel1 = 11,
49 DMA1_Channel2 = 12,
50 DMA1_Channel3 = 13,
51 DMA1_Channel4 = 14,
52 DMA1_Channel5 = 15,
53 DMA1_Channel6 = 16,
54 DMA1_Channel7 = 17,
55 DMA2D = 90,
56 DMA2_Channel1 = 56,
57 DMA2_Channel2 = 57,
58 DMA2_Channel3 = 58,
59 DMA2_Channel4 = 59,
60 DMA2_Channel5 = 60,
61 DMA2_Channel6 = 68,
62 DMA2_Channel7 = 69,
63 EXTI0 = 6,
64 EXTI1 = 7,
65 EXTI15_10 = 40,
66 EXTI2 = 8,
67 EXTI3 = 9,
68 EXTI4 = 10,
69 EXTI9_5 = 23,
70 FLASH = 4,
71 FMC = 48,
72 FPU = 81,
73 I2C1_ER = 32,
74 I2C1_EV = 31,
75 I2C2_ER = 34,
76 I2C2_EV = 33,
77 I2C3_ER = 73,
78 I2C3_EV = 72,
79 I2C4_ER = 84,
80 I2C4_EV = 83,
81 LCD = 78,
82 LPTIM1 = 65,
83 LPTIM2 = 66,
84 LPUART1 = 70,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 QUADSPI = 71,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 SWPMI1 = 76,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1_2);
130 declare!(ADC3);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(CAN2_RX0);
136 declare!(CAN2_RX1);
137 declare!(CAN2_SCE);
138 declare!(CAN2_TX);
139 declare!(COMP);
140 declare!(CRS);
141 declare!(DCMI);
142 declare!(DFSDM1_FLT0);
143 declare!(DFSDM1_FLT1);
144 declare!(DFSDM1_FLT2);
145 declare!(DFSDM1_FLT3);
146 declare!(DMA1_Channel1);
147 declare!(DMA1_Channel2);
148 declare!(DMA1_Channel3);
149 declare!(DMA1_Channel4);
150 declare!(DMA1_Channel5);
151 declare!(DMA1_Channel6);
152 declare!(DMA1_Channel7);
153 declare!(DMA2D);
154 declare!(DMA2_Channel1);
155 declare!(DMA2_Channel2);
156 declare!(DMA2_Channel3);
157 declare!(DMA2_Channel4);
158 declare!(DMA2_Channel5);
159 declare!(DMA2_Channel6);
160 declare!(DMA2_Channel7);
161 declare!(EXTI0);
162 declare!(EXTI1);
163 declare!(EXTI15_10);
164 declare!(EXTI2);
165 declare!(EXTI3);
166 declare!(EXTI4);
167 declare!(EXTI9_5);
168 declare!(FLASH);
169 declare!(FMC);
170 declare!(FPU);
171 declare!(I2C1_ER);
172 declare!(I2C1_EV);
173 declare!(I2C2_ER);
174 declare!(I2C2_EV);
175 declare!(I2C3_ER);
176 declare!(I2C3_EV);
177 declare!(I2C4_ER);
178 declare!(I2C4_EV);
179 declare!(LCD);
180 declare!(LPTIM1);
181 declare!(LPTIM2);
182 declare!(LPUART1);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(QUADSPI);
186 declare!(RCC);
187 declare!(RNG);
188 declare!(RTC_Alarm);
189 declare!(RTC_WKUP);
190 declare!(SAI1);
191 declare!(SAI2);
192 declare!(SDMMC1);
193 declare!(SPI1);
194 declare!(SPI2);
195 declare!(SPI3);
196 declare!(SWPMI1);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1_2();
223 fn ADC3();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn CAN2_RX0();
229 fn CAN2_RX1();
230 fn CAN2_SCE();
231 fn CAN2_TX();
232 fn COMP();
233 fn CRS();
234 fn DCMI();
235 fn DFSDM1_FLT0();
236 fn DFSDM1_FLT1();
237 fn DFSDM1_FLT2();
238 fn DFSDM1_FLT3();
239 fn DMA1_Channel1();
240 fn DMA1_Channel2();
241 fn DMA1_Channel3();
242 fn DMA1_Channel4();
243 fn DMA1_Channel5();
244 fn DMA1_Channel6();
245 fn DMA1_Channel7();
246 fn DMA2D();
247 fn DMA2_Channel1();
248 fn DMA2_Channel2();
249 fn DMA2_Channel3();
250 fn DMA2_Channel4();
251 fn DMA2_Channel5();
252 fn DMA2_Channel6();
253 fn DMA2_Channel7();
254 fn EXTI0();
255 fn EXTI1();
256 fn EXTI15_10();
257 fn EXTI2();
258 fn EXTI3();
259 fn EXTI4();
260 fn EXTI9_5();
261 fn FLASH();
262 fn FMC();
263 fn FPU();
264 fn I2C1_ER();
265 fn I2C1_EV();
266 fn I2C2_ER();
267 fn I2C2_EV();
268 fn I2C3_ER();
269 fn I2C3_EV();
270 fn I2C4_ER();
271 fn I2C4_EV();
272 fn LCD();
273 fn LPTIM1();
274 fn LPTIM2();
275 fn LPUART1();
276 fn OTG_FS();
277 fn PVD_PVM();
278 fn QUADSPI();
279 fn RCC();
280 fn RNG();
281 fn RTC_Alarm();
282 fn RTC_WKUP();
283 fn SAI1();
284 fn SAI2();
285 fn SDMMC1();
286 fn SPI1();
287 fn SPI2();
288 fn SPI3();
289 fn SWPMI1();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 91] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1_2 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _handler: ADC3 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: QUADSPI },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: SWPMI1 },
447 Vector { _handler: TSC },
448 Vector { _handler: LCD },
449 Vector { _reserved: 0 },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: CRS },
453 Vector { _handler: I2C4_EV },
454 Vector { _handler: I2C4_ER },
455 Vector { _handler: DCMI },
456 Vector { _handler: CAN2_TX },
457 Vector { _handler: CAN2_RX0 },
458 Vector { _handler: CAN2_RX1 },
459 Vector { _handler: CAN2_SCE },
460 Vector { _handler: DMA2D },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l496ag.rs b/embassy-stm32/src/chip/stm32l496ag.rs
index 5200ecd80..e54e0774d 100644
--- a/embassy-stm32/src/chip/stm32l496ag.rs
+++ b/embassy-stm32/src/chip/stm32l496ag.rs
@@ -1,12 +1,12 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI,
5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, 5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, 6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3,
7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, 7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5,
8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, 8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7,
9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 CAN2_RX0 = 87,
38 CAN2_RX1 = 88,
39 CAN2_SCE = 89,
40 CAN2_TX = 86,
41 COMP = 64,
42 CRS = 82,
43 DCMI = 85,
44 DFSDM1_FLT0 = 61,
45 DFSDM1_FLT1 = 62,
46 DFSDM1_FLT2 = 63,
47 DFSDM1_FLT3 = 42,
48 DMA1_Channel1 = 11,
49 DMA1_Channel2 = 12,
50 DMA1_Channel3 = 13,
51 DMA1_Channel4 = 14,
52 DMA1_Channel5 = 15,
53 DMA1_Channel6 = 16,
54 DMA1_Channel7 = 17,
55 DMA2D = 90,
56 DMA2_Channel1 = 56,
57 DMA2_Channel2 = 57,
58 DMA2_Channel3 = 58,
59 DMA2_Channel4 = 59,
60 DMA2_Channel5 = 60,
61 DMA2_Channel6 = 68,
62 DMA2_Channel7 = 69,
63 EXTI0 = 6,
64 EXTI1 = 7,
65 EXTI15_10 = 40,
66 EXTI2 = 8,
67 EXTI3 = 9,
68 EXTI4 = 10,
69 EXTI9_5 = 23,
70 FLASH = 4,
71 FMC = 48,
72 FPU = 81,
73 I2C1_ER = 32,
74 I2C1_EV = 31,
75 I2C2_ER = 34,
76 I2C2_EV = 33,
77 I2C3_ER = 73,
78 I2C3_EV = 72,
79 I2C4_ER = 84,
80 I2C4_EV = 83,
81 LCD = 78,
82 LPTIM1 = 65,
83 LPTIM2 = 66,
84 LPUART1 = 70,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 QUADSPI = 71,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 SWPMI1 = 76,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1_2);
130 declare!(ADC3);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(CAN2_RX0);
136 declare!(CAN2_RX1);
137 declare!(CAN2_SCE);
138 declare!(CAN2_TX);
139 declare!(COMP);
140 declare!(CRS);
141 declare!(DCMI);
142 declare!(DFSDM1_FLT0);
143 declare!(DFSDM1_FLT1);
144 declare!(DFSDM1_FLT2);
145 declare!(DFSDM1_FLT3);
146 declare!(DMA1_Channel1);
147 declare!(DMA1_Channel2);
148 declare!(DMA1_Channel3);
149 declare!(DMA1_Channel4);
150 declare!(DMA1_Channel5);
151 declare!(DMA1_Channel6);
152 declare!(DMA1_Channel7);
153 declare!(DMA2D);
154 declare!(DMA2_Channel1);
155 declare!(DMA2_Channel2);
156 declare!(DMA2_Channel3);
157 declare!(DMA2_Channel4);
158 declare!(DMA2_Channel5);
159 declare!(DMA2_Channel6);
160 declare!(DMA2_Channel7);
161 declare!(EXTI0);
162 declare!(EXTI1);
163 declare!(EXTI15_10);
164 declare!(EXTI2);
165 declare!(EXTI3);
166 declare!(EXTI4);
167 declare!(EXTI9_5);
168 declare!(FLASH);
169 declare!(FMC);
170 declare!(FPU);
171 declare!(I2C1_ER);
172 declare!(I2C1_EV);
173 declare!(I2C2_ER);
174 declare!(I2C2_EV);
175 declare!(I2C3_ER);
176 declare!(I2C3_EV);
177 declare!(I2C4_ER);
178 declare!(I2C4_EV);
179 declare!(LCD);
180 declare!(LPTIM1);
181 declare!(LPTIM2);
182 declare!(LPUART1);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(QUADSPI);
186 declare!(RCC);
187 declare!(RNG);
188 declare!(RTC_Alarm);
189 declare!(RTC_WKUP);
190 declare!(SAI1);
191 declare!(SAI2);
192 declare!(SDMMC1);
193 declare!(SPI1);
194 declare!(SPI2);
195 declare!(SPI3);
196 declare!(SWPMI1);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1_2();
223 fn ADC3();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn CAN2_RX0();
229 fn CAN2_RX1();
230 fn CAN2_SCE();
231 fn CAN2_TX();
232 fn COMP();
233 fn CRS();
234 fn DCMI();
235 fn DFSDM1_FLT0();
236 fn DFSDM1_FLT1();
237 fn DFSDM1_FLT2();
238 fn DFSDM1_FLT3();
239 fn DMA1_Channel1();
240 fn DMA1_Channel2();
241 fn DMA1_Channel3();
242 fn DMA1_Channel4();
243 fn DMA1_Channel5();
244 fn DMA1_Channel6();
245 fn DMA1_Channel7();
246 fn DMA2D();
247 fn DMA2_Channel1();
248 fn DMA2_Channel2();
249 fn DMA2_Channel3();
250 fn DMA2_Channel4();
251 fn DMA2_Channel5();
252 fn DMA2_Channel6();
253 fn DMA2_Channel7();
254 fn EXTI0();
255 fn EXTI1();
256 fn EXTI15_10();
257 fn EXTI2();
258 fn EXTI3();
259 fn EXTI4();
260 fn EXTI9_5();
261 fn FLASH();
262 fn FMC();
263 fn FPU();
264 fn I2C1_ER();
265 fn I2C1_EV();
266 fn I2C2_ER();
267 fn I2C2_EV();
268 fn I2C3_ER();
269 fn I2C3_EV();
270 fn I2C4_ER();
271 fn I2C4_EV();
272 fn LCD();
273 fn LPTIM1();
274 fn LPTIM2();
275 fn LPUART1();
276 fn OTG_FS();
277 fn PVD_PVM();
278 fn QUADSPI();
279 fn RCC();
280 fn RNG();
281 fn RTC_Alarm();
282 fn RTC_WKUP();
283 fn SAI1();
284 fn SAI2();
285 fn SDMMC1();
286 fn SPI1();
287 fn SPI2();
288 fn SPI3();
289 fn SWPMI1();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 91] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1_2 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _handler: ADC3 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: QUADSPI },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: SWPMI1 },
447 Vector { _handler: TSC },
448 Vector { _handler: LCD },
449 Vector { _reserved: 0 },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: CRS },
453 Vector { _handler: I2C4_EV },
454 Vector { _handler: I2C4_ER },
455 Vector { _handler: DCMI },
456 Vector { _handler: CAN2_TX },
457 Vector { _handler: CAN2_RX0 },
458 Vector { _handler: CAN2_RX1 },
459 Vector { _handler: CAN2_SCE },
460 Vector { _handler: DMA2D },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l496qe.rs b/embassy-stm32/src/chip/stm32l496qe.rs
index 5200ecd80..e54e0774d 100644
--- a/embassy-stm32/src/chip/stm32l496qe.rs
+++ b/embassy-stm32/src/chip/stm32l496qe.rs
@@ -1,12 +1,12 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI,
5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, 5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, 6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3,
7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, 7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5,
8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, 8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7,
9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 CAN2_RX0 = 87,
38 CAN2_RX1 = 88,
39 CAN2_SCE = 89,
40 CAN2_TX = 86,
41 COMP = 64,
42 CRS = 82,
43 DCMI = 85,
44 DFSDM1_FLT0 = 61,
45 DFSDM1_FLT1 = 62,
46 DFSDM1_FLT2 = 63,
47 DFSDM1_FLT3 = 42,
48 DMA1_Channel1 = 11,
49 DMA1_Channel2 = 12,
50 DMA1_Channel3 = 13,
51 DMA1_Channel4 = 14,
52 DMA1_Channel5 = 15,
53 DMA1_Channel6 = 16,
54 DMA1_Channel7 = 17,
55 DMA2D = 90,
56 DMA2_Channel1 = 56,
57 DMA2_Channel2 = 57,
58 DMA2_Channel3 = 58,
59 DMA2_Channel4 = 59,
60 DMA2_Channel5 = 60,
61 DMA2_Channel6 = 68,
62 DMA2_Channel7 = 69,
63 EXTI0 = 6,
64 EXTI1 = 7,
65 EXTI15_10 = 40,
66 EXTI2 = 8,
67 EXTI3 = 9,
68 EXTI4 = 10,
69 EXTI9_5 = 23,
70 FLASH = 4,
71 FMC = 48,
72 FPU = 81,
73 I2C1_ER = 32,
74 I2C1_EV = 31,
75 I2C2_ER = 34,
76 I2C2_EV = 33,
77 I2C3_ER = 73,
78 I2C3_EV = 72,
79 I2C4_ER = 84,
80 I2C4_EV = 83,
81 LCD = 78,
82 LPTIM1 = 65,
83 LPTIM2 = 66,
84 LPUART1 = 70,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 QUADSPI = 71,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 SWPMI1 = 76,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1_2);
130 declare!(ADC3);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(CAN2_RX0);
136 declare!(CAN2_RX1);
137 declare!(CAN2_SCE);
138 declare!(CAN2_TX);
139 declare!(COMP);
140 declare!(CRS);
141 declare!(DCMI);
142 declare!(DFSDM1_FLT0);
143 declare!(DFSDM1_FLT1);
144 declare!(DFSDM1_FLT2);
145 declare!(DFSDM1_FLT3);
146 declare!(DMA1_Channel1);
147 declare!(DMA1_Channel2);
148 declare!(DMA1_Channel3);
149 declare!(DMA1_Channel4);
150 declare!(DMA1_Channel5);
151 declare!(DMA1_Channel6);
152 declare!(DMA1_Channel7);
153 declare!(DMA2D);
154 declare!(DMA2_Channel1);
155 declare!(DMA2_Channel2);
156 declare!(DMA2_Channel3);
157 declare!(DMA2_Channel4);
158 declare!(DMA2_Channel5);
159 declare!(DMA2_Channel6);
160 declare!(DMA2_Channel7);
161 declare!(EXTI0);
162 declare!(EXTI1);
163 declare!(EXTI15_10);
164 declare!(EXTI2);
165 declare!(EXTI3);
166 declare!(EXTI4);
167 declare!(EXTI9_5);
168 declare!(FLASH);
169 declare!(FMC);
170 declare!(FPU);
171 declare!(I2C1_ER);
172 declare!(I2C1_EV);
173 declare!(I2C2_ER);
174 declare!(I2C2_EV);
175 declare!(I2C3_ER);
176 declare!(I2C3_EV);
177 declare!(I2C4_ER);
178 declare!(I2C4_EV);
179 declare!(LCD);
180 declare!(LPTIM1);
181 declare!(LPTIM2);
182 declare!(LPUART1);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(QUADSPI);
186 declare!(RCC);
187 declare!(RNG);
188 declare!(RTC_Alarm);
189 declare!(RTC_WKUP);
190 declare!(SAI1);
191 declare!(SAI2);
192 declare!(SDMMC1);
193 declare!(SPI1);
194 declare!(SPI2);
195 declare!(SPI3);
196 declare!(SWPMI1);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1_2();
223 fn ADC3();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn CAN2_RX0();
229 fn CAN2_RX1();
230 fn CAN2_SCE();
231 fn CAN2_TX();
232 fn COMP();
233 fn CRS();
234 fn DCMI();
235 fn DFSDM1_FLT0();
236 fn DFSDM1_FLT1();
237 fn DFSDM1_FLT2();
238 fn DFSDM1_FLT3();
239 fn DMA1_Channel1();
240 fn DMA1_Channel2();
241 fn DMA1_Channel3();
242 fn DMA1_Channel4();
243 fn DMA1_Channel5();
244 fn DMA1_Channel6();
245 fn DMA1_Channel7();
246 fn DMA2D();
247 fn DMA2_Channel1();
248 fn DMA2_Channel2();
249 fn DMA2_Channel3();
250 fn DMA2_Channel4();
251 fn DMA2_Channel5();
252 fn DMA2_Channel6();
253 fn DMA2_Channel7();
254 fn EXTI0();
255 fn EXTI1();
256 fn EXTI15_10();
257 fn EXTI2();
258 fn EXTI3();
259 fn EXTI4();
260 fn EXTI9_5();
261 fn FLASH();
262 fn FMC();
263 fn FPU();
264 fn I2C1_ER();
265 fn I2C1_EV();
266 fn I2C2_ER();
267 fn I2C2_EV();
268 fn I2C3_ER();
269 fn I2C3_EV();
270 fn I2C4_ER();
271 fn I2C4_EV();
272 fn LCD();
273 fn LPTIM1();
274 fn LPTIM2();
275 fn LPUART1();
276 fn OTG_FS();
277 fn PVD_PVM();
278 fn QUADSPI();
279 fn RCC();
280 fn RNG();
281 fn RTC_Alarm();
282 fn RTC_WKUP();
283 fn SAI1();
284 fn SAI2();
285 fn SDMMC1();
286 fn SPI1();
287 fn SPI2();
288 fn SPI3();
289 fn SWPMI1();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 91] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1_2 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _handler: ADC3 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: QUADSPI },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: SWPMI1 },
447 Vector { _handler: TSC },
448 Vector { _handler: LCD },
449 Vector { _reserved: 0 },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: CRS },
453 Vector { _handler: I2C4_EV },
454 Vector { _handler: I2C4_ER },
455 Vector { _handler: DCMI },
456 Vector { _handler: CAN2_TX },
457 Vector { _handler: CAN2_RX0 },
458 Vector { _handler: CAN2_RX1 },
459 Vector { _handler: CAN2_SCE },
460 Vector { _handler: DMA2D },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l496qg.rs b/embassy-stm32/src/chip/stm32l496qg.rs
index 5200ecd80..e54e0774d 100644
--- a/embassy-stm32/src/chip/stm32l496qg.rs
+++ b/embassy-stm32/src/chip/stm32l496qg.rs
@@ -1,12 +1,12 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI,
5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, 5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, 6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3,
7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, 7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5,
8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, 8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7,
9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 CAN2_RX0 = 87,
38 CAN2_RX1 = 88,
39 CAN2_SCE = 89,
40 CAN2_TX = 86,
41 COMP = 64,
42 CRS = 82,
43 DCMI = 85,
44 DFSDM1_FLT0 = 61,
45 DFSDM1_FLT1 = 62,
46 DFSDM1_FLT2 = 63,
47 DFSDM1_FLT3 = 42,
48 DMA1_Channel1 = 11,
49 DMA1_Channel2 = 12,
50 DMA1_Channel3 = 13,
51 DMA1_Channel4 = 14,
52 DMA1_Channel5 = 15,
53 DMA1_Channel6 = 16,
54 DMA1_Channel7 = 17,
55 DMA2D = 90,
56 DMA2_Channel1 = 56,
57 DMA2_Channel2 = 57,
58 DMA2_Channel3 = 58,
59 DMA2_Channel4 = 59,
60 DMA2_Channel5 = 60,
61 DMA2_Channel6 = 68,
62 DMA2_Channel7 = 69,
63 EXTI0 = 6,
64 EXTI1 = 7,
65 EXTI15_10 = 40,
66 EXTI2 = 8,
67 EXTI3 = 9,
68 EXTI4 = 10,
69 EXTI9_5 = 23,
70 FLASH = 4,
71 FMC = 48,
72 FPU = 81,
73 I2C1_ER = 32,
74 I2C1_EV = 31,
75 I2C2_ER = 34,
76 I2C2_EV = 33,
77 I2C3_ER = 73,
78 I2C3_EV = 72,
79 I2C4_ER = 84,
80 I2C4_EV = 83,
81 LCD = 78,
82 LPTIM1 = 65,
83 LPTIM2 = 66,
84 LPUART1 = 70,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 QUADSPI = 71,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 SWPMI1 = 76,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1_2);
130 declare!(ADC3);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(CAN2_RX0);
136 declare!(CAN2_RX1);
137 declare!(CAN2_SCE);
138 declare!(CAN2_TX);
139 declare!(COMP);
140 declare!(CRS);
141 declare!(DCMI);
142 declare!(DFSDM1_FLT0);
143 declare!(DFSDM1_FLT1);
144 declare!(DFSDM1_FLT2);
145 declare!(DFSDM1_FLT3);
146 declare!(DMA1_Channel1);
147 declare!(DMA1_Channel2);
148 declare!(DMA1_Channel3);
149 declare!(DMA1_Channel4);
150 declare!(DMA1_Channel5);
151 declare!(DMA1_Channel6);
152 declare!(DMA1_Channel7);
153 declare!(DMA2D);
154 declare!(DMA2_Channel1);
155 declare!(DMA2_Channel2);
156 declare!(DMA2_Channel3);
157 declare!(DMA2_Channel4);
158 declare!(DMA2_Channel5);
159 declare!(DMA2_Channel6);
160 declare!(DMA2_Channel7);
161 declare!(EXTI0);
162 declare!(EXTI1);
163 declare!(EXTI15_10);
164 declare!(EXTI2);
165 declare!(EXTI3);
166 declare!(EXTI4);
167 declare!(EXTI9_5);
168 declare!(FLASH);
169 declare!(FMC);
170 declare!(FPU);
171 declare!(I2C1_ER);
172 declare!(I2C1_EV);
173 declare!(I2C2_ER);
174 declare!(I2C2_EV);
175 declare!(I2C3_ER);
176 declare!(I2C3_EV);
177 declare!(I2C4_ER);
178 declare!(I2C4_EV);
179 declare!(LCD);
180 declare!(LPTIM1);
181 declare!(LPTIM2);
182 declare!(LPUART1);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(QUADSPI);
186 declare!(RCC);
187 declare!(RNG);
188 declare!(RTC_Alarm);
189 declare!(RTC_WKUP);
190 declare!(SAI1);
191 declare!(SAI2);
192 declare!(SDMMC1);
193 declare!(SPI1);
194 declare!(SPI2);
195 declare!(SPI3);
196 declare!(SWPMI1);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1_2();
223 fn ADC3();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn CAN2_RX0();
229 fn CAN2_RX1();
230 fn CAN2_SCE();
231 fn CAN2_TX();
232 fn COMP();
233 fn CRS();
234 fn DCMI();
235 fn DFSDM1_FLT0();
236 fn DFSDM1_FLT1();
237 fn DFSDM1_FLT2();
238 fn DFSDM1_FLT3();
239 fn DMA1_Channel1();
240 fn DMA1_Channel2();
241 fn DMA1_Channel3();
242 fn DMA1_Channel4();
243 fn DMA1_Channel5();
244 fn DMA1_Channel6();
245 fn DMA1_Channel7();
246 fn DMA2D();
247 fn DMA2_Channel1();
248 fn DMA2_Channel2();
249 fn DMA2_Channel3();
250 fn DMA2_Channel4();
251 fn DMA2_Channel5();
252 fn DMA2_Channel6();
253 fn DMA2_Channel7();
254 fn EXTI0();
255 fn EXTI1();
256 fn EXTI15_10();
257 fn EXTI2();
258 fn EXTI3();
259 fn EXTI4();
260 fn EXTI9_5();
261 fn FLASH();
262 fn FMC();
263 fn FPU();
264 fn I2C1_ER();
265 fn I2C1_EV();
266 fn I2C2_ER();
267 fn I2C2_EV();
268 fn I2C3_ER();
269 fn I2C3_EV();
270 fn I2C4_ER();
271 fn I2C4_EV();
272 fn LCD();
273 fn LPTIM1();
274 fn LPTIM2();
275 fn LPUART1();
276 fn OTG_FS();
277 fn PVD_PVM();
278 fn QUADSPI();
279 fn RCC();
280 fn RNG();
281 fn RTC_Alarm();
282 fn RTC_WKUP();
283 fn SAI1();
284 fn SAI2();
285 fn SDMMC1();
286 fn SPI1();
287 fn SPI2();
288 fn SPI3();
289 fn SWPMI1();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 91] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1_2 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _handler: ADC3 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: QUADSPI },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: SWPMI1 },
447 Vector { _handler: TSC },
448 Vector { _handler: LCD },
449 Vector { _reserved: 0 },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: CRS },
453 Vector { _handler: I2C4_EV },
454 Vector { _handler: I2C4_ER },
455 Vector { _handler: DCMI },
456 Vector { _handler: CAN2_TX },
457 Vector { _handler: CAN2_RX0 },
458 Vector { _handler: CAN2_RX1 },
459 Vector { _handler: CAN2_SCE },
460 Vector { _handler: DMA2D },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l496re.rs b/embassy-stm32/src/chip/stm32l496re.rs
index 5200ecd80..e54e0774d 100644
--- a/embassy-stm32/src/chip/stm32l496re.rs
+++ b/embassy-stm32/src/chip/stm32l496re.rs
@@ -1,12 +1,12 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI,
5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, 5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, 6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3,
7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, 7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5,
8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, 8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7,
9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 CAN2_RX0 = 87,
38 CAN2_RX1 = 88,
39 CAN2_SCE = 89,
40 CAN2_TX = 86,
41 COMP = 64,
42 CRS = 82,
43 DCMI = 85,
44 DFSDM1_FLT0 = 61,
45 DFSDM1_FLT1 = 62,
46 DFSDM1_FLT2 = 63,
47 DFSDM1_FLT3 = 42,
48 DMA1_Channel1 = 11,
49 DMA1_Channel2 = 12,
50 DMA1_Channel3 = 13,
51 DMA1_Channel4 = 14,
52 DMA1_Channel5 = 15,
53 DMA1_Channel6 = 16,
54 DMA1_Channel7 = 17,
55 DMA2D = 90,
56 DMA2_Channel1 = 56,
57 DMA2_Channel2 = 57,
58 DMA2_Channel3 = 58,
59 DMA2_Channel4 = 59,
60 DMA2_Channel5 = 60,
61 DMA2_Channel6 = 68,
62 DMA2_Channel7 = 69,
63 EXTI0 = 6,
64 EXTI1 = 7,
65 EXTI15_10 = 40,
66 EXTI2 = 8,
67 EXTI3 = 9,
68 EXTI4 = 10,
69 EXTI9_5 = 23,
70 FLASH = 4,
71 FMC = 48,
72 FPU = 81,
73 I2C1_ER = 32,
74 I2C1_EV = 31,
75 I2C2_ER = 34,
76 I2C2_EV = 33,
77 I2C3_ER = 73,
78 I2C3_EV = 72,
79 I2C4_ER = 84,
80 I2C4_EV = 83,
81 LCD = 78,
82 LPTIM1 = 65,
83 LPTIM2 = 66,
84 LPUART1 = 70,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 QUADSPI = 71,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 SWPMI1 = 76,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1_2);
130 declare!(ADC3);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(CAN2_RX0);
136 declare!(CAN2_RX1);
137 declare!(CAN2_SCE);
138 declare!(CAN2_TX);
139 declare!(COMP);
140 declare!(CRS);
141 declare!(DCMI);
142 declare!(DFSDM1_FLT0);
143 declare!(DFSDM1_FLT1);
144 declare!(DFSDM1_FLT2);
145 declare!(DFSDM1_FLT3);
146 declare!(DMA1_Channel1);
147 declare!(DMA1_Channel2);
148 declare!(DMA1_Channel3);
149 declare!(DMA1_Channel4);
150 declare!(DMA1_Channel5);
151 declare!(DMA1_Channel6);
152 declare!(DMA1_Channel7);
153 declare!(DMA2D);
154 declare!(DMA2_Channel1);
155 declare!(DMA2_Channel2);
156 declare!(DMA2_Channel3);
157 declare!(DMA2_Channel4);
158 declare!(DMA2_Channel5);
159 declare!(DMA2_Channel6);
160 declare!(DMA2_Channel7);
161 declare!(EXTI0);
162 declare!(EXTI1);
163 declare!(EXTI15_10);
164 declare!(EXTI2);
165 declare!(EXTI3);
166 declare!(EXTI4);
167 declare!(EXTI9_5);
168 declare!(FLASH);
169 declare!(FMC);
170 declare!(FPU);
171 declare!(I2C1_ER);
172 declare!(I2C1_EV);
173 declare!(I2C2_ER);
174 declare!(I2C2_EV);
175 declare!(I2C3_ER);
176 declare!(I2C3_EV);
177 declare!(I2C4_ER);
178 declare!(I2C4_EV);
179 declare!(LCD);
180 declare!(LPTIM1);
181 declare!(LPTIM2);
182 declare!(LPUART1);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(QUADSPI);
186 declare!(RCC);
187 declare!(RNG);
188 declare!(RTC_Alarm);
189 declare!(RTC_WKUP);
190 declare!(SAI1);
191 declare!(SAI2);
192 declare!(SDMMC1);
193 declare!(SPI1);
194 declare!(SPI2);
195 declare!(SPI3);
196 declare!(SWPMI1);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1_2();
223 fn ADC3();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn CAN2_RX0();
229 fn CAN2_RX1();
230 fn CAN2_SCE();
231 fn CAN2_TX();
232 fn COMP();
233 fn CRS();
234 fn DCMI();
235 fn DFSDM1_FLT0();
236 fn DFSDM1_FLT1();
237 fn DFSDM1_FLT2();
238 fn DFSDM1_FLT3();
239 fn DMA1_Channel1();
240 fn DMA1_Channel2();
241 fn DMA1_Channel3();
242 fn DMA1_Channel4();
243 fn DMA1_Channel5();
244 fn DMA1_Channel6();
245 fn DMA1_Channel7();
246 fn DMA2D();
247 fn DMA2_Channel1();
248 fn DMA2_Channel2();
249 fn DMA2_Channel3();
250 fn DMA2_Channel4();
251 fn DMA2_Channel5();
252 fn DMA2_Channel6();
253 fn DMA2_Channel7();
254 fn EXTI0();
255 fn EXTI1();
256 fn EXTI15_10();
257 fn EXTI2();
258 fn EXTI3();
259 fn EXTI4();
260 fn EXTI9_5();
261 fn FLASH();
262 fn FMC();
263 fn FPU();
264 fn I2C1_ER();
265 fn I2C1_EV();
266 fn I2C2_ER();
267 fn I2C2_EV();
268 fn I2C3_ER();
269 fn I2C3_EV();
270 fn I2C4_ER();
271 fn I2C4_EV();
272 fn LCD();
273 fn LPTIM1();
274 fn LPTIM2();
275 fn LPUART1();
276 fn OTG_FS();
277 fn PVD_PVM();
278 fn QUADSPI();
279 fn RCC();
280 fn RNG();
281 fn RTC_Alarm();
282 fn RTC_WKUP();
283 fn SAI1();
284 fn SAI2();
285 fn SDMMC1();
286 fn SPI1();
287 fn SPI2();
288 fn SPI3();
289 fn SWPMI1();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 91] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1_2 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _handler: ADC3 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: QUADSPI },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: SWPMI1 },
447 Vector { _handler: TSC },
448 Vector { _handler: LCD },
449 Vector { _reserved: 0 },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: CRS },
453 Vector { _handler: I2C4_EV },
454 Vector { _handler: I2C4_ER },
455 Vector { _handler: DCMI },
456 Vector { _handler: CAN2_TX },
457 Vector { _handler: CAN2_RX0 },
458 Vector { _handler: CAN2_RX1 },
459 Vector { _handler: CAN2_SCE },
460 Vector { _handler: DMA2D },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l496rg.rs b/embassy-stm32/src/chip/stm32l496rg.rs
index 5200ecd80..e54e0774d 100644
--- a/embassy-stm32/src/chip/stm32l496rg.rs
+++ b/embassy-stm32/src/chip/stm32l496rg.rs
@@ -1,12 +1,12 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI,
5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, 5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, 6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3,
7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, 7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5,
8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, 8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7,
9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 CAN2_RX0 = 87,
38 CAN2_RX1 = 88,
39 CAN2_SCE = 89,
40 CAN2_TX = 86,
41 COMP = 64,
42 CRS = 82,
43 DCMI = 85,
44 DFSDM1_FLT0 = 61,
45 DFSDM1_FLT1 = 62,
46 DFSDM1_FLT2 = 63,
47 DFSDM1_FLT3 = 42,
48 DMA1_Channel1 = 11,
49 DMA1_Channel2 = 12,
50 DMA1_Channel3 = 13,
51 DMA1_Channel4 = 14,
52 DMA1_Channel5 = 15,
53 DMA1_Channel6 = 16,
54 DMA1_Channel7 = 17,
55 DMA2D = 90,
56 DMA2_Channel1 = 56,
57 DMA2_Channel2 = 57,
58 DMA2_Channel3 = 58,
59 DMA2_Channel4 = 59,
60 DMA2_Channel5 = 60,
61 DMA2_Channel6 = 68,
62 DMA2_Channel7 = 69,
63 EXTI0 = 6,
64 EXTI1 = 7,
65 EXTI15_10 = 40,
66 EXTI2 = 8,
67 EXTI3 = 9,
68 EXTI4 = 10,
69 EXTI9_5 = 23,
70 FLASH = 4,
71 FMC = 48,
72 FPU = 81,
73 I2C1_ER = 32,
74 I2C1_EV = 31,
75 I2C2_ER = 34,
76 I2C2_EV = 33,
77 I2C3_ER = 73,
78 I2C3_EV = 72,
79 I2C4_ER = 84,
80 I2C4_EV = 83,
81 LCD = 78,
82 LPTIM1 = 65,
83 LPTIM2 = 66,
84 LPUART1 = 70,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 QUADSPI = 71,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 SWPMI1 = 76,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1_2);
130 declare!(ADC3);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(CAN2_RX0);
136 declare!(CAN2_RX1);
137 declare!(CAN2_SCE);
138 declare!(CAN2_TX);
139 declare!(COMP);
140 declare!(CRS);
141 declare!(DCMI);
142 declare!(DFSDM1_FLT0);
143 declare!(DFSDM1_FLT1);
144 declare!(DFSDM1_FLT2);
145 declare!(DFSDM1_FLT3);
146 declare!(DMA1_Channel1);
147 declare!(DMA1_Channel2);
148 declare!(DMA1_Channel3);
149 declare!(DMA1_Channel4);
150 declare!(DMA1_Channel5);
151 declare!(DMA1_Channel6);
152 declare!(DMA1_Channel7);
153 declare!(DMA2D);
154 declare!(DMA2_Channel1);
155 declare!(DMA2_Channel2);
156 declare!(DMA2_Channel3);
157 declare!(DMA2_Channel4);
158 declare!(DMA2_Channel5);
159 declare!(DMA2_Channel6);
160 declare!(DMA2_Channel7);
161 declare!(EXTI0);
162 declare!(EXTI1);
163 declare!(EXTI15_10);
164 declare!(EXTI2);
165 declare!(EXTI3);
166 declare!(EXTI4);
167 declare!(EXTI9_5);
168 declare!(FLASH);
169 declare!(FMC);
170 declare!(FPU);
171 declare!(I2C1_ER);
172 declare!(I2C1_EV);
173 declare!(I2C2_ER);
174 declare!(I2C2_EV);
175 declare!(I2C3_ER);
176 declare!(I2C3_EV);
177 declare!(I2C4_ER);
178 declare!(I2C4_EV);
179 declare!(LCD);
180 declare!(LPTIM1);
181 declare!(LPTIM2);
182 declare!(LPUART1);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(QUADSPI);
186 declare!(RCC);
187 declare!(RNG);
188 declare!(RTC_Alarm);
189 declare!(RTC_WKUP);
190 declare!(SAI1);
191 declare!(SAI2);
192 declare!(SDMMC1);
193 declare!(SPI1);
194 declare!(SPI2);
195 declare!(SPI3);
196 declare!(SWPMI1);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1_2();
223 fn ADC3();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn CAN2_RX0();
229 fn CAN2_RX1();
230 fn CAN2_SCE();
231 fn CAN2_TX();
232 fn COMP();
233 fn CRS();
234 fn DCMI();
235 fn DFSDM1_FLT0();
236 fn DFSDM1_FLT1();
237 fn DFSDM1_FLT2();
238 fn DFSDM1_FLT3();
239 fn DMA1_Channel1();
240 fn DMA1_Channel2();
241 fn DMA1_Channel3();
242 fn DMA1_Channel4();
243 fn DMA1_Channel5();
244 fn DMA1_Channel6();
245 fn DMA1_Channel7();
246 fn DMA2D();
247 fn DMA2_Channel1();
248 fn DMA2_Channel2();
249 fn DMA2_Channel3();
250 fn DMA2_Channel4();
251 fn DMA2_Channel5();
252 fn DMA2_Channel6();
253 fn DMA2_Channel7();
254 fn EXTI0();
255 fn EXTI1();
256 fn EXTI15_10();
257 fn EXTI2();
258 fn EXTI3();
259 fn EXTI4();
260 fn EXTI9_5();
261 fn FLASH();
262 fn FMC();
263 fn FPU();
264 fn I2C1_ER();
265 fn I2C1_EV();
266 fn I2C2_ER();
267 fn I2C2_EV();
268 fn I2C3_ER();
269 fn I2C3_EV();
270 fn I2C4_ER();
271 fn I2C4_EV();
272 fn LCD();
273 fn LPTIM1();
274 fn LPTIM2();
275 fn LPUART1();
276 fn OTG_FS();
277 fn PVD_PVM();
278 fn QUADSPI();
279 fn RCC();
280 fn RNG();
281 fn RTC_Alarm();
282 fn RTC_WKUP();
283 fn SAI1();
284 fn SAI2();
285 fn SDMMC1();
286 fn SPI1();
287 fn SPI2();
288 fn SPI3();
289 fn SWPMI1();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 91] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1_2 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _handler: ADC3 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: QUADSPI },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: SWPMI1 },
447 Vector { _handler: TSC },
448 Vector { _handler: LCD },
449 Vector { _reserved: 0 },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: CRS },
453 Vector { _handler: I2C4_EV },
454 Vector { _handler: I2C4_ER },
455 Vector { _handler: DCMI },
456 Vector { _handler: CAN2_TX },
457 Vector { _handler: CAN2_RX0 },
458 Vector { _handler: CAN2_RX1 },
459 Vector { _handler: CAN2_SCE },
460 Vector { _handler: DMA2D },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l496ve.rs b/embassy-stm32/src/chip/stm32l496ve.rs
index 5200ecd80..e54e0774d 100644
--- a/embassy-stm32/src/chip/stm32l496ve.rs
+++ b/embassy-stm32/src/chip/stm32l496ve.rs
@@ -1,12 +1,12 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI,
5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, 5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, 6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3,
7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, 7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5,
8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, 8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7,
9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 CAN2_RX0 = 87,
38 CAN2_RX1 = 88,
39 CAN2_SCE = 89,
40 CAN2_TX = 86,
41 COMP = 64,
42 CRS = 82,
43 DCMI = 85,
44 DFSDM1_FLT0 = 61,
45 DFSDM1_FLT1 = 62,
46 DFSDM1_FLT2 = 63,
47 DFSDM1_FLT3 = 42,
48 DMA1_Channel1 = 11,
49 DMA1_Channel2 = 12,
50 DMA1_Channel3 = 13,
51 DMA1_Channel4 = 14,
52 DMA1_Channel5 = 15,
53 DMA1_Channel6 = 16,
54 DMA1_Channel7 = 17,
55 DMA2D = 90,
56 DMA2_Channel1 = 56,
57 DMA2_Channel2 = 57,
58 DMA2_Channel3 = 58,
59 DMA2_Channel4 = 59,
60 DMA2_Channel5 = 60,
61 DMA2_Channel6 = 68,
62 DMA2_Channel7 = 69,
63 EXTI0 = 6,
64 EXTI1 = 7,
65 EXTI15_10 = 40,
66 EXTI2 = 8,
67 EXTI3 = 9,
68 EXTI4 = 10,
69 EXTI9_5 = 23,
70 FLASH = 4,
71 FMC = 48,
72 FPU = 81,
73 I2C1_ER = 32,
74 I2C1_EV = 31,
75 I2C2_ER = 34,
76 I2C2_EV = 33,
77 I2C3_ER = 73,
78 I2C3_EV = 72,
79 I2C4_ER = 84,
80 I2C4_EV = 83,
81 LCD = 78,
82 LPTIM1 = 65,
83 LPTIM2 = 66,
84 LPUART1 = 70,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 QUADSPI = 71,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 SWPMI1 = 76,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1_2);
130 declare!(ADC3);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(CAN2_RX0);
136 declare!(CAN2_RX1);
137 declare!(CAN2_SCE);
138 declare!(CAN2_TX);
139 declare!(COMP);
140 declare!(CRS);
141 declare!(DCMI);
142 declare!(DFSDM1_FLT0);
143 declare!(DFSDM1_FLT1);
144 declare!(DFSDM1_FLT2);
145 declare!(DFSDM1_FLT3);
146 declare!(DMA1_Channel1);
147 declare!(DMA1_Channel2);
148 declare!(DMA1_Channel3);
149 declare!(DMA1_Channel4);
150 declare!(DMA1_Channel5);
151 declare!(DMA1_Channel6);
152 declare!(DMA1_Channel7);
153 declare!(DMA2D);
154 declare!(DMA2_Channel1);
155 declare!(DMA2_Channel2);
156 declare!(DMA2_Channel3);
157 declare!(DMA2_Channel4);
158 declare!(DMA2_Channel5);
159 declare!(DMA2_Channel6);
160 declare!(DMA2_Channel7);
161 declare!(EXTI0);
162 declare!(EXTI1);
163 declare!(EXTI15_10);
164 declare!(EXTI2);
165 declare!(EXTI3);
166 declare!(EXTI4);
167 declare!(EXTI9_5);
168 declare!(FLASH);
169 declare!(FMC);
170 declare!(FPU);
171 declare!(I2C1_ER);
172 declare!(I2C1_EV);
173 declare!(I2C2_ER);
174 declare!(I2C2_EV);
175 declare!(I2C3_ER);
176 declare!(I2C3_EV);
177 declare!(I2C4_ER);
178 declare!(I2C4_EV);
179 declare!(LCD);
180 declare!(LPTIM1);
181 declare!(LPTIM2);
182 declare!(LPUART1);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(QUADSPI);
186 declare!(RCC);
187 declare!(RNG);
188 declare!(RTC_Alarm);
189 declare!(RTC_WKUP);
190 declare!(SAI1);
191 declare!(SAI2);
192 declare!(SDMMC1);
193 declare!(SPI1);
194 declare!(SPI2);
195 declare!(SPI3);
196 declare!(SWPMI1);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1_2();
223 fn ADC3();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn CAN2_RX0();
229 fn CAN2_RX1();
230 fn CAN2_SCE();
231 fn CAN2_TX();
232 fn COMP();
233 fn CRS();
234 fn DCMI();
235 fn DFSDM1_FLT0();
236 fn DFSDM1_FLT1();
237 fn DFSDM1_FLT2();
238 fn DFSDM1_FLT3();
239 fn DMA1_Channel1();
240 fn DMA1_Channel2();
241 fn DMA1_Channel3();
242 fn DMA1_Channel4();
243 fn DMA1_Channel5();
244 fn DMA1_Channel6();
245 fn DMA1_Channel7();
246 fn DMA2D();
247 fn DMA2_Channel1();
248 fn DMA2_Channel2();
249 fn DMA2_Channel3();
250 fn DMA2_Channel4();
251 fn DMA2_Channel5();
252 fn DMA2_Channel6();
253 fn DMA2_Channel7();
254 fn EXTI0();
255 fn EXTI1();
256 fn EXTI15_10();
257 fn EXTI2();
258 fn EXTI3();
259 fn EXTI4();
260 fn EXTI9_5();
261 fn FLASH();
262 fn FMC();
263 fn FPU();
264 fn I2C1_ER();
265 fn I2C1_EV();
266 fn I2C2_ER();
267 fn I2C2_EV();
268 fn I2C3_ER();
269 fn I2C3_EV();
270 fn I2C4_ER();
271 fn I2C4_EV();
272 fn LCD();
273 fn LPTIM1();
274 fn LPTIM2();
275 fn LPUART1();
276 fn OTG_FS();
277 fn PVD_PVM();
278 fn QUADSPI();
279 fn RCC();
280 fn RNG();
281 fn RTC_Alarm();
282 fn RTC_WKUP();
283 fn SAI1();
284 fn SAI2();
285 fn SDMMC1();
286 fn SPI1();
287 fn SPI2();
288 fn SPI3();
289 fn SWPMI1();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 91] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1_2 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _handler: ADC3 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: QUADSPI },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: SWPMI1 },
447 Vector { _handler: TSC },
448 Vector { _handler: LCD },
449 Vector { _reserved: 0 },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: CRS },
453 Vector { _handler: I2C4_EV },
454 Vector { _handler: I2C4_ER },
455 Vector { _handler: DCMI },
456 Vector { _handler: CAN2_TX },
457 Vector { _handler: CAN2_RX0 },
458 Vector { _handler: CAN2_RX1 },
459 Vector { _handler: CAN2_SCE },
460 Vector { _handler: DMA2D },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l496vg.rs b/embassy-stm32/src/chip/stm32l496vg.rs
index 5200ecd80..e54e0774d 100644
--- a/embassy-stm32/src/chip/stm32l496vg.rs
+++ b/embassy-stm32/src/chip/stm32l496vg.rs
@@ -1,12 +1,12 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI,
5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, 5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, 6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3,
7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, 7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5,
8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, 8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7,
9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 CAN2_RX0 = 87,
38 CAN2_RX1 = 88,
39 CAN2_SCE = 89,
40 CAN2_TX = 86,
41 COMP = 64,
42 CRS = 82,
43 DCMI = 85,
44 DFSDM1_FLT0 = 61,
45 DFSDM1_FLT1 = 62,
46 DFSDM1_FLT2 = 63,
47 DFSDM1_FLT3 = 42,
48 DMA1_Channel1 = 11,
49 DMA1_Channel2 = 12,
50 DMA1_Channel3 = 13,
51 DMA1_Channel4 = 14,
52 DMA1_Channel5 = 15,
53 DMA1_Channel6 = 16,
54 DMA1_Channel7 = 17,
55 DMA2D = 90,
56 DMA2_Channel1 = 56,
57 DMA2_Channel2 = 57,
58 DMA2_Channel3 = 58,
59 DMA2_Channel4 = 59,
60 DMA2_Channel5 = 60,
61 DMA2_Channel6 = 68,
62 DMA2_Channel7 = 69,
63 EXTI0 = 6,
64 EXTI1 = 7,
65 EXTI15_10 = 40,
66 EXTI2 = 8,
67 EXTI3 = 9,
68 EXTI4 = 10,
69 EXTI9_5 = 23,
70 FLASH = 4,
71 FMC = 48,
72 FPU = 81,
73 I2C1_ER = 32,
74 I2C1_EV = 31,
75 I2C2_ER = 34,
76 I2C2_EV = 33,
77 I2C3_ER = 73,
78 I2C3_EV = 72,
79 I2C4_ER = 84,
80 I2C4_EV = 83,
81 LCD = 78,
82 LPTIM1 = 65,
83 LPTIM2 = 66,
84 LPUART1 = 70,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 QUADSPI = 71,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 SWPMI1 = 76,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1_2);
130 declare!(ADC3);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(CAN2_RX0);
136 declare!(CAN2_RX1);
137 declare!(CAN2_SCE);
138 declare!(CAN2_TX);
139 declare!(COMP);
140 declare!(CRS);
141 declare!(DCMI);
142 declare!(DFSDM1_FLT0);
143 declare!(DFSDM1_FLT1);
144 declare!(DFSDM1_FLT2);
145 declare!(DFSDM1_FLT3);
146 declare!(DMA1_Channel1);
147 declare!(DMA1_Channel2);
148 declare!(DMA1_Channel3);
149 declare!(DMA1_Channel4);
150 declare!(DMA1_Channel5);
151 declare!(DMA1_Channel6);
152 declare!(DMA1_Channel7);
153 declare!(DMA2D);
154 declare!(DMA2_Channel1);
155 declare!(DMA2_Channel2);
156 declare!(DMA2_Channel3);
157 declare!(DMA2_Channel4);
158 declare!(DMA2_Channel5);
159 declare!(DMA2_Channel6);
160 declare!(DMA2_Channel7);
161 declare!(EXTI0);
162 declare!(EXTI1);
163 declare!(EXTI15_10);
164 declare!(EXTI2);
165 declare!(EXTI3);
166 declare!(EXTI4);
167 declare!(EXTI9_5);
168 declare!(FLASH);
169 declare!(FMC);
170 declare!(FPU);
171 declare!(I2C1_ER);
172 declare!(I2C1_EV);
173 declare!(I2C2_ER);
174 declare!(I2C2_EV);
175 declare!(I2C3_ER);
176 declare!(I2C3_EV);
177 declare!(I2C4_ER);
178 declare!(I2C4_EV);
179 declare!(LCD);
180 declare!(LPTIM1);
181 declare!(LPTIM2);
182 declare!(LPUART1);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(QUADSPI);
186 declare!(RCC);
187 declare!(RNG);
188 declare!(RTC_Alarm);
189 declare!(RTC_WKUP);
190 declare!(SAI1);
191 declare!(SAI2);
192 declare!(SDMMC1);
193 declare!(SPI1);
194 declare!(SPI2);
195 declare!(SPI3);
196 declare!(SWPMI1);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1_2();
223 fn ADC3();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn CAN2_RX0();
229 fn CAN2_RX1();
230 fn CAN2_SCE();
231 fn CAN2_TX();
232 fn COMP();
233 fn CRS();
234 fn DCMI();
235 fn DFSDM1_FLT0();
236 fn DFSDM1_FLT1();
237 fn DFSDM1_FLT2();
238 fn DFSDM1_FLT3();
239 fn DMA1_Channel1();
240 fn DMA1_Channel2();
241 fn DMA1_Channel3();
242 fn DMA1_Channel4();
243 fn DMA1_Channel5();
244 fn DMA1_Channel6();
245 fn DMA1_Channel7();
246 fn DMA2D();
247 fn DMA2_Channel1();
248 fn DMA2_Channel2();
249 fn DMA2_Channel3();
250 fn DMA2_Channel4();
251 fn DMA2_Channel5();
252 fn DMA2_Channel6();
253 fn DMA2_Channel7();
254 fn EXTI0();
255 fn EXTI1();
256 fn EXTI15_10();
257 fn EXTI2();
258 fn EXTI3();
259 fn EXTI4();
260 fn EXTI9_5();
261 fn FLASH();
262 fn FMC();
263 fn FPU();
264 fn I2C1_ER();
265 fn I2C1_EV();
266 fn I2C2_ER();
267 fn I2C2_EV();
268 fn I2C3_ER();
269 fn I2C3_EV();
270 fn I2C4_ER();
271 fn I2C4_EV();
272 fn LCD();
273 fn LPTIM1();
274 fn LPTIM2();
275 fn LPUART1();
276 fn OTG_FS();
277 fn PVD_PVM();
278 fn QUADSPI();
279 fn RCC();
280 fn RNG();
281 fn RTC_Alarm();
282 fn RTC_WKUP();
283 fn SAI1();
284 fn SAI2();
285 fn SDMMC1();
286 fn SPI1();
287 fn SPI2();
288 fn SPI3();
289 fn SWPMI1();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 91] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1_2 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _handler: ADC3 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: QUADSPI },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: SWPMI1 },
447 Vector { _handler: TSC },
448 Vector { _handler: LCD },
449 Vector { _reserved: 0 },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: CRS },
453 Vector { _handler: I2C4_EV },
454 Vector { _handler: I2C4_ER },
455 Vector { _handler: DCMI },
456 Vector { _handler: CAN2_TX },
457 Vector { _handler: CAN2_RX0 },
458 Vector { _handler: CAN2_RX1 },
459 Vector { _handler: CAN2_SCE },
460 Vector { _handler: DMA2D },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l496wg.rs b/embassy-stm32/src/chip/stm32l496wg.rs
index 5200ecd80..e54e0774d 100644
--- a/embassy-stm32/src/chip/stm32l496wg.rs
+++ b/embassy-stm32/src/chip/stm32l496wg.rs
@@ -1,12 +1,12 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI,
5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, 5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, 6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3,
7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, 7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5,
8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, 8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7,
9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 CAN2_RX0 = 87,
38 CAN2_RX1 = 88,
39 CAN2_SCE = 89,
40 CAN2_TX = 86,
41 COMP = 64,
42 CRS = 82,
43 DCMI = 85,
44 DFSDM1_FLT0 = 61,
45 DFSDM1_FLT1 = 62,
46 DFSDM1_FLT2 = 63,
47 DFSDM1_FLT3 = 42,
48 DMA1_Channel1 = 11,
49 DMA1_Channel2 = 12,
50 DMA1_Channel3 = 13,
51 DMA1_Channel4 = 14,
52 DMA1_Channel5 = 15,
53 DMA1_Channel6 = 16,
54 DMA1_Channel7 = 17,
55 DMA2D = 90,
56 DMA2_Channel1 = 56,
57 DMA2_Channel2 = 57,
58 DMA2_Channel3 = 58,
59 DMA2_Channel4 = 59,
60 DMA2_Channel5 = 60,
61 DMA2_Channel6 = 68,
62 DMA2_Channel7 = 69,
63 EXTI0 = 6,
64 EXTI1 = 7,
65 EXTI15_10 = 40,
66 EXTI2 = 8,
67 EXTI3 = 9,
68 EXTI4 = 10,
69 EXTI9_5 = 23,
70 FLASH = 4,
71 FMC = 48,
72 FPU = 81,
73 I2C1_ER = 32,
74 I2C1_EV = 31,
75 I2C2_ER = 34,
76 I2C2_EV = 33,
77 I2C3_ER = 73,
78 I2C3_EV = 72,
79 I2C4_ER = 84,
80 I2C4_EV = 83,
81 LCD = 78,
82 LPTIM1 = 65,
83 LPTIM2 = 66,
84 LPUART1 = 70,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 QUADSPI = 71,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 SWPMI1 = 76,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1_2);
130 declare!(ADC3);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(CAN2_RX0);
136 declare!(CAN2_RX1);
137 declare!(CAN2_SCE);
138 declare!(CAN2_TX);
139 declare!(COMP);
140 declare!(CRS);
141 declare!(DCMI);
142 declare!(DFSDM1_FLT0);
143 declare!(DFSDM1_FLT1);
144 declare!(DFSDM1_FLT2);
145 declare!(DFSDM1_FLT3);
146 declare!(DMA1_Channel1);
147 declare!(DMA1_Channel2);
148 declare!(DMA1_Channel3);
149 declare!(DMA1_Channel4);
150 declare!(DMA1_Channel5);
151 declare!(DMA1_Channel6);
152 declare!(DMA1_Channel7);
153 declare!(DMA2D);
154 declare!(DMA2_Channel1);
155 declare!(DMA2_Channel2);
156 declare!(DMA2_Channel3);
157 declare!(DMA2_Channel4);
158 declare!(DMA2_Channel5);
159 declare!(DMA2_Channel6);
160 declare!(DMA2_Channel7);
161 declare!(EXTI0);
162 declare!(EXTI1);
163 declare!(EXTI15_10);
164 declare!(EXTI2);
165 declare!(EXTI3);
166 declare!(EXTI4);
167 declare!(EXTI9_5);
168 declare!(FLASH);
169 declare!(FMC);
170 declare!(FPU);
171 declare!(I2C1_ER);
172 declare!(I2C1_EV);
173 declare!(I2C2_ER);
174 declare!(I2C2_EV);
175 declare!(I2C3_ER);
176 declare!(I2C3_EV);
177 declare!(I2C4_ER);
178 declare!(I2C4_EV);
179 declare!(LCD);
180 declare!(LPTIM1);
181 declare!(LPTIM2);
182 declare!(LPUART1);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(QUADSPI);
186 declare!(RCC);
187 declare!(RNG);
188 declare!(RTC_Alarm);
189 declare!(RTC_WKUP);
190 declare!(SAI1);
191 declare!(SAI2);
192 declare!(SDMMC1);
193 declare!(SPI1);
194 declare!(SPI2);
195 declare!(SPI3);
196 declare!(SWPMI1);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1_2();
223 fn ADC3();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn CAN2_RX0();
229 fn CAN2_RX1();
230 fn CAN2_SCE();
231 fn CAN2_TX();
232 fn COMP();
233 fn CRS();
234 fn DCMI();
235 fn DFSDM1_FLT0();
236 fn DFSDM1_FLT1();
237 fn DFSDM1_FLT2();
238 fn DFSDM1_FLT3();
239 fn DMA1_Channel1();
240 fn DMA1_Channel2();
241 fn DMA1_Channel3();
242 fn DMA1_Channel4();
243 fn DMA1_Channel5();
244 fn DMA1_Channel6();
245 fn DMA1_Channel7();
246 fn DMA2D();
247 fn DMA2_Channel1();
248 fn DMA2_Channel2();
249 fn DMA2_Channel3();
250 fn DMA2_Channel4();
251 fn DMA2_Channel5();
252 fn DMA2_Channel6();
253 fn DMA2_Channel7();
254 fn EXTI0();
255 fn EXTI1();
256 fn EXTI15_10();
257 fn EXTI2();
258 fn EXTI3();
259 fn EXTI4();
260 fn EXTI9_5();
261 fn FLASH();
262 fn FMC();
263 fn FPU();
264 fn I2C1_ER();
265 fn I2C1_EV();
266 fn I2C2_ER();
267 fn I2C2_EV();
268 fn I2C3_ER();
269 fn I2C3_EV();
270 fn I2C4_ER();
271 fn I2C4_EV();
272 fn LCD();
273 fn LPTIM1();
274 fn LPTIM2();
275 fn LPUART1();
276 fn OTG_FS();
277 fn PVD_PVM();
278 fn QUADSPI();
279 fn RCC();
280 fn RNG();
281 fn RTC_Alarm();
282 fn RTC_WKUP();
283 fn SAI1();
284 fn SAI2();
285 fn SDMMC1();
286 fn SPI1();
287 fn SPI2();
288 fn SPI3();
289 fn SWPMI1();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 91] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1_2 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _handler: ADC3 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: QUADSPI },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: SWPMI1 },
447 Vector { _handler: TSC },
448 Vector { _handler: LCD },
449 Vector { _reserved: 0 },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: CRS },
453 Vector { _handler: I2C4_EV },
454 Vector { _handler: I2C4_ER },
455 Vector { _handler: DCMI },
456 Vector { _handler: CAN2_TX },
457 Vector { _handler: CAN2_RX0 },
458 Vector { _handler: CAN2_RX1 },
459 Vector { _handler: CAN2_SCE },
460 Vector { _handler: DMA2D },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l496ze.rs b/embassy-stm32/src/chip/stm32l496ze.rs
index 5200ecd80..e54e0774d 100644
--- a/embassy-stm32/src/chip/stm32l496ze.rs
+++ b/embassy-stm32/src/chip/stm32l496ze.rs
@@ -1,12 +1,12 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI,
5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, 5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, 6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3,
7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, 7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5,
8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, 8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7,
9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 CAN2_RX0 = 87,
38 CAN2_RX1 = 88,
39 CAN2_SCE = 89,
40 CAN2_TX = 86,
41 COMP = 64,
42 CRS = 82,
43 DCMI = 85,
44 DFSDM1_FLT0 = 61,
45 DFSDM1_FLT1 = 62,
46 DFSDM1_FLT2 = 63,
47 DFSDM1_FLT3 = 42,
48 DMA1_Channel1 = 11,
49 DMA1_Channel2 = 12,
50 DMA1_Channel3 = 13,
51 DMA1_Channel4 = 14,
52 DMA1_Channel5 = 15,
53 DMA1_Channel6 = 16,
54 DMA1_Channel7 = 17,
55 DMA2D = 90,
56 DMA2_Channel1 = 56,
57 DMA2_Channel2 = 57,
58 DMA2_Channel3 = 58,
59 DMA2_Channel4 = 59,
60 DMA2_Channel5 = 60,
61 DMA2_Channel6 = 68,
62 DMA2_Channel7 = 69,
63 EXTI0 = 6,
64 EXTI1 = 7,
65 EXTI15_10 = 40,
66 EXTI2 = 8,
67 EXTI3 = 9,
68 EXTI4 = 10,
69 EXTI9_5 = 23,
70 FLASH = 4,
71 FMC = 48,
72 FPU = 81,
73 I2C1_ER = 32,
74 I2C1_EV = 31,
75 I2C2_ER = 34,
76 I2C2_EV = 33,
77 I2C3_ER = 73,
78 I2C3_EV = 72,
79 I2C4_ER = 84,
80 I2C4_EV = 83,
81 LCD = 78,
82 LPTIM1 = 65,
83 LPTIM2 = 66,
84 LPUART1 = 70,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 QUADSPI = 71,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 SWPMI1 = 76,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1_2);
130 declare!(ADC3);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(CAN2_RX0);
136 declare!(CAN2_RX1);
137 declare!(CAN2_SCE);
138 declare!(CAN2_TX);
139 declare!(COMP);
140 declare!(CRS);
141 declare!(DCMI);
142 declare!(DFSDM1_FLT0);
143 declare!(DFSDM1_FLT1);
144 declare!(DFSDM1_FLT2);
145 declare!(DFSDM1_FLT3);
146 declare!(DMA1_Channel1);
147 declare!(DMA1_Channel2);
148 declare!(DMA1_Channel3);
149 declare!(DMA1_Channel4);
150 declare!(DMA1_Channel5);
151 declare!(DMA1_Channel6);
152 declare!(DMA1_Channel7);
153 declare!(DMA2D);
154 declare!(DMA2_Channel1);
155 declare!(DMA2_Channel2);
156 declare!(DMA2_Channel3);
157 declare!(DMA2_Channel4);
158 declare!(DMA2_Channel5);
159 declare!(DMA2_Channel6);
160 declare!(DMA2_Channel7);
161 declare!(EXTI0);
162 declare!(EXTI1);
163 declare!(EXTI15_10);
164 declare!(EXTI2);
165 declare!(EXTI3);
166 declare!(EXTI4);
167 declare!(EXTI9_5);
168 declare!(FLASH);
169 declare!(FMC);
170 declare!(FPU);
171 declare!(I2C1_ER);
172 declare!(I2C1_EV);
173 declare!(I2C2_ER);
174 declare!(I2C2_EV);
175 declare!(I2C3_ER);
176 declare!(I2C3_EV);
177 declare!(I2C4_ER);
178 declare!(I2C4_EV);
179 declare!(LCD);
180 declare!(LPTIM1);
181 declare!(LPTIM2);
182 declare!(LPUART1);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(QUADSPI);
186 declare!(RCC);
187 declare!(RNG);
188 declare!(RTC_Alarm);
189 declare!(RTC_WKUP);
190 declare!(SAI1);
191 declare!(SAI2);
192 declare!(SDMMC1);
193 declare!(SPI1);
194 declare!(SPI2);
195 declare!(SPI3);
196 declare!(SWPMI1);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1_2();
223 fn ADC3();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn CAN2_RX0();
229 fn CAN2_RX1();
230 fn CAN2_SCE();
231 fn CAN2_TX();
232 fn COMP();
233 fn CRS();
234 fn DCMI();
235 fn DFSDM1_FLT0();
236 fn DFSDM1_FLT1();
237 fn DFSDM1_FLT2();
238 fn DFSDM1_FLT3();
239 fn DMA1_Channel1();
240 fn DMA1_Channel2();
241 fn DMA1_Channel3();
242 fn DMA1_Channel4();
243 fn DMA1_Channel5();
244 fn DMA1_Channel6();
245 fn DMA1_Channel7();
246 fn DMA2D();
247 fn DMA2_Channel1();
248 fn DMA2_Channel2();
249 fn DMA2_Channel3();
250 fn DMA2_Channel4();
251 fn DMA2_Channel5();
252 fn DMA2_Channel6();
253 fn DMA2_Channel7();
254 fn EXTI0();
255 fn EXTI1();
256 fn EXTI15_10();
257 fn EXTI2();
258 fn EXTI3();
259 fn EXTI4();
260 fn EXTI9_5();
261 fn FLASH();
262 fn FMC();
263 fn FPU();
264 fn I2C1_ER();
265 fn I2C1_EV();
266 fn I2C2_ER();
267 fn I2C2_EV();
268 fn I2C3_ER();
269 fn I2C3_EV();
270 fn I2C4_ER();
271 fn I2C4_EV();
272 fn LCD();
273 fn LPTIM1();
274 fn LPTIM2();
275 fn LPUART1();
276 fn OTG_FS();
277 fn PVD_PVM();
278 fn QUADSPI();
279 fn RCC();
280 fn RNG();
281 fn RTC_Alarm();
282 fn RTC_WKUP();
283 fn SAI1();
284 fn SAI2();
285 fn SDMMC1();
286 fn SPI1();
287 fn SPI2();
288 fn SPI3();
289 fn SWPMI1();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 91] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1_2 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _handler: ADC3 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: QUADSPI },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: SWPMI1 },
447 Vector { _handler: TSC },
448 Vector { _handler: LCD },
449 Vector { _reserved: 0 },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: CRS },
453 Vector { _handler: I2C4_EV },
454 Vector { _handler: I2C4_ER },
455 Vector { _handler: DCMI },
456 Vector { _handler: CAN2_TX },
457 Vector { _handler: CAN2_RX0 },
458 Vector { _handler: CAN2_RX1 },
459 Vector { _handler: CAN2_SCE },
460 Vector { _handler: DMA2D },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l496zg.rs b/embassy-stm32/src/chip/stm32l496zg.rs
index 5200ecd80..e54e0774d 100644
--- a/embassy-stm32/src/chip/stm32l496zg.rs
+++ b/embassy-stm32/src/chip/stm32l496zg.rs
@@ -1,12 +1,12 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI,
5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, 5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1,
6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, 6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3,
7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, 7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5,
8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, 8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7,
9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 CAN2_RX0 = 87,
38 CAN2_RX1 = 88,
39 CAN2_SCE = 89,
40 CAN2_TX = 86,
41 COMP = 64,
42 CRS = 82,
43 DCMI = 85,
44 DFSDM1_FLT0 = 61,
45 DFSDM1_FLT1 = 62,
46 DFSDM1_FLT2 = 63,
47 DFSDM1_FLT3 = 42,
48 DMA1_Channel1 = 11,
49 DMA1_Channel2 = 12,
50 DMA1_Channel3 = 13,
51 DMA1_Channel4 = 14,
52 DMA1_Channel5 = 15,
53 DMA1_Channel6 = 16,
54 DMA1_Channel7 = 17,
55 DMA2D = 90,
56 DMA2_Channel1 = 56,
57 DMA2_Channel2 = 57,
58 DMA2_Channel3 = 58,
59 DMA2_Channel4 = 59,
60 DMA2_Channel5 = 60,
61 DMA2_Channel6 = 68,
62 DMA2_Channel7 = 69,
63 EXTI0 = 6,
64 EXTI1 = 7,
65 EXTI15_10 = 40,
66 EXTI2 = 8,
67 EXTI3 = 9,
68 EXTI4 = 10,
69 EXTI9_5 = 23,
70 FLASH = 4,
71 FMC = 48,
72 FPU = 81,
73 I2C1_ER = 32,
74 I2C1_EV = 31,
75 I2C2_ER = 34,
76 I2C2_EV = 33,
77 I2C3_ER = 73,
78 I2C3_EV = 72,
79 I2C4_ER = 84,
80 I2C4_EV = 83,
81 LCD = 78,
82 LPTIM1 = 65,
83 LPTIM2 = 66,
84 LPUART1 = 70,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 QUADSPI = 71,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 SWPMI1 = 76,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1_2);
130 declare!(ADC3);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(CAN2_RX0);
136 declare!(CAN2_RX1);
137 declare!(CAN2_SCE);
138 declare!(CAN2_TX);
139 declare!(COMP);
140 declare!(CRS);
141 declare!(DCMI);
142 declare!(DFSDM1_FLT0);
143 declare!(DFSDM1_FLT1);
144 declare!(DFSDM1_FLT2);
145 declare!(DFSDM1_FLT3);
146 declare!(DMA1_Channel1);
147 declare!(DMA1_Channel2);
148 declare!(DMA1_Channel3);
149 declare!(DMA1_Channel4);
150 declare!(DMA1_Channel5);
151 declare!(DMA1_Channel6);
152 declare!(DMA1_Channel7);
153 declare!(DMA2D);
154 declare!(DMA2_Channel1);
155 declare!(DMA2_Channel2);
156 declare!(DMA2_Channel3);
157 declare!(DMA2_Channel4);
158 declare!(DMA2_Channel5);
159 declare!(DMA2_Channel6);
160 declare!(DMA2_Channel7);
161 declare!(EXTI0);
162 declare!(EXTI1);
163 declare!(EXTI15_10);
164 declare!(EXTI2);
165 declare!(EXTI3);
166 declare!(EXTI4);
167 declare!(EXTI9_5);
168 declare!(FLASH);
169 declare!(FMC);
170 declare!(FPU);
171 declare!(I2C1_ER);
172 declare!(I2C1_EV);
173 declare!(I2C2_ER);
174 declare!(I2C2_EV);
175 declare!(I2C3_ER);
176 declare!(I2C3_EV);
177 declare!(I2C4_ER);
178 declare!(I2C4_EV);
179 declare!(LCD);
180 declare!(LPTIM1);
181 declare!(LPTIM2);
182 declare!(LPUART1);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(QUADSPI);
186 declare!(RCC);
187 declare!(RNG);
188 declare!(RTC_Alarm);
189 declare!(RTC_WKUP);
190 declare!(SAI1);
191 declare!(SAI2);
192 declare!(SDMMC1);
193 declare!(SPI1);
194 declare!(SPI2);
195 declare!(SPI3);
196 declare!(SWPMI1);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1_2();
223 fn ADC3();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn CAN2_RX0();
229 fn CAN2_RX1();
230 fn CAN2_SCE();
231 fn CAN2_TX();
232 fn COMP();
233 fn CRS();
234 fn DCMI();
235 fn DFSDM1_FLT0();
236 fn DFSDM1_FLT1();
237 fn DFSDM1_FLT2();
238 fn DFSDM1_FLT3();
239 fn DMA1_Channel1();
240 fn DMA1_Channel2();
241 fn DMA1_Channel3();
242 fn DMA1_Channel4();
243 fn DMA1_Channel5();
244 fn DMA1_Channel6();
245 fn DMA1_Channel7();
246 fn DMA2D();
247 fn DMA2_Channel1();
248 fn DMA2_Channel2();
249 fn DMA2_Channel3();
250 fn DMA2_Channel4();
251 fn DMA2_Channel5();
252 fn DMA2_Channel6();
253 fn DMA2_Channel7();
254 fn EXTI0();
255 fn EXTI1();
256 fn EXTI15_10();
257 fn EXTI2();
258 fn EXTI3();
259 fn EXTI4();
260 fn EXTI9_5();
261 fn FLASH();
262 fn FMC();
263 fn FPU();
264 fn I2C1_ER();
265 fn I2C1_EV();
266 fn I2C2_ER();
267 fn I2C2_EV();
268 fn I2C3_ER();
269 fn I2C3_EV();
270 fn I2C4_ER();
271 fn I2C4_EV();
272 fn LCD();
273 fn LPTIM1();
274 fn LPTIM2();
275 fn LPUART1();
276 fn OTG_FS();
277 fn PVD_PVM();
278 fn QUADSPI();
279 fn RCC();
280 fn RNG();
281 fn RTC_Alarm();
282 fn RTC_WKUP();
283 fn SAI1();
284 fn SAI2();
285 fn SDMMC1();
286 fn SPI1();
287 fn SPI2();
288 fn SPI3();
289 fn SWPMI1();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 91] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1_2 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _handler: ADC3 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: QUADSPI },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: SWPMI1 },
447 Vector { _handler: TSC },
448 Vector { _handler: LCD },
449 Vector { _reserved: 0 },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: CRS },
453 Vector { _handler: I2C4_EV },
454 Vector { _handler: I2C4_ER },
455 Vector { _handler: DCMI },
456 Vector { _handler: CAN2_TX },
457 Vector { _handler: CAN2_RX0 },
458 Vector { _handler: CAN2_RX1 },
459 Vector { _handler: CAN2_SCE },
460 Vector { _handler: DMA2D },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4a6ag.rs b/embassy-stm32/src/chip/stm32l4a6ag.rs
index d758caee1..a3e227f1f 100644
--- a/embassy-stm32/src/chip/stm32l4a6ag.rs
+++ b/embassy-stm32/src/chip/stm32l4a6ag.rs
@@ -2,21 +2,467 @@ use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D,
5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, 5 EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15,
6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, 6 PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1,
7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, 7 PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3,
8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, 8 PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5,
9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11,
13 PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, 13 PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1,
14 OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, 14 OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG,
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 AES = 79,
34 CAN1_RX0 = 20,
35 CAN1_RX1 = 21,
36 CAN1_SCE = 22,
37 CAN1_TX = 19,
38 CAN2_RX0 = 87,
39 CAN2_RX1 = 88,
40 CAN2_SCE = 89,
41 CAN2_TX = 86,
42 COMP = 64,
43 CRS = 82,
44 DCMI = 85,
45 DFSDM1_FLT0 = 61,
46 DFSDM1_FLT1 = 62,
47 DFSDM1_FLT2 = 63,
48 DFSDM1_FLT3 = 42,
49 DMA1_Channel1 = 11,
50 DMA1_Channel2 = 12,
51 DMA1_Channel3 = 13,
52 DMA1_Channel4 = 14,
53 DMA1_Channel5 = 15,
54 DMA1_Channel6 = 16,
55 DMA1_Channel7 = 17,
56 DMA2D = 90,
57 DMA2_Channel1 = 56,
58 DMA2_Channel2 = 57,
59 DMA2_Channel3 = 58,
60 DMA2_Channel4 = 59,
61 DMA2_Channel5 = 60,
62 DMA2_Channel6 = 68,
63 DMA2_Channel7 = 69,
64 EXTI0 = 6,
65 EXTI1 = 7,
66 EXTI15_10 = 40,
67 EXTI2 = 8,
68 EXTI3 = 9,
69 EXTI4 = 10,
70 EXTI9_5 = 23,
71 FLASH = 4,
72 FMC = 48,
73 FPU = 81,
74 HASH_RNG = 80,
75 I2C1_ER = 32,
76 I2C1_EV = 31,
77 I2C2_ER = 34,
78 I2C2_EV = 33,
79 I2C3_ER = 73,
80 I2C3_EV = 72,
81 I2C4_ER = 84,
82 I2C4_EV = 83,
83 LCD = 78,
84 LPTIM1 = 65,
85 LPTIM2 = 66,
86 LPUART1 = 70,
87 OTG_FS = 67,
88 PVD_PVM = 1,
89 QUADSPI = 71,
90 RCC = 5,
91 RTC_Alarm = 41,
92 RTC_WKUP = 3,
93 SAI1 = 74,
94 SAI2 = 75,
95 SDMMC1 = 49,
96 SPI1 = 35,
97 SPI2 = 36,
98 SPI3 = 51,
99 SWPMI1 = 76,
100 TAMP_STAMP = 2,
101 TIM1_BRK_TIM15 = 24,
102 TIM1_CC = 27,
103 TIM1_TRG_COM_TIM17 = 26,
104 TIM1_UP_TIM16 = 25,
105 TIM2 = 28,
106 TIM3 = 29,
107 TIM4 = 30,
108 TIM5 = 50,
109 TIM6_DAC = 54,
110 TIM7 = 55,
111 TIM8_BRK = 43,
112 TIM8_CC = 46,
113 TIM8_TRG_COM = 45,
114 TIM8_UP = 44,
115 TSC = 77,
116 UART4 = 52,
117 UART5 = 53,
118 USART1 = 37,
119 USART2 = 38,
120 USART3 = 39,
121 WWDG = 0,
122 }
123 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
124 #[inline(always)]
125 fn number(self) -> u16 {
126 self as u16
127 }
128 }
129
130 declare!(ADC1_2);
131 declare!(ADC3);
132 declare!(AES);
133 declare!(CAN1_RX0);
134 declare!(CAN1_RX1);
135 declare!(CAN1_SCE);
136 declare!(CAN1_TX);
137 declare!(CAN2_RX0);
138 declare!(CAN2_RX1);
139 declare!(CAN2_SCE);
140 declare!(CAN2_TX);
141 declare!(COMP);
142 declare!(CRS);
143 declare!(DCMI);
144 declare!(DFSDM1_FLT0);
145 declare!(DFSDM1_FLT1);
146 declare!(DFSDM1_FLT2);
147 declare!(DFSDM1_FLT3);
148 declare!(DMA1_Channel1);
149 declare!(DMA1_Channel2);
150 declare!(DMA1_Channel3);
151 declare!(DMA1_Channel4);
152 declare!(DMA1_Channel5);
153 declare!(DMA1_Channel6);
154 declare!(DMA1_Channel7);
155 declare!(DMA2D);
156 declare!(DMA2_Channel1);
157 declare!(DMA2_Channel2);
158 declare!(DMA2_Channel3);
159 declare!(DMA2_Channel4);
160 declare!(DMA2_Channel5);
161 declare!(DMA2_Channel6);
162 declare!(DMA2_Channel7);
163 declare!(EXTI0);
164 declare!(EXTI1);
165 declare!(EXTI15_10);
166 declare!(EXTI2);
167 declare!(EXTI3);
168 declare!(EXTI4);
169 declare!(EXTI9_5);
170 declare!(FLASH);
171 declare!(FMC);
172 declare!(FPU);
173 declare!(HASH_RNG);
174 declare!(I2C1_ER);
175 declare!(I2C1_EV);
176 declare!(I2C2_ER);
177 declare!(I2C2_EV);
178 declare!(I2C3_ER);
179 declare!(I2C3_EV);
180 declare!(I2C4_ER);
181 declare!(I2C4_EV);
182 declare!(LCD);
183 declare!(LPTIM1);
184 declare!(LPTIM2);
185 declare!(LPUART1);
186 declare!(OTG_FS);
187 declare!(PVD_PVM);
188 declare!(QUADSPI);
189 declare!(RCC);
190 declare!(RTC_Alarm);
191 declare!(RTC_WKUP);
192 declare!(SAI1);
193 declare!(SAI2);
194 declare!(SDMMC1);
195 declare!(SPI1);
196 declare!(SPI2);
197 declare!(SPI3);
198 declare!(SWPMI1);
199 declare!(TAMP_STAMP);
200 declare!(TIM1_BRK_TIM15);
201 declare!(TIM1_CC);
202 declare!(TIM1_TRG_COM_TIM17);
203 declare!(TIM1_UP_TIM16);
204 declare!(TIM2);
205 declare!(TIM3);
206 declare!(TIM4);
207 declare!(TIM5);
208 declare!(TIM6_DAC);
209 declare!(TIM7);
210 declare!(TIM8_BRK);
211 declare!(TIM8_CC);
212 declare!(TIM8_TRG_COM);
213 declare!(TIM8_UP);
214 declare!(TSC);
215 declare!(UART4);
216 declare!(UART5);
217 declare!(USART1);
218 declare!(USART2);
219 declare!(USART3);
220 declare!(WWDG);
221}
222mod interrupt_vector {
223 extern "C" {
224 fn ADC1_2();
225 fn ADC3();
226 fn AES();
227 fn CAN1_RX0();
228 fn CAN1_RX1();
229 fn CAN1_SCE();
230 fn CAN1_TX();
231 fn CAN2_RX0();
232 fn CAN2_RX1();
233 fn CAN2_SCE();
234 fn CAN2_TX();
235 fn COMP();
236 fn CRS();
237 fn DCMI();
238 fn DFSDM1_FLT0();
239 fn DFSDM1_FLT1();
240 fn DFSDM1_FLT2();
241 fn DFSDM1_FLT3();
242 fn DMA1_Channel1();
243 fn DMA1_Channel2();
244 fn DMA1_Channel3();
245 fn DMA1_Channel4();
246 fn DMA1_Channel5();
247 fn DMA1_Channel6();
248 fn DMA1_Channel7();
249 fn DMA2D();
250 fn DMA2_Channel1();
251 fn DMA2_Channel2();
252 fn DMA2_Channel3();
253 fn DMA2_Channel4();
254 fn DMA2_Channel5();
255 fn DMA2_Channel6();
256 fn DMA2_Channel7();
257 fn EXTI0();
258 fn EXTI1();
259 fn EXTI15_10();
260 fn EXTI2();
261 fn EXTI3();
262 fn EXTI4();
263 fn EXTI9_5();
264 fn FLASH();
265 fn FMC();
266 fn FPU();
267 fn HASH_RNG();
268 fn I2C1_ER();
269 fn I2C1_EV();
270 fn I2C2_ER();
271 fn I2C2_EV();
272 fn I2C3_ER();
273 fn I2C3_EV();
274 fn I2C4_ER();
275 fn I2C4_EV();
276 fn LCD();
277 fn LPTIM1();
278 fn LPTIM2();
279 fn LPUART1();
280 fn OTG_FS();
281 fn PVD_PVM();
282 fn QUADSPI();
283 fn RCC();
284 fn RTC_Alarm();
285 fn RTC_WKUP();
286 fn SAI1();
287 fn SAI2();
288 fn SDMMC1();
289 fn SPI1();
290 fn SPI2();
291 fn SPI3();
292 fn SWPMI1();
293 fn TAMP_STAMP();
294 fn TIM1_BRK_TIM15();
295 fn TIM1_CC();
296 fn TIM1_TRG_COM_TIM17();
297 fn TIM1_UP_TIM16();
298 fn TIM2();
299 fn TIM3();
300 fn TIM4();
301 fn TIM5();
302 fn TIM6_DAC();
303 fn TIM7();
304 fn TIM8_BRK();
305 fn TIM8_CC();
306 fn TIM8_TRG_COM();
307 fn TIM8_UP();
308 fn TSC();
309 fn UART4();
310 fn UART5();
311 fn USART1();
312 fn USART2();
313 fn USART3();
314 fn WWDG();
315 }
316 pub union Vector {
317 _handler: unsafe extern "C" fn(),
318 _reserved: u32,
319 }
320 #[link_section = ".vector_table.interrupts"]
321 #[no_mangle]
322 pub static __INTERRUPTS: [Vector; 91] = [
323 Vector { _handler: WWDG },
324 Vector { _handler: PVD_PVM },
325 Vector {
326 _handler: TAMP_STAMP,
327 },
328 Vector { _handler: RTC_WKUP },
329 Vector { _handler: FLASH },
330 Vector { _handler: RCC },
331 Vector { _handler: EXTI0 },
332 Vector { _handler: EXTI1 },
333 Vector { _handler: EXTI2 },
334 Vector { _handler: EXTI3 },
335 Vector { _handler: EXTI4 },
336 Vector {
337 _handler: DMA1_Channel1,
338 },
339 Vector {
340 _handler: DMA1_Channel2,
341 },
342 Vector {
343 _handler: DMA1_Channel3,
344 },
345 Vector {
346 _handler: DMA1_Channel4,
347 },
348 Vector {
349 _handler: DMA1_Channel5,
350 },
351 Vector {
352 _handler: DMA1_Channel6,
353 },
354 Vector {
355 _handler: DMA1_Channel7,
356 },
357 Vector { _handler: ADC1_2 },
358 Vector { _handler: CAN1_TX },
359 Vector { _handler: CAN1_RX0 },
360 Vector { _handler: CAN1_RX1 },
361 Vector { _handler: CAN1_SCE },
362 Vector { _handler: EXTI9_5 },
363 Vector {
364 _handler: TIM1_BRK_TIM15,
365 },
366 Vector {
367 _handler: TIM1_UP_TIM16,
368 },
369 Vector {
370 _handler: TIM1_TRG_COM_TIM17,
371 },
372 Vector { _handler: TIM1_CC },
373 Vector { _handler: TIM2 },
374 Vector { _handler: TIM3 },
375 Vector { _handler: TIM4 },
376 Vector { _handler: I2C1_EV },
377 Vector { _handler: I2C1_ER },
378 Vector { _handler: I2C2_EV },
379 Vector { _handler: I2C2_ER },
380 Vector { _handler: SPI1 },
381 Vector { _handler: SPI2 },
382 Vector { _handler: USART1 },
383 Vector { _handler: USART2 },
384 Vector { _handler: USART3 },
385 Vector {
386 _handler: EXTI15_10,
387 },
388 Vector {
389 _handler: RTC_Alarm,
390 },
391 Vector {
392 _handler: DFSDM1_FLT3,
393 },
394 Vector { _handler: TIM8_BRK },
395 Vector { _handler: TIM8_UP },
396 Vector {
397 _handler: TIM8_TRG_COM,
398 },
399 Vector { _handler: TIM8_CC },
400 Vector { _handler: ADC3 },
401 Vector { _handler: FMC },
402 Vector { _handler: SDMMC1 },
403 Vector { _handler: TIM5 },
404 Vector { _handler: SPI3 },
405 Vector { _handler: UART4 },
406 Vector { _handler: UART5 },
407 Vector { _handler: TIM6_DAC },
408 Vector { _handler: TIM7 },
409 Vector {
410 _handler: DMA2_Channel1,
411 },
412 Vector {
413 _handler: DMA2_Channel2,
414 },
415 Vector {
416 _handler: DMA2_Channel3,
417 },
418 Vector {
419 _handler: DMA2_Channel4,
420 },
421 Vector {
422 _handler: DMA2_Channel5,
423 },
424 Vector {
425 _handler: DFSDM1_FLT0,
426 },
427 Vector {
428 _handler: DFSDM1_FLT1,
429 },
430 Vector {
431 _handler: DFSDM1_FLT2,
432 },
433 Vector { _handler: COMP },
434 Vector { _handler: LPTIM1 },
435 Vector { _handler: LPTIM2 },
436 Vector { _handler: OTG_FS },
437 Vector {
438 _handler: DMA2_Channel6,
439 },
440 Vector {
441 _handler: DMA2_Channel7,
442 },
443 Vector { _handler: LPUART1 },
444 Vector { _handler: QUADSPI },
445 Vector { _handler: I2C3_EV },
446 Vector { _handler: I2C3_ER },
447 Vector { _handler: SAI1 },
448 Vector { _handler: SAI2 },
449 Vector { _handler: SWPMI1 },
450 Vector { _handler: TSC },
451 Vector { _handler: LCD },
452 Vector { _handler: AES },
453 Vector { _handler: HASH_RNG },
454 Vector { _handler: FPU },
455 Vector { _handler: CRS },
456 Vector { _handler: I2C4_EV },
457 Vector { _handler: I2C4_ER },
458 Vector { _handler: DCMI },
459 Vector { _handler: CAN2_TX },
460 Vector { _handler: CAN2_RX0 },
461 Vector { _handler: CAN2_RX1 },
462 Vector { _handler: CAN2_SCE },
463 Vector { _handler: DMA2D },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4a6qg.rs b/embassy-stm32/src/chip/stm32l4a6qg.rs
index d758caee1..a3e227f1f 100644
--- a/embassy-stm32/src/chip/stm32l4a6qg.rs
+++ b/embassy-stm32/src/chip/stm32l4a6qg.rs
@@ -2,21 +2,467 @@ use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D,
5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, 5 EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15,
6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, 6 PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1,
7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, 7 PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3,
8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, 8 PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5,
9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11,
13 PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, 13 PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1,
14 OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, 14 OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG,
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 AES = 79,
34 CAN1_RX0 = 20,
35 CAN1_RX1 = 21,
36 CAN1_SCE = 22,
37 CAN1_TX = 19,
38 CAN2_RX0 = 87,
39 CAN2_RX1 = 88,
40 CAN2_SCE = 89,
41 CAN2_TX = 86,
42 COMP = 64,
43 CRS = 82,
44 DCMI = 85,
45 DFSDM1_FLT0 = 61,
46 DFSDM1_FLT1 = 62,
47 DFSDM1_FLT2 = 63,
48 DFSDM1_FLT3 = 42,
49 DMA1_Channel1 = 11,
50 DMA1_Channel2 = 12,
51 DMA1_Channel3 = 13,
52 DMA1_Channel4 = 14,
53 DMA1_Channel5 = 15,
54 DMA1_Channel6 = 16,
55 DMA1_Channel7 = 17,
56 DMA2D = 90,
57 DMA2_Channel1 = 56,
58 DMA2_Channel2 = 57,
59 DMA2_Channel3 = 58,
60 DMA2_Channel4 = 59,
61 DMA2_Channel5 = 60,
62 DMA2_Channel6 = 68,
63 DMA2_Channel7 = 69,
64 EXTI0 = 6,
65 EXTI1 = 7,
66 EXTI15_10 = 40,
67 EXTI2 = 8,
68 EXTI3 = 9,
69 EXTI4 = 10,
70 EXTI9_5 = 23,
71 FLASH = 4,
72 FMC = 48,
73 FPU = 81,
74 HASH_RNG = 80,
75 I2C1_ER = 32,
76 I2C1_EV = 31,
77 I2C2_ER = 34,
78 I2C2_EV = 33,
79 I2C3_ER = 73,
80 I2C3_EV = 72,
81 I2C4_ER = 84,
82 I2C4_EV = 83,
83 LCD = 78,
84 LPTIM1 = 65,
85 LPTIM2 = 66,
86 LPUART1 = 70,
87 OTG_FS = 67,
88 PVD_PVM = 1,
89 QUADSPI = 71,
90 RCC = 5,
91 RTC_Alarm = 41,
92 RTC_WKUP = 3,
93 SAI1 = 74,
94 SAI2 = 75,
95 SDMMC1 = 49,
96 SPI1 = 35,
97 SPI2 = 36,
98 SPI3 = 51,
99 SWPMI1 = 76,
100 TAMP_STAMP = 2,
101 TIM1_BRK_TIM15 = 24,
102 TIM1_CC = 27,
103 TIM1_TRG_COM_TIM17 = 26,
104 TIM1_UP_TIM16 = 25,
105 TIM2 = 28,
106 TIM3 = 29,
107 TIM4 = 30,
108 TIM5 = 50,
109 TIM6_DAC = 54,
110 TIM7 = 55,
111 TIM8_BRK = 43,
112 TIM8_CC = 46,
113 TIM8_TRG_COM = 45,
114 TIM8_UP = 44,
115 TSC = 77,
116 UART4 = 52,
117 UART5 = 53,
118 USART1 = 37,
119 USART2 = 38,
120 USART3 = 39,
121 WWDG = 0,
122 }
123 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
124 #[inline(always)]
125 fn number(self) -> u16 {
126 self as u16
127 }
128 }
129
130 declare!(ADC1_2);
131 declare!(ADC3);
132 declare!(AES);
133 declare!(CAN1_RX0);
134 declare!(CAN1_RX1);
135 declare!(CAN1_SCE);
136 declare!(CAN1_TX);
137 declare!(CAN2_RX0);
138 declare!(CAN2_RX1);
139 declare!(CAN2_SCE);
140 declare!(CAN2_TX);
141 declare!(COMP);
142 declare!(CRS);
143 declare!(DCMI);
144 declare!(DFSDM1_FLT0);
145 declare!(DFSDM1_FLT1);
146 declare!(DFSDM1_FLT2);
147 declare!(DFSDM1_FLT3);
148 declare!(DMA1_Channel1);
149 declare!(DMA1_Channel2);
150 declare!(DMA1_Channel3);
151 declare!(DMA1_Channel4);
152 declare!(DMA1_Channel5);
153 declare!(DMA1_Channel6);
154 declare!(DMA1_Channel7);
155 declare!(DMA2D);
156 declare!(DMA2_Channel1);
157 declare!(DMA2_Channel2);
158 declare!(DMA2_Channel3);
159 declare!(DMA2_Channel4);
160 declare!(DMA2_Channel5);
161 declare!(DMA2_Channel6);
162 declare!(DMA2_Channel7);
163 declare!(EXTI0);
164 declare!(EXTI1);
165 declare!(EXTI15_10);
166 declare!(EXTI2);
167 declare!(EXTI3);
168 declare!(EXTI4);
169 declare!(EXTI9_5);
170 declare!(FLASH);
171 declare!(FMC);
172 declare!(FPU);
173 declare!(HASH_RNG);
174 declare!(I2C1_ER);
175 declare!(I2C1_EV);
176 declare!(I2C2_ER);
177 declare!(I2C2_EV);
178 declare!(I2C3_ER);
179 declare!(I2C3_EV);
180 declare!(I2C4_ER);
181 declare!(I2C4_EV);
182 declare!(LCD);
183 declare!(LPTIM1);
184 declare!(LPTIM2);
185 declare!(LPUART1);
186 declare!(OTG_FS);
187 declare!(PVD_PVM);
188 declare!(QUADSPI);
189 declare!(RCC);
190 declare!(RTC_Alarm);
191 declare!(RTC_WKUP);
192 declare!(SAI1);
193 declare!(SAI2);
194 declare!(SDMMC1);
195 declare!(SPI1);
196 declare!(SPI2);
197 declare!(SPI3);
198 declare!(SWPMI1);
199 declare!(TAMP_STAMP);
200 declare!(TIM1_BRK_TIM15);
201 declare!(TIM1_CC);
202 declare!(TIM1_TRG_COM_TIM17);
203 declare!(TIM1_UP_TIM16);
204 declare!(TIM2);
205 declare!(TIM3);
206 declare!(TIM4);
207 declare!(TIM5);
208 declare!(TIM6_DAC);
209 declare!(TIM7);
210 declare!(TIM8_BRK);
211 declare!(TIM8_CC);
212 declare!(TIM8_TRG_COM);
213 declare!(TIM8_UP);
214 declare!(TSC);
215 declare!(UART4);
216 declare!(UART5);
217 declare!(USART1);
218 declare!(USART2);
219 declare!(USART3);
220 declare!(WWDG);
221}
222mod interrupt_vector {
223 extern "C" {
224 fn ADC1_2();
225 fn ADC3();
226 fn AES();
227 fn CAN1_RX0();
228 fn CAN1_RX1();
229 fn CAN1_SCE();
230 fn CAN1_TX();
231 fn CAN2_RX0();
232 fn CAN2_RX1();
233 fn CAN2_SCE();
234 fn CAN2_TX();
235 fn COMP();
236 fn CRS();
237 fn DCMI();
238 fn DFSDM1_FLT0();
239 fn DFSDM1_FLT1();
240 fn DFSDM1_FLT2();
241 fn DFSDM1_FLT3();
242 fn DMA1_Channel1();
243 fn DMA1_Channel2();
244 fn DMA1_Channel3();
245 fn DMA1_Channel4();
246 fn DMA1_Channel5();
247 fn DMA1_Channel6();
248 fn DMA1_Channel7();
249 fn DMA2D();
250 fn DMA2_Channel1();
251 fn DMA2_Channel2();
252 fn DMA2_Channel3();
253 fn DMA2_Channel4();
254 fn DMA2_Channel5();
255 fn DMA2_Channel6();
256 fn DMA2_Channel7();
257 fn EXTI0();
258 fn EXTI1();
259 fn EXTI15_10();
260 fn EXTI2();
261 fn EXTI3();
262 fn EXTI4();
263 fn EXTI9_5();
264 fn FLASH();
265 fn FMC();
266 fn FPU();
267 fn HASH_RNG();
268 fn I2C1_ER();
269 fn I2C1_EV();
270 fn I2C2_ER();
271 fn I2C2_EV();
272 fn I2C3_ER();
273 fn I2C3_EV();
274 fn I2C4_ER();
275 fn I2C4_EV();
276 fn LCD();
277 fn LPTIM1();
278 fn LPTIM2();
279 fn LPUART1();
280 fn OTG_FS();
281 fn PVD_PVM();
282 fn QUADSPI();
283 fn RCC();
284 fn RTC_Alarm();
285 fn RTC_WKUP();
286 fn SAI1();
287 fn SAI2();
288 fn SDMMC1();
289 fn SPI1();
290 fn SPI2();
291 fn SPI3();
292 fn SWPMI1();
293 fn TAMP_STAMP();
294 fn TIM1_BRK_TIM15();
295 fn TIM1_CC();
296 fn TIM1_TRG_COM_TIM17();
297 fn TIM1_UP_TIM16();
298 fn TIM2();
299 fn TIM3();
300 fn TIM4();
301 fn TIM5();
302 fn TIM6_DAC();
303 fn TIM7();
304 fn TIM8_BRK();
305 fn TIM8_CC();
306 fn TIM8_TRG_COM();
307 fn TIM8_UP();
308 fn TSC();
309 fn UART4();
310 fn UART5();
311 fn USART1();
312 fn USART2();
313 fn USART3();
314 fn WWDG();
315 }
316 pub union Vector {
317 _handler: unsafe extern "C" fn(),
318 _reserved: u32,
319 }
320 #[link_section = ".vector_table.interrupts"]
321 #[no_mangle]
322 pub static __INTERRUPTS: [Vector; 91] = [
323 Vector { _handler: WWDG },
324 Vector { _handler: PVD_PVM },
325 Vector {
326 _handler: TAMP_STAMP,
327 },
328 Vector { _handler: RTC_WKUP },
329 Vector { _handler: FLASH },
330 Vector { _handler: RCC },
331 Vector { _handler: EXTI0 },
332 Vector { _handler: EXTI1 },
333 Vector { _handler: EXTI2 },
334 Vector { _handler: EXTI3 },
335 Vector { _handler: EXTI4 },
336 Vector {
337 _handler: DMA1_Channel1,
338 },
339 Vector {
340 _handler: DMA1_Channel2,
341 },
342 Vector {
343 _handler: DMA1_Channel3,
344 },
345 Vector {
346 _handler: DMA1_Channel4,
347 },
348 Vector {
349 _handler: DMA1_Channel5,
350 },
351 Vector {
352 _handler: DMA1_Channel6,
353 },
354 Vector {
355 _handler: DMA1_Channel7,
356 },
357 Vector { _handler: ADC1_2 },
358 Vector { _handler: CAN1_TX },
359 Vector { _handler: CAN1_RX0 },
360 Vector { _handler: CAN1_RX1 },
361 Vector { _handler: CAN1_SCE },
362 Vector { _handler: EXTI9_5 },
363 Vector {
364 _handler: TIM1_BRK_TIM15,
365 },
366 Vector {
367 _handler: TIM1_UP_TIM16,
368 },
369 Vector {
370 _handler: TIM1_TRG_COM_TIM17,
371 },
372 Vector { _handler: TIM1_CC },
373 Vector { _handler: TIM2 },
374 Vector { _handler: TIM3 },
375 Vector { _handler: TIM4 },
376 Vector { _handler: I2C1_EV },
377 Vector { _handler: I2C1_ER },
378 Vector { _handler: I2C2_EV },
379 Vector { _handler: I2C2_ER },
380 Vector { _handler: SPI1 },
381 Vector { _handler: SPI2 },
382 Vector { _handler: USART1 },
383 Vector { _handler: USART2 },
384 Vector { _handler: USART3 },
385 Vector {
386 _handler: EXTI15_10,
387 },
388 Vector {
389 _handler: RTC_Alarm,
390 },
391 Vector {
392 _handler: DFSDM1_FLT3,
393 },
394 Vector { _handler: TIM8_BRK },
395 Vector { _handler: TIM8_UP },
396 Vector {
397 _handler: TIM8_TRG_COM,
398 },
399 Vector { _handler: TIM8_CC },
400 Vector { _handler: ADC3 },
401 Vector { _handler: FMC },
402 Vector { _handler: SDMMC1 },
403 Vector { _handler: TIM5 },
404 Vector { _handler: SPI3 },
405 Vector { _handler: UART4 },
406 Vector { _handler: UART5 },
407 Vector { _handler: TIM6_DAC },
408 Vector { _handler: TIM7 },
409 Vector {
410 _handler: DMA2_Channel1,
411 },
412 Vector {
413 _handler: DMA2_Channel2,
414 },
415 Vector {
416 _handler: DMA2_Channel3,
417 },
418 Vector {
419 _handler: DMA2_Channel4,
420 },
421 Vector {
422 _handler: DMA2_Channel5,
423 },
424 Vector {
425 _handler: DFSDM1_FLT0,
426 },
427 Vector {
428 _handler: DFSDM1_FLT1,
429 },
430 Vector {
431 _handler: DFSDM1_FLT2,
432 },
433 Vector { _handler: COMP },
434 Vector { _handler: LPTIM1 },
435 Vector { _handler: LPTIM2 },
436 Vector { _handler: OTG_FS },
437 Vector {
438 _handler: DMA2_Channel6,
439 },
440 Vector {
441 _handler: DMA2_Channel7,
442 },
443 Vector { _handler: LPUART1 },
444 Vector { _handler: QUADSPI },
445 Vector { _handler: I2C3_EV },
446 Vector { _handler: I2C3_ER },
447 Vector { _handler: SAI1 },
448 Vector { _handler: SAI2 },
449 Vector { _handler: SWPMI1 },
450 Vector { _handler: TSC },
451 Vector { _handler: LCD },
452 Vector { _handler: AES },
453 Vector { _handler: HASH_RNG },
454 Vector { _handler: FPU },
455 Vector { _handler: CRS },
456 Vector { _handler: I2C4_EV },
457 Vector { _handler: I2C4_ER },
458 Vector { _handler: DCMI },
459 Vector { _handler: CAN2_TX },
460 Vector { _handler: CAN2_RX0 },
461 Vector { _handler: CAN2_RX1 },
462 Vector { _handler: CAN2_SCE },
463 Vector { _handler: DMA2D },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4a6rg.rs b/embassy-stm32/src/chip/stm32l4a6rg.rs
index d758caee1..a3e227f1f 100644
--- a/embassy-stm32/src/chip/stm32l4a6rg.rs
+++ b/embassy-stm32/src/chip/stm32l4a6rg.rs
@@ -2,21 +2,467 @@ use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D,
5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, 5 EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15,
6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, 6 PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1,
7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, 7 PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3,
8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, 8 PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5,
9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11,
13 PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, 13 PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1,
14 OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, 14 OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG,
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 AES = 79,
34 CAN1_RX0 = 20,
35 CAN1_RX1 = 21,
36 CAN1_SCE = 22,
37 CAN1_TX = 19,
38 CAN2_RX0 = 87,
39 CAN2_RX1 = 88,
40 CAN2_SCE = 89,
41 CAN2_TX = 86,
42 COMP = 64,
43 CRS = 82,
44 DCMI = 85,
45 DFSDM1_FLT0 = 61,
46 DFSDM1_FLT1 = 62,
47 DFSDM1_FLT2 = 63,
48 DFSDM1_FLT3 = 42,
49 DMA1_Channel1 = 11,
50 DMA1_Channel2 = 12,
51 DMA1_Channel3 = 13,
52 DMA1_Channel4 = 14,
53 DMA1_Channel5 = 15,
54 DMA1_Channel6 = 16,
55 DMA1_Channel7 = 17,
56 DMA2D = 90,
57 DMA2_Channel1 = 56,
58 DMA2_Channel2 = 57,
59 DMA2_Channel3 = 58,
60 DMA2_Channel4 = 59,
61 DMA2_Channel5 = 60,
62 DMA2_Channel6 = 68,
63 DMA2_Channel7 = 69,
64 EXTI0 = 6,
65 EXTI1 = 7,
66 EXTI15_10 = 40,
67 EXTI2 = 8,
68 EXTI3 = 9,
69 EXTI4 = 10,
70 EXTI9_5 = 23,
71 FLASH = 4,
72 FMC = 48,
73 FPU = 81,
74 HASH_RNG = 80,
75 I2C1_ER = 32,
76 I2C1_EV = 31,
77 I2C2_ER = 34,
78 I2C2_EV = 33,
79 I2C3_ER = 73,
80 I2C3_EV = 72,
81 I2C4_ER = 84,
82 I2C4_EV = 83,
83 LCD = 78,
84 LPTIM1 = 65,
85 LPTIM2 = 66,
86 LPUART1 = 70,
87 OTG_FS = 67,
88 PVD_PVM = 1,
89 QUADSPI = 71,
90 RCC = 5,
91 RTC_Alarm = 41,
92 RTC_WKUP = 3,
93 SAI1 = 74,
94 SAI2 = 75,
95 SDMMC1 = 49,
96 SPI1 = 35,
97 SPI2 = 36,
98 SPI3 = 51,
99 SWPMI1 = 76,
100 TAMP_STAMP = 2,
101 TIM1_BRK_TIM15 = 24,
102 TIM1_CC = 27,
103 TIM1_TRG_COM_TIM17 = 26,
104 TIM1_UP_TIM16 = 25,
105 TIM2 = 28,
106 TIM3 = 29,
107 TIM4 = 30,
108 TIM5 = 50,
109 TIM6_DAC = 54,
110 TIM7 = 55,
111 TIM8_BRK = 43,
112 TIM8_CC = 46,
113 TIM8_TRG_COM = 45,
114 TIM8_UP = 44,
115 TSC = 77,
116 UART4 = 52,
117 UART5 = 53,
118 USART1 = 37,
119 USART2 = 38,
120 USART3 = 39,
121 WWDG = 0,
122 }
123 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
124 #[inline(always)]
125 fn number(self) -> u16 {
126 self as u16
127 }
128 }
129
130 declare!(ADC1_2);
131 declare!(ADC3);
132 declare!(AES);
133 declare!(CAN1_RX0);
134 declare!(CAN1_RX1);
135 declare!(CAN1_SCE);
136 declare!(CAN1_TX);
137 declare!(CAN2_RX0);
138 declare!(CAN2_RX1);
139 declare!(CAN2_SCE);
140 declare!(CAN2_TX);
141 declare!(COMP);
142 declare!(CRS);
143 declare!(DCMI);
144 declare!(DFSDM1_FLT0);
145 declare!(DFSDM1_FLT1);
146 declare!(DFSDM1_FLT2);
147 declare!(DFSDM1_FLT3);
148 declare!(DMA1_Channel1);
149 declare!(DMA1_Channel2);
150 declare!(DMA1_Channel3);
151 declare!(DMA1_Channel4);
152 declare!(DMA1_Channel5);
153 declare!(DMA1_Channel6);
154 declare!(DMA1_Channel7);
155 declare!(DMA2D);
156 declare!(DMA2_Channel1);
157 declare!(DMA2_Channel2);
158 declare!(DMA2_Channel3);
159 declare!(DMA2_Channel4);
160 declare!(DMA2_Channel5);
161 declare!(DMA2_Channel6);
162 declare!(DMA2_Channel7);
163 declare!(EXTI0);
164 declare!(EXTI1);
165 declare!(EXTI15_10);
166 declare!(EXTI2);
167 declare!(EXTI3);
168 declare!(EXTI4);
169 declare!(EXTI9_5);
170 declare!(FLASH);
171 declare!(FMC);
172 declare!(FPU);
173 declare!(HASH_RNG);
174 declare!(I2C1_ER);
175 declare!(I2C1_EV);
176 declare!(I2C2_ER);
177 declare!(I2C2_EV);
178 declare!(I2C3_ER);
179 declare!(I2C3_EV);
180 declare!(I2C4_ER);
181 declare!(I2C4_EV);
182 declare!(LCD);
183 declare!(LPTIM1);
184 declare!(LPTIM2);
185 declare!(LPUART1);
186 declare!(OTG_FS);
187 declare!(PVD_PVM);
188 declare!(QUADSPI);
189 declare!(RCC);
190 declare!(RTC_Alarm);
191 declare!(RTC_WKUP);
192 declare!(SAI1);
193 declare!(SAI2);
194 declare!(SDMMC1);
195 declare!(SPI1);
196 declare!(SPI2);
197 declare!(SPI3);
198 declare!(SWPMI1);
199 declare!(TAMP_STAMP);
200 declare!(TIM1_BRK_TIM15);
201 declare!(TIM1_CC);
202 declare!(TIM1_TRG_COM_TIM17);
203 declare!(TIM1_UP_TIM16);
204 declare!(TIM2);
205 declare!(TIM3);
206 declare!(TIM4);
207 declare!(TIM5);
208 declare!(TIM6_DAC);
209 declare!(TIM7);
210 declare!(TIM8_BRK);
211 declare!(TIM8_CC);
212 declare!(TIM8_TRG_COM);
213 declare!(TIM8_UP);
214 declare!(TSC);
215 declare!(UART4);
216 declare!(UART5);
217 declare!(USART1);
218 declare!(USART2);
219 declare!(USART3);
220 declare!(WWDG);
221}
222mod interrupt_vector {
223 extern "C" {
224 fn ADC1_2();
225 fn ADC3();
226 fn AES();
227 fn CAN1_RX0();
228 fn CAN1_RX1();
229 fn CAN1_SCE();
230 fn CAN1_TX();
231 fn CAN2_RX0();
232 fn CAN2_RX1();
233 fn CAN2_SCE();
234 fn CAN2_TX();
235 fn COMP();
236 fn CRS();
237 fn DCMI();
238 fn DFSDM1_FLT0();
239 fn DFSDM1_FLT1();
240 fn DFSDM1_FLT2();
241 fn DFSDM1_FLT3();
242 fn DMA1_Channel1();
243 fn DMA1_Channel2();
244 fn DMA1_Channel3();
245 fn DMA1_Channel4();
246 fn DMA1_Channel5();
247 fn DMA1_Channel6();
248 fn DMA1_Channel7();
249 fn DMA2D();
250 fn DMA2_Channel1();
251 fn DMA2_Channel2();
252 fn DMA2_Channel3();
253 fn DMA2_Channel4();
254 fn DMA2_Channel5();
255 fn DMA2_Channel6();
256 fn DMA2_Channel7();
257 fn EXTI0();
258 fn EXTI1();
259 fn EXTI15_10();
260 fn EXTI2();
261 fn EXTI3();
262 fn EXTI4();
263 fn EXTI9_5();
264 fn FLASH();
265 fn FMC();
266 fn FPU();
267 fn HASH_RNG();
268 fn I2C1_ER();
269 fn I2C1_EV();
270 fn I2C2_ER();
271 fn I2C2_EV();
272 fn I2C3_ER();
273 fn I2C3_EV();
274 fn I2C4_ER();
275 fn I2C4_EV();
276 fn LCD();
277 fn LPTIM1();
278 fn LPTIM2();
279 fn LPUART1();
280 fn OTG_FS();
281 fn PVD_PVM();
282 fn QUADSPI();
283 fn RCC();
284 fn RTC_Alarm();
285 fn RTC_WKUP();
286 fn SAI1();
287 fn SAI2();
288 fn SDMMC1();
289 fn SPI1();
290 fn SPI2();
291 fn SPI3();
292 fn SWPMI1();
293 fn TAMP_STAMP();
294 fn TIM1_BRK_TIM15();
295 fn TIM1_CC();
296 fn TIM1_TRG_COM_TIM17();
297 fn TIM1_UP_TIM16();
298 fn TIM2();
299 fn TIM3();
300 fn TIM4();
301 fn TIM5();
302 fn TIM6_DAC();
303 fn TIM7();
304 fn TIM8_BRK();
305 fn TIM8_CC();
306 fn TIM8_TRG_COM();
307 fn TIM8_UP();
308 fn TSC();
309 fn UART4();
310 fn UART5();
311 fn USART1();
312 fn USART2();
313 fn USART3();
314 fn WWDG();
315 }
316 pub union Vector {
317 _handler: unsafe extern "C" fn(),
318 _reserved: u32,
319 }
320 #[link_section = ".vector_table.interrupts"]
321 #[no_mangle]
322 pub static __INTERRUPTS: [Vector; 91] = [
323 Vector { _handler: WWDG },
324 Vector { _handler: PVD_PVM },
325 Vector {
326 _handler: TAMP_STAMP,
327 },
328 Vector { _handler: RTC_WKUP },
329 Vector { _handler: FLASH },
330 Vector { _handler: RCC },
331 Vector { _handler: EXTI0 },
332 Vector { _handler: EXTI1 },
333 Vector { _handler: EXTI2 },
334 Vector { _handler: EXTI3 },
335 Vector { _handler: EXTI4 },
336 Vector {
337 _handler: DMA1_Channel1,
338 },
339 Vector {
340 _handler: DMA1_Channel2,
341 },
342 Vector {
343 _handler: DMA1_Channel3,
344 },
345 Vector {
346 _handler: DMA1_Channel4,
347 },
348 Vector {
349 _handler: DMA1_Channel5,
350 },
351 Vector {
352 _handler: DMA1_Channel6,
353 },
354 Vector {
355 _handler: DMA1_Channel7,
356 },
357 Vector { _handler: ADC1_2 },
358 Vector { _handler: CAN1_TX },
359 Vector { _handler: CAN1_RX0 },
360 Vector { _handler: CAN1_RX1 },
361 Vector { _handler: CAN1_SCE },
362 Vector { _handler: EXTI9_5 },
363 Vector {
364 _handler: TIM1_BRK_TIM15,
365 },
366 Vector {
367 _handler: TIM1_UP_TIM16,
368 },
369 Vector {
370 _handler: TIM1_TRG_COM_TIM17,
371 },
372 Vector { _handler: TIM1_CC },
373 Vector { _handler: TIM2 },
374 Vector { _handler: TIM3 },
375 Vector { _handler: TIM4 },
376 Vector { _handler: I2C1_EV },
377 Vector { _handler: I2C1_ER },
378 Vector { _handler: I2C2_EV },
379 Vector { _handler: I2C2_ER },
380 Vector { _handler: SPI1 },
381 Vector { _handler: SPI2 },
382 Vector { _handler: USART1 },
383 Vector { _handler: USART2 },
384 Vector { _handler: USART3 },
385 Vector {
386 _handler: EXTI15_10,
387 },
388 Vector {
389 _handler: RTC_Alarm,
390 },
391 Vector {
392 _handler: DFSDM1_FLT3,
393 },
394 Vector { _handler: TIM8_BRK },
395 Vector { _handler: TIM8_UP },
396 Vector {
397 _handler: TIM8_TRG_COM,
398 },
399 Vector { _handler: TIM8_CC },
400 Vector { _handler: ADC3 },
401 Vector { _handler: FMC },
402 Vector { _handler: SDMMC1 },
403 Vector { _handler: TIM5 },
404 Vector { _handler: SPI3 },
405 Vector { _handler: UART4 },
406 Vector { _handler: UART5 },
407 Vector { _handler: TIM6_DAC },
408 Vector { _handler: TIM7 },
409 Vector {
410 _handler: DMA2_Channel1,
411 },
412 Vector {
413 _handler: DMA2_Channel2,
414 },
415 Vector {
416 _handler: DMA2_Channel3,
417 },
418 Vector {
419 _handler: DMA2_Channel4,
420 },
421 Vector {
422 _handler: DMA2_Channel5,
423 },
424 Vector {
425 _handler: DFSDM1_FLT0,
426 },
427 Vector {
428 _handler: DFSDM1_FLT1,
429 },
430 Vector {
431 _handler: DFSDM1_FLT2,
432 },
433 Vector { _handler: COMP },
434 Vector { _handler: LPTIM1 },
435 Vector { _handler: LPTIM2 },
436 Vector { _handler: OTG_FS },
437 Vector {
438 _handler: DMA2_Channel6,
439 },
440 Vector {
441 _handler: DMA2_Channel7,
442 },
443 Vector { _handler: LPUART1 },
444 Vector { _handler: QUADSPI },
445 Vector { _handler: I2C3_EV },
446 Vector { _handler: I2C3_ER },
447 Vector { _handler: SAI1 },
448 Vector { _handler: SAI2 },
449 Vector { _handler: SWPMI1 },
450 Vector { _handler: TSC },
451 Vector { _handler: LCD },
452 Vector { _handler: AES },
453 Vector { _handler: HASH_RNG },
454 Vector { _handler: FPU },
455 Vector { _handler: CRS },
456 Vector { _handler: I2C4_EV },
457 Vector { _handler: I2C4_ER },
458 Vector { _handler: DCMI },
459 Vector { _handler: CAN2_TX },
460 Vector { _handler: CAN2_RX0 },
461 Vector { _handler: CAN2_RX1 },
462 Vector { _handler: CAN2_SCE },
463 Vector { _handler: DMA2D },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4a6vg.rs b/embassy-stm32/src/chip/stm32l4a6vg.rs
index d758caee1..a3e227f1f 100644
--- a/embassy-stm32/src/chip/stm32l4a6vg.rs
+++ b/embassy-stm32/src/chip/stm32l4a6vg.rs
@@ -2,21 +2,467 @@ use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D,
5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, 5 EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15,
6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, 6 PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1,
7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, 7 PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3,
8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, 8 PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5,
9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11,
13 PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, 13 PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1,
14 OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, 14 OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG,
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 AES = 79,
34 CAN1_RX0 = 20,
35 CAN1_RX1 = 21,
36 CAN1_SCE = 22,
37 CAN1_TX = 19,
38 CAN2_RX0 = 87,
39 CAN2_RX1 = 88,
40 CAN2_SCE = 89,
41 CAN2_TX = 86,
42 COMP = 64,
43 CRS = 82,
44 DCMI = 85,
45 DFSDM1_FLT0 = 61,
46 DFSDM1_FLT1 = 62,
47 DFSDM1_FLT2 = 63,
48 DFSDM1_FLT3 = 42,
49 DMA1_Channel1 = 11,
50 DMA1_Channel2 = 12,
51 DMA1_Channel3 = 13,
52 DMA1_Channel4 = 14,
53 DMA1_Channel5 = 15,
54 DMA1_Channel6 = 16,
55 DMA1_Channel7 = 17,
56 DMA2D = 90,
57 DMA2_Channel1 = 56,
58 DMA2_Channel2 = 57,
59 DMA2_Channel3 = 58,
60 DMA2_Channel4 = 59,
61 DMA2_Channel5 = 60,
62 DMA2_Channel6 = 68,
63 DMA2_Channel7 = 69,
64 EXTI0 = 6,
65 EXTI1 = 7,
66 EXTI15_10 = 40,
67 EXTI2 = 8,
68 EXTI3 = 9,
69 EXTI4 = 10,
70 EXTI9_5 = 23,
71 FLASH = 4,
72 FMC = 48,
73 FPU = 81,
74 HASH_RNG = 80,
75 I2C1_ER = 32,
76 I2C1_EV = 31,
77 I2C2_ER = 34,
78 I2C2_EV = 33,
79 I2C3_ER = 73,
80 I2C3_EV = 72,
81 I2C4_ER = 84,
82 I2C4_EV = 83,
83 LCD = 78,
84 LPTIM1 = 65,
85 LPTIM2 = 66,
86 LPUART1 = 70,
87 OTG_FS = 67,
88 PVD_PVM = 1,
89 QUADSPI = 71,
90 RCC = 5,
91 RTC_Alarm = 41,
92 RTC_WKUP = 3,
93 SAI1 = 74,
94 SAI2 = 75,
95 SDMMC1 = 49,
96 SPI1 = 35,
97 SPI2 = 36,
98 SPI3 = 51,
99 SWPMI1 = 76,
100 TAMP_STAMP = 2,
101 TIM1_BRK_TIM15 = 24,
102 TIM1_CC = 27,
103 TIM1_TRG_COM_TIM17 = 26,
104 TIM1_UP_TIM16 = 25,
105 TIM2 = 28,
106 TIM3 = 29,
107 TIM4 = 30,
108 TIM5 = 50,
109 TIM6_DAC = 54,
110 TIM7 = 55,
111 TIM8_BRK = 43,
112 TIM8_CC = 46,
113 TIM8_TRG_COM = 45,
114 TIM8_UP = 44,
115 TSC = 77,
116 UART4 = 52,
117 UART5 = 53,
118 USART1 = 37,
119 USART2 = 38,
120 USART3 = 39,
121 WWDG = 0,
122 }
123 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
124 #[inline(always)]
125 fn number(self) -> u16 {
126 self as u16
127 }
128 }
129
130 declare!(ADC1_2);
131 declare!(ADC3);
132 declare!(AES);
133 declare!(CAN1_RX0);
134 declare!(CAN1_RX1);
135 declare!(CAN1_SCE);
136 declare!(CAN1_TX);
137 declare!(CAN2_RX0);
138 declare!(CAN2_RX1);
139 declare!(CAN2_SCE);
140 declare!(CAN2_TX);
141 declare!(COMP);
142 declare!(CRS);
143 declare!(DCMI);
144 declare!(DFSDM1_FLT0);
145 declare!(DFSDM1_FLT1);
146 declare!(DFSDM1_FLT2);
147 declare!(DFSDM1_FLT3);
148 declare!(DMA1_Channel1);
149 declare!(DMA1_Channel2);
150 declare!(DMA1_Channel3);
151 declare!(DMA1_Channel4);
152 declare!(DMA1_Channel5);
153 declare!(DMA1_Channel6);
154 declare!(DMA1_Channel7);
155 declare!(DMA2D);
156 declare!(DMA2_Channel1);
157 declare!(DMA2_Channel2);
158 declare!(DMA2_Channel3);
159 declare!(DMA2_Channel4);
160 declare!(DMA2_Channel5);
161 declare!(DMA2_Channel6);
162 declare!(DMA2_Channel7);
163 declare!(EXTI0);
164 declare!(EXTI1);
165 declare!(EXTI15_10);
166 declare!(EXTI2);
167 declare!(EXTI3);
168 declare!(EXTI4);
169 declare!(EXTI9_5);
170 declare!(FLASH);
171 declare!(FMC);
172 declare!(FPU);
173 declare!(HASH_RNG);
174 declare!(I2C1_ER);
175 declare!(I2C1_EV);
176 declare!(I2C2_ER);
177 declare!(I2C2_EV);
178 declare!(I2C3_ER);
179 declare!(I2C3_EV);
180 declare!(I2C4_ER);
181 declare!(I2C4_EV);
182 declare!(LCD);
183 declare!(LPTIM1);
184 declare!(LPTIM2);
185 declare!(LPUART1);
186 declare!(OTG_FS);
187 declare!(PVD_PVM);
188 declare!(QUADSPI);
189 declare!(RCC);
190 declare!(RTC_Alarm);
191 declare!(RTC_WKUP);
192 declare!(SAI1);
193 declare!(SAI2);
194 declare!(SDMMC1);
195 declare!(SPI1);
196 declare!(SPI2);
197 declare!(SPI3);
198 declare!(SWPMI1);
199 declare!(TAMP_STAMP);
200 declare!(TIM1_BRK_TIM15);
201 declare!(TIM1_CC);
202 declare!(TIM1_TRG_COM_TIM17);
203 declare!(TIM1_UP_TIM16);
204 declare!(TIM2);
205 declare!(TIM3);
206 declare!(TIM4);
207 declare!(TIM5);
208 declare!(TIM6_DAC);
209 declare!(TIM7);
210 declare!(TIM8_BRK);
211 declare!(TIM8_CC);
212 declare!(TIM8_TRG_COM);
213 declare!(TIM8_UP);
214 declare!(TSC);
215 declare!(UART4);
216 declare!(UART5);
217 declare!(USART1);
218 declare!(USART2);
219 declare!(USART3);
220 declare!(WWDG);
221}
222mod interrupt_vector {
223 extern "C" {
224 fn ADC1_2();
225 fn ADC3();
226 fn AES();
227 fn CAN1_RX0();
228 fn CAN1_RX1();
229 fn CAN1_SCE();
230 fn CAN1_TX();
231 fn CAN2_RX0();
232 fn CAN2_RX1();
233 fn CAN2_SCE();
234 fn CAN2_TX();
235 fn COMP();
236 fn CRS();
237 fn DCMI();
238 fn DFSDM1_FLT0();
239 fn DFSDM1_FLT1();
240 fn DFSDM1_FLT2();
241 fn DFSDM1_FLT3();
242 fn DMA1_Channel1();
243 fn DMA1_Channel2();
244 fn DMA1_Channel3();
245 fn DMA1_Channel4();
246 fn DMA1_Channel5();
247 fn DMA1_Channel6();
248 fn DMA1_Channel7();
249 fn DMA2D();
250 fn DMA2_Channel1();
251 fn DMA2_Channel2();
252 fn DMA2_Channel3();
253 fn DMA2_Channel4();
254 fn DMA2_Channel5();
255 fn DMA2_Channel6();
256 fn DMA2_Channel7();
257 fn EXTI0();
258 fn EXTI1();
259 fn EXTI15_10();
260 fn EXTI2();
261 fn EXTI3();
262 fn EXTI4();
263 fn EXTI9_5();
264 fn FLASH();
265 fn FMC();
266 fn FPU();
267 fn HASH_RNG();
268 fn I2C1_ER();
269 fn I2C1_EV();
270 fn I2C2_ER();
271 fn I2C2_EV();
272 fn I2C3_ER();
273 fn I2C3_EV();
274 fn I2C4_ER();
275 fn I2C4_EV();
276 fn LCD();
277 fn LPTIM1();
278 fn LPTIM2();
279 fn LPUART1();
280 fn OTG_FS();
281 fn PVD_PVM();
282 fn QUADSPI();
283 fn RCC();
284 fn RTC_Alarm();
285 fn RTC_WKUP();
286 fn SAI1();
287 fn SAI2();
288 fn SDMMC1();
289 fn SPI1();
290 fn SPI2();
291 fn SPI3();
292 fn SWPMI1();
293 fn TAMP_STAMP();
294 fn TIM1_BRK_TIM15();
295 fn TIM1_CC();
296 fn TIM1_TRG_COM_TIM17();
297 fn TIM1_UP_TIM16();
298 fn TIM2();
299 fn TIM3();
300 fn TIM4();
301 fn TIM5();
302 fn TIM6_DAC();
303 fn TIM7();
304 fn TIM8_BRK();
305 fn TIM8_CC();
306 fn TIM8_TRG_COM();
307 fn TIM8_UP();
308 fn TSC();
309 fn UART4();
310 fn UART5();
311 fn USART1();
312 fn USART2();
313 fn USART3();
314 fn WWDG();
315 }
316 pub union Vector {
317 _handler: unsafe extern "C" fn(),
318 _reserved: u32,
319 }
320 #[link_section = ".vector_table.interrupts"]
321 #[no_mangle]
322 pub static __INTERRUPTS: [Vector; 91] = [
323 Vector { _handler: WWDG },
324 Vector { _handler: PVD_PVM },
325 Vector {
326 _handler: TAMP_STAMP,
327 },
328 Vector { _handler: RTC_WKUP },
329 Vector { _handler: FLASH },
330 Vector { _handler: RCC },
331 Vector { _handler: EXTI0 },
332 Vector { _handler: EXTI1 },
333 Vector { _handler: EXTI2 },
334 Vector { _handler: EXTI3 },
335 Vector { _handler: EXTI4 },
336 Vector {
337 _handler: DMA1_Channel1,
338 },
339 Vector {
340 _handler: DMA1_Channel2,
341 },
342 Vector {
343 _handler: DMA1_Channel3,
344 },
345 Vector {
346 _handler: DMA1_Channel4,
347 },
348 Vector {
349 _handler: DMA1_Channel5,
350 },
351 Vector {
352 _handler: DMA1_Channel6,
353 },
354 Vector {
355 _handler: DMA1_Channel7,
356 },
357 Vector { _handler: ADC1_2 },
358 Vector { _handler: CAN1_TX },
359 Vector { _handler: CAN1_RX0 },
360 Vector { _handler: CAN1_RX1 },
361 Vector { _handler: CAN1_SCE },
362 Vector { _handler: EXTI9_5 },
363 Vector {
364 _handler: TIM1_BRK_TIM15,
365 },
366 Vector {
367 _handler: TIM1_UP_TIM16,
368 },
369 Vector {
370 _handler: TIM1_TRG_COM_TIM17,
371 },
372 Vector { _handler: TIM1_CC },
373 Vector { _handler: TIM2 },
374 Vector { _handler: TIM3 },
375 Vector { _handler: TIM4 },
376 Vector { _handler: I2C1_EV },
377 Vector { _handler: I2C1_ER },
378 Vector { _handler: I2C2_EV },
379 Vector { _handler: I2C2_ER },
380 Vector { _handler: SPI1 },
381 Vector { _handler: SPI2 },
382 Vector { _handler: USART1 },
383 Vector { _handler: USART2 },
384 Vector { _handler: USART3 },
385 Vector {
386 _handler: EXTI15_10,
387 },
388 Vector {
389 _handler: RTC_Alarm,
390 },
391 Vector {
392 _handler: DFSDM1_FLT3,
393 },
394 Vector { _handler: TIM8_BRK },
395 Vector { _handler: TIM8_UP },
396 Vector {
397 _handler: TIM8_TRG_COM,
398 },
399 Vector { _handler: TIM8_CC },
400 Vector { _handler: ADC3 },
401 Vector { _handler: FMC },
402 Vector { _handler: SDMMC1 },
403 Vector { _handler: TIM5 },
404 Vector { _handler: SPI3 },
405 Vector { _handler: UART4 },
406 Vector { _handler: UART5 },
407 Vector { _handler: TIM6_DAC },
408 Vector { _handler: TIM7 },
409 Vector {
410 _handler: DMA2_Channel1,
411 },
412 Vector {
413 _handler: DMA2_Channel2,
414 },
415 Vector {
416 _handler: DMA2_Channel3,
417 },
418 Vector {
419 _handler: DMA2_Channel4,
420 },
421 Vector {
422 _handler: DMA2_Channel5,
423 },
424 Vector {
425 _handler: DFSDM1_FLT0,
426 },
427 Vector {
428 _handler: DFSDM1_FLT1,
429 },
430 Vector {
431 _handler: DFSDM1_FLT2,
432 },
433 Vector { _handler: COMP },
434 Vector { _handler: LPTIM1 },
435 Vector { _handler: LPTIM2 },
436 Vector { _handler: OTG_FS },
437 Vector {
438 _handler: DMA2_Channel6,
439 },
440 Vector {
441 _handler: DMA2_Channel7,
442 },
443 Vector { _handler: LPUART1 },
444 Vector { _handler: QUADSPI },
445 Vector { _handler: I2C3_EV },
446 Vector { _handler: I2C3_ER },
447 Vector { _handler: SAI1 },
448 Vector { _handler: SAI2 },
449 Vector { _handler: SWPMI1 },
450 Vector { _handler: TSC },
451 Vector { _handler: LCD },
452 Vector { _handler: AES },
453 Vector { _handler: HASH_RNG },
454 Vector { _handler: FPU },
455 Vector { _handler: CRS },
456 Vector { _handler: I2C4_EV },
457 Vector { _handler: I2C4_ER },
458 Vector { _handler: DCMI },
459 Vector { _handler: CAN2_TX },
460 Vector { _handler: CAN2_RX0 },
461 Vector { _handler: CAN2_RX1 },
462 Vector { _handler: CAN2_SCE },
463 Vector { _handler: DMA2D },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4a6zg.rs b/embassy-stm32/src/chip/stm32l4a6zg.rs
index d758caee1..a3e227f1f 100644
--- a/embassy-stm32/src/chip/stm32l4a6zg.rs
+++ b/embassy-stm32/src/chip/stm32l4a6zg.rs
@@ -2,21 +2,467 @@ use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D,
5 PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, 5 EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15,
6 PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, 6 PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1,
7 PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, 7 PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3,
8 PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, 8 PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5,
9 PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, 9 PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7,
10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, 10 PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9,
11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, 11 PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10,
12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, 12 PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11,
13 PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, 13 PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1,
14 OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, 14 OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG,
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 ADC3 = 47,
33 AES = 79,
34 CAN1_RX0 = 20,
35 CAN1_RX1 = 21,
36 CAN1_SCE = 22,
37 CAN1_TX = 19,
38 CAN2_RX0 = 87,
39 CAN2_RX1 = 88,
40 CAN2_SCE = 89,
41 CAN2_TX = 86,
42 COMP = 64,
43 CRS = 82,
44 DCMI = 85,
45 DFSDM1_FLT0 = 61,
46 DFSDM1_FLT1 = 62,
47 DFSDM1_FLT2 = 63,
48 DFSDM1_FLT3 = 42,
49 DMA1_Channel1 = 11,
50 DMA1_Channel2 = 12,
51 DMA1_Channel3 = 13,
52 DMA1_Channel4 = 14,
53 DMA1_Channel5 = 15,
54 DMA1_Channel6 = 16,
55 DMA1_Channel7 = 17,
56 DMA2D = 90,
57 DMA2_Channel1 = 56,
58 DMA2_Channel2 = 57,
59 DMA2_Channel3 = 58,
60 DMA2_Channel4 = 59,
61 DMA2_Channel5 = 60,
62 DMA2_Channel6 = 68,
63 DMA2_Channel7 = 69,
64 EXTI0 = 6,
65 EXTI1 = 7,
66 EXTI15_10 = 40,
67 EXTI2 = 8,
68 EXTI3 = 9,
69 EXTI4 = 10,
70 EXTI9_5 = 23,
71 FLASH = 4,
72 FMC = 48,
73 FPU = 81,
74 HASH_RNG = 80,
75 I2C1_ER = 32,
76 I2C1_EV = 31,
77 I2C2_ER = 34,
78 I2C2_EV = 33,
79 I2C3_ER = 73,
80 I2C3_EV = 72,
81 I2C4_ER = 84,
82 I2C4_EV = 83,
83 LCD = 78,
84 LPTIM1 = 65,
85 LPTIM2 = 66,
86 LPUART1 = 70,
87 OTG_FS = 67,
88 PVD_PVM = 1,
89 QUADSPI = 71,
90 RCC = 5,
91 RTC_Alarm = 41,
92 RTC_WKUP = 3,
93 SAI1 = 74,
94 SAI2 = 75,
95 SDMMC1 = 49,
96 SPI1 = 35,
97 SPI2 = 36,
98 SPI3 = 51,
99 SWPMI1 = 76,
100 TAMP_STAMP = 2,
101 TIM1_BRK_TIM15 = 24,
102 TIM1_CC = 27,
103 TIM1_TRG_COM_TIM17 = 26,
104 TIM1_UP_TIM16 = 25,
105 TIM2 = 28,
106 TIM3 = 29,
107 TIM4 = 30,
108 TIM5 = 50,
109 TIM6_DAC = 54,
110 TIM7 = 55,
111 TIM8_BRK = 43,
112 TIM8_CC = 46,
113 TIM8_TRG_COM = 45,
114 TIM8_UP = 44,
115 TSC = 77,
116 UART4 = 52,
117 UART5 = 53,
118 USART1 = 37,
119 USART2 = 38,
120 USART3 = 39,
121 WWDG = 0,
122 }
123 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
124 #[inline(always)]
125 fn number(self) -> u16 {
126 self as u16
127 }
128 }
129
130 declare!(ADC1_2);
131 declare!(ADC3);
132 declare!(AES);
133 declare!(CAN1_RX0);
134 declare!(CAN1_RX1);
135 declare!(CAN1_SCE);
136 declare!(CAN1_TX);
137 declare!(CAN2_RX0);
138 declare!(CAN2_RX1);
139 declare!(CAN2_SCE);
140 declare!(CAN2_TX);
141 declare!(COMP);
142 declare!(CRS);
143 declare!(DCMI);
144 declare!(DFSDM1_FLT0);
145 declare!(DFSDM1_FLT1);
146 declare!(DFSDM1_FLT2);
147 declare!(DFSDM1_FLT3);
148 declare!(DMA1_Channel1);
149 declare!(DMA1_Channel2);
150 declare!(DMA1_Channel3);
151 declare!(DMA1_Channel4);
152 declare!(DMA1_Channel5);
153 declare!(DMA1_Channel6);
154 declare!(DMA1_Channel7);
155 declare!(DMA2D);
156 declare!(DMA2_Channel1);
157 declare!(DMA2_Channel2);
158 declare!(DMA2_Channel3);
159 declare!(DMA2_Channel4);
160 declare!(DMA2_Channel5);
161 declare!(DMA2_Channel6);
162 declare!(DMA2_Channel7);
163 declare!(EXTI0);
164 declare!(EXTI1);
165 declare!(EXTI15_10);
166 declare!(EXTI2);
167 declare!(EXTI3);
168 declare!(EXTI4);
169 declare!(EXTI9_5);
170 declare!(FLASH);
171 declare!(FMC);
172 declare!(FPU);
173 declare!(HASH_RNG);
174 declare!(I2C1_ER);
175 declare!(I2C1_EV);
176 declare!(I2C2_ER);
177 declare!(I2C2_EV);
178 declare!(I2C3_ER);
179 declare!(I2C3_EV);
180 declare!(I2C4_ER);
181 declare!(I2C4_EV);
182 declare!(LCD);
183 declare!(LPTIM1);
184 declare!(LPTIM2);
185 declare!(LPUART1);
186 declare!(OTG_FS);
187 declare!(PVD_PVM);
188 declare!(QUADSPI);
189 declare!(RCC);
190 declare!(RTC_Alarm);
191 declare!(RTC_WKUP);
192 declare!(SAI1);
193 declare!(SAI2);
194 declare!(SDMMC1);
195 declare!(SPI1);
196 declare!(SPI2);
197 declare!(SPI3);
198 declare!(SWPMI1);
199 declare!(TAMP_STAMP);
200 declare!(TIM1_BRK_TIM15);
201 declare!(TIM1_CC);
202 declare!(TIM1_TRG_COM_TIM17);
203 declare!(TIM1_UP_TIM16);
204 declare!(TIM2);
205 declare!(TIM3);
206 declare!(TIM4);
207 declare!(TIM5);
208 declare!(TIM6_DAC);
209 declare!(TIM7);
210 declare!(TIM8_BRK);
211 declare!(TIM8_CC);
212 declare!(TIM8_TRG_COM);
213 declare!(TIM8_UP);
214 declare!(TSC);
215 declare!(UART4);
216 declare!(UART5);
217 declare!(USART1);
218 declare!(USART2);
219 declare!(USART3);
220 declare!(WWDG);
221}
222mod interrupt_vector {
223 extern "C" {
224 fn ADC1_2();
225 fn ADC3();
226 fn AES();
227 fn CAN1_RX0();
228 fn CAN1_RX1();
229 fn CAN1_SCE();
230 fn CAN1_TX();
231 fn CAN2_RX0();
232 fn CAN2_RX1();
233 fn CAN2_SCE();
234 fn CAN2_TX();
235 fn COMP();
236 fn CRS();
237 fn DCMI();
238 fn DFSDM1_FLT0();
239 fn DFSDM1_FLT1();
240 fn DFSDM1_FLT2();
241 fn DFSDM1_FLT3();
242 fn DMA1_Channel1();
243 fn DMA1_Channel2();
244 fn DMA1_Channel3();
245 fn DMA1_Channel4();
246 fn DMA1_Channel5();
247 fn DMA1_Channel6();
248 fn DMA1_Channel7();
249 fn DMA2D();
250 fn DMA2_Channel1();
251 fn DMA2_Channel2();
252 fn DMA2_Channel3();
253 fn DMA2_Channel4();
254 fn DMA2_Channel5();
255 fn DMA2_Channel6();
256 fn DMA2_Channel7();
257 fn EXTI0();
258 fn EXTI1();
259 fn EXTI15_10();
260 fn EXTI2();
261 fn EXTI3();
262 fn EXTI4();
263 fn EXTI9_5();
264 fn FLASH();
265 fn FMC();
266 fn FPU();
267 fn HASH_RNG();
268 fn I2C1_ER();
269 fn I2C1_EV();
270 fn I2C2_ER();
271 fn I2C2_EV();
272 fn I2C3_ER();
273 fn I2C3_EV();
274 fn I2C4_ER();
275 fn I2C4_EV();
276 fn LCD();
277 fn LPTIM1();
278 fn LPTIM2();
279 fn LPUART1();
280 fn OTG_FS();
281 fn PVD_PVM();
282 fn QUADSPI();
283 fn RCC();
284 fn RTC_Alarm();
285 fn RTC_WKUP();
286 fn SAI1();
287 fn SAI2();
288 fn SDMMC1();
289 fn SPI1();
290 fn SPI2();
291 fn SPI3();
292 fn SWPMI1();
293 fn TAMP_STAMP();
294 fn TIM1_BRK_TIM15();
295 fn TIM1_CC();
296 fn TIM1_TRG_COM_TIM17();
297 fn TIM1_UP_TIM16();
298 fn TIM2();
299 fn TIM3();
300 fn TIM4();
301 fn TIM5();
302 fn TIM6_DAC();
303 fn TIM7();
304 fn TIM8_BRK();
305 fn TIM8_CC();
306 fn TIM8_TRG_COM();
307 fn TIM8_UP();
308 fn TSC();
309 fn UART4();
310 fn UART5();
311 fn USART1();
312 fn USART2();
313 fn USART3();
314 fn WWDG();
315 }
316 pub union Vector {
317 _handler: unsafe extern "C" fn(),
318 _reserved: u32,
319 }
320 #[link_section = ".vector_table.interrupts"]
321 #[no_mangle]
322 pub static __INTERRUPTS: [Vector; 91] = [
323 Vector { _handler: WWDG },
324 Vector { _handler: PVD_PVM },
325 Vector {
326 _handler: TAMP_STAMP,
327 },
328 Vector { _handler: RTC_WKUP },
329 Vector { _handler: FLASH },
330 Vector { _handler: RCC },
331 Vector { _handler: EXTI0 },
332 Vector { _handler: EXTI1 },
333 Vector { _handler: EXTI2 },
334 Vector { _handler: EXTI3 },
335 Vector { _handler: EXTI4 },
336 Vector {
337 _handler: DMA1_Channel1,
338 },
339 Vector {
340 _handler: DMA1_Channel2,
341 },
342 Vector {
343 _handler: DMA1_Channel3,
344 },
345 Vector {
346 _handler: DMA1_Channel4,
347 },
348 Vector {
349 _handler: DMA1_Channel5,
350 },
351 Vector {
352 _handler: DMA1_Channel6,
353 },
354 Vector {
355 _handler: DMA1_Channel7,
356 },
357 Vector { _handler: ADC1_2 },
358 Vector { _handler: CAN1_TX },
359 Vector { _handler: CAN1_RX0 },
360 Vector { _handler: CAN1_RX1 },
361 Vector { _handler: CAN1_SCE },
362 Vector { _handler: EXTI9_5 },
363 Vector {
364 _handler: TIM1_BRK_TIM15,
365 },
366 Vector {
367 _handler: TIM1_UP_TIM16,
368 },
369 Vector {
370 _handler: TIM1_TRG_COM_TIM17,
371 },
372 Vector { _handler: TIM1_CC },
373 Vector { _handler: TIM2 },
374 Vector { _handler: TIM3 },
375 Vector { _handler: TIM4 },
376 Vector { _handler: I2C1_EV },
377 Vector { _handler: I2C1_ER },
378 Vector { _handler: I2C2_EV },
379 Vector { _handler: I2C2_ER },
380 Vector { _handler: SPI1 },
381 Vector { _handler: SPI2 },
382 Vector { _handler: USART1 },
383 Vector { _handler: USART2 },
384 Vector { _handler: USART3 },
385 Vector {
386 _handler: EXTI15_10,
387 },
388 Vector {
389 _handler: RTC_Alarm,
390 },
391 Vector {
392 _handler: DFSDM1_FLT3,
393 },
394 Vector { _handler: TIM8_BRK },
395 Vector { _handler: TIM8_UP },
396 Vector {
397 _handler: TIM8_TRG_COM,
398 },
399 Vector { _handler: TIM8_CC },
400 Vector { _handler: ADC3 },
401 Vector { _handler: FMC },
402 Vector { _handler: SDMMC1 },
403 Vector { _handler: TIM5 },
404 Vector { _handler: SPI3 },
405 Vector { _handler: UART4 },
406 Vector { _handler: UART5 },
407 Vector { _handler: TIM6_DAC },
408 Vector { _handler: TIM7 },
409 Vector {
410 _handler: DMA2_Channel1,
411 },
412 Vector {
413 _handler: DMA2_Channel2,
414 },
415 Vector {
416 _handler: DMA2_Channel3,
417 },
418 Vector {
419 _handler: DMA2_Channel4,
420 },
421 Vector {
422 _handler: DMA2_Channel5,
423 },
424 Vector {
425 _handler: DFSDM1_FLT0,
426 },
427 Vector {
428 _handler: DFSDM1_FLT1,
429 },
430 Vector {
431 _handler: DFSDM1_FLT2,
432 },
433 Vector { _handler: COMP },
434 Vector { _handler: LPTIM1 },
435 Vector { _handler: LPTIM2 },
436 Vector { _handler: OTG_FS },
437 Vector {
438 _handler: DMA2_Channel6,
439 },
440 Vector {
441 _handler: DMA2_Channel7,
442 },
443 Vector { _handler: LPUART1 },
444 Vector { _handler: QUADSPI },
445 Vector { _handler: I2C3_EV },
446 Vector { _handler: I2C3_ER },
447 Vector { _handler: SAI1 },
448 Vector { _handler: SAI2 },
449 Vector { _handler: SWPMI1 },
450 Vector { _handler: TSC },
451 Vector { _handler: LCD },
452 Vector { _handler: AES },
453 Vector { _handler: HASH_RNG },
454 Vector { _handler: FPU },
455 Vector { _handler: CRS },
456 Vector { _handler: I2C4_EV },
457 Vector { _handler: I2C4_ER },
458 Vector { _handler: DCMI },
459 Vector { _handler: CAN2_TX },
460 Vector { _handler: CAN2_RX0 },
461 Vector { _handler: CAN2_RX1 },
462 Vector { _handler: CAN2_SCE },
463 Vector { _handler: DMA2D },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5ae.rs b/embassy-stm32/src/chip/stm32l4p5ae.rs
index 6d2a25917..66034e537 100644
--- a/embassy-stm32/src/chip/stm32l4p5ae.rs
+++ b/embassy-stm32/src/chip/stm32l4p5ae.rs
@@ -1,22 +1,457 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5ag.rs b/embassy-stm32/src/chip/stm32l4p5ag.rs
index 6d2a25917..66034e537 100644
--- a/embassy-stm32/src/chip/stm32l4p5ag.rs
+++ b/embassy-stm32/src/chip/stm32l4p5ag.rs
@@ -1,22 +1,457 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5ce.rs b/embassy-stm32/src/chip/stm32l4p5ce.rs
index f0ddb6b8d..e3622c0ec 100644
--- a/embassy-stm32/src/chip/stm32l4p5ce.rs
+++ b/embassy-stm32/src/chip/stm32l4p5ce.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DMA2D, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DMA2D, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -15,8 +15,443 @@ peripherals!(
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, USART2, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5cg.rs b/embassy-stm32/src/chip/stm32l4p5cg.rs
index f0ddb6b8d..e3622c0ec 100644
--- a/embassy-stm32/src/chip/stm32l4p5cg.rs
+++ b/embassy-stm32/src/chip/stm32l4p5cg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DMA2D, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DMA2D, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -15,8 +15,443 @@ peripherals!(
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, USART2, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5qe.rs b/embassy-stm32/src/chip/stm32l4p5qe.rs
index 6d2a25917..66034e537 100644
--- a/embassy-stm32/src/chip/stm32l4p5qe.rs
+++ b/embassy-stm32/src/chip/stm32l4p5qe.rs
@@ -1,22 +1,457 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5qg.rs b/embassy-stm32/src/chip/stm32l4p5qg.rs
index 6d2a25917..66034e537 100644
--- a/embassy-stm32/src/chip/stm32l4p5qg.rs
+++ b/embassy-stm32/src/chip/stm32l4p5qg.rs
@@ -1,22 +1,457 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5re.rs b/embassy-stm32/src/chip/stm32l4p5re.rs
index 2c9823ee8..c60e21456 100644
--- a/embassy-stm32/src/chip/stm32l4p5re.rs
+++ b/embassy-stm32/src/chip/stm32l4p5re.rs
@@ -1,22 +1,457 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5rg.rs b/embassy-stm32/src/chip/stm32l4p5rg.rs
index 2c9823ee8..c60e21456 100644
--- a/embassy-stm32/src/chip/stm32l4p5rg.rs
+++ b/embassy-stm32/src/chip/stm32l4p5rg.rs
@@ -1,22 +1,457 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5ve.rs b/embassy-stm32/src/chip/stm32l4p5ve.rs
index 6d2a25917..66034e537 100644
--- a/embassy-stm32/src/chip/stm32l4p5ve.rs
+++ b/embassy-stm32/src/chip/stm32l4p5ve.rs
@@ -1,22 +1,457 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5vg.rs b/embassy-stm32/src/chip/stm32l4p5vg.rs
index 6d2a25917..66034e537 100644
--- a/embassy-stm32/src/chip/stm32l4p5vg.rs
+++ b/embassy-stm32/src/chip/stm32l4p5vg.rs
@@ -1,22 +1,457 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5ze.rs b/embassy-stm32/src/chip/stm32l4p5ze.rs
index 6d2a25917..66034e537 100644
--- a/embassy-stm32/src/chip/stm32l4p5ze.rs
+++ b/embassy-stm32/src/chip/stm32l4p5ze.rs
@@ -1,22 +1,457 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4p5zg.rs b/embassy-stm32/src/chip/stm32l4p5zg.rs
index 6d2a25917..66034e537 100644
--- a/embassy-stm32/src/chip/stm32l4p5zg.rs
+++ b/embassy-stm32/src/chip/stm32l4p5zg.rs
@@ -1,22 +1,457 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 DCMI_PSSI = 85,
38 DFSDM1_FLT0 = 61,
39 DFSDM1_FLT1 = 62,
40 DMA1_Channel1 = 11,
41 DMA1_Channel2 = 12,
42 DMA1_Channel3 = 13,
43 DMA1_Channel4 = 14,
44 DMA1_Channel5 = 15,
45 DMA1_Channel6 = 16,
46 DMA1_Channel7 = 17,
47 DMA2D = 90,
48 DMA2_Channel1 = 56,
49 DMA2_Channel2 = 57,
50 DMA2_Channel3 = 58,
51 DMA2_Channel4 = 59,
52 DMA2_Channel5 = 60,
53 DMA2_Channel6 = 68,
54 DMA2_Channel7 = 69,
55 DMAMUX1_OVR = 94,
56 EXTI0 = 6,
57 EXTI1 = 7,
58 EXTI15_10 = 40,
59 EXTI2 = 8,
60 EXTI3 = 9,
61 EXTI4 = 10,
62 EXTI9_5 = 23,
63 FLASH = 4,
64 FMC = 48,
65 FPU = 81,
66 HASH_CRS = 82,
67 I2C1_ER = 32,
68 I2C1_EV = 31,
69 I2C2_ER = 34,
70 I2C2_EV = 33,
71 I2C3_ER = 73,
72 I2C3_EV = 72,
73 I2C4_ER = 83,
74 I2C4_EV = 84,
75 LPTIM1 = 65,
76 LPTIM2 = 66,
77 LPUART1 = 70,
78 LTDC = 91,
79 LTDC_ER = 92,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SDMMC2 = 47,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1_2);
126 declare!(CAN1_RX0);
127 declare!(CAN1_RX1);
128 declare!(CAN1_SCE);
129 declare!(CAN1_TX);
130 declare!(COMP);
131 declare!(DCMI_PSSI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DMA1_Channel1);
135 declare!(DMA1_Channel2);
136 declare!(DMA1_Channel3);
137 declare!(DMA1_Channel4);
138 declare!(DMA1_Channel5);
139 declare!(DMA1_Channel6);
140 declare!(DMA1_Channel7);
141 declare!(DMA2D);
142 declare!(DMA2_Channel1);
143 declare!(DMA2_Channel2);
144 declare!(DMA2_Channel3);
145 declare!(DMA2_Channel4);
146 declare!(DMA2_Channel5);
147 declare!(DMA2_Channel6);
148 declare!(DMA2_Channel7);
149 declare!(DMAMUX1_OVR);
150 declare!(EXTI0);
151 declare!(EXTI1);
152 declare!(EXTI15_10);
153 declare!(EXTI2);
154 declare!(EXTI3);
155 declare!(EXTI4);
156 declare!(EXTI9_5);
157 declare!(FLASH);
158 declare!(FMC);
159 declare!(FPU);
160 declare!(HASH_CRS);
161 declare!(I2C1_ER);
162 declare!(I2C1_EV);
163 declare!(I2C2_ER);
164 declare!(I2C2_EV);
165 declare!(I2C3_ER);
166 declare!(I2C3_EV);
167 declare!(I2C4_ER);
168 declare!(I2C4_EV);
169 declare!(LPTIM1);
170 declare!(LPTIM2);
171 declare!(LPUART1);
172 declare!(LTDC);
173 declare!(LTDC_ER);
174 declare!(OCTOSPI1);
175 declare!(OCTOSPI2);
176 declare!(OTG_FS);
177 declare!(PVD_PVM);
178 declare!(RCC);
179 declare!(RNG);
180 declare!(RTC_Alarm);
181 declare!(RTC_WKUP);
182 declare!(SAI1);
183 declare!(SAI2);
184 declare!(SDMMC1);
185 declare!(SDMMC2);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1_2();
215 fn CAN1_RX0();
216 fn CAN1_RX1();
217 fn CAN1_SCE();
218 fn CAN1_TX();
219 fn COMP();
220 fn DCMI_PSSI();
221 fn DFSDM1_FLT0();
222 fn DFSDM1_FLT1();
223 fn DMA1_Channel1();
224 fn DMA1_Channel2();
225 fn DMA1_Channel3();
226 fn DMA1_Channel4();
227 fn DMA1_Channel5();
228 fn DMA1_Channel6();
229 fn DMA1_Channel7();
230 fn DMA2D();
231 fn DMA2_Channel1();
232 fn DMA2_Channel2();
233 fn DMA2_Channel3();
234 fn DMA2_Channel4();
235 fn DMA2_Channel5();
236 fn DMA2_Channel6();
237 fn DMA2_Channel7();
238 fn DMAMUX1_OVR();
239 fn EXTI0();
240 fn EXTI1();
241 fn EXTI15_10();
242 fn EXTI2();
243 fn EXTI3();
244 fn EXTI4();
245 fn EXTI9_5();
246 fn FLASH();
247 fn FMC();
248 fn FPU();
249 fn HASH_CRS();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn LTDC();
262 fn LTDC_ER();
263 fn OCTOSPI1();
264 fn OCTOSPI2();
265 fn OTG_FS();
266 fn PVD_PVM();
267 fn RCC();
268 fn RNG();
269 fn RTC_Alarm();
270 fn RTC_WKUP();
271 fn SAI1();
272 fn SAI2();
273 fn SDMMC1();
274 fn SDMMC2();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1_2 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector { _reserved: 0 },
377 Vector { _handler: TIM8_BRK },
378 Vector { _handler: TIM8_UP },
379 Vector {
380 _handler: TIM8_TRG_COM,
381 },
382 Vector { _handler: TIM8_CC },
383 Vector { _handler: SDMMC2 },
384 Vector { _handler: FMC },
385 Vector { _handler: SDMMC1 },
386 Vector { _handler: TIM5 },
387 Vector { _handler: SPI3 },
388 Vector { _handler: UART4 },
389 Vector { _handler: UART5 },
390 Vector { _handler: TIM6_DAC },
391 Vector { _handler: TIM7 },
392 Vector {
393 _handler: DMA2_Channel1,
394 },
395 Vector {
396 _handler: DMA2_Channel2,
397 },
398 Vector {
399 _handler: DMA2_Channel3,
400 },
401 Vector {
402 _handler: DMA2_Channel4,
403 },
404 Vector {
405 _handler: DMA2_Channel5,
406 },
407 Vector {
408 _handler: DFSDM1_FLT0,
409 },
410 Vector {
411 _handler: DFSDM1_FLT1,
412 },
413 Vector { _reserved: 0 },
414 Vector { _handler: COMP },
415 Vector { _handler: LPTIM1 },
416 Vector { _handler: LPTIM2 },
417 Vector { _handler: OTG_FS },
418 Vector {
419 _handler: DMA2_Channel6,
420 },
421 Vector {
422 _handler: DMA2_Channel7,
423 },
424 Vector { _handler: LPUART1 },
425 Vector { _handler: OCTOSPI1 },
426 Vector { _handler: I2C3_EV },
427 Vector { _handler: I2C3_ER },
428 Vector { _handler: SAI1 },
429 Vector { _handler: SAI2 },
430 Vector { _handler: OCTOSPI2 },
431 Vector { _handler: TSC },
432 Vector { _reserved: 0 },
433 Vector { _reserved: 0 },
434 Vector { _handler: RNG },
435 Vector { _handler: FPU },
436 Vector { _handler: HASH_CRS },
437 Vector { _handler: I2C4_ER },
438 Vector { _handler: I2C4_EV },
439 Vector {
440 _handler: DCMI_PSSI,
441 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _handler: DMA2D },
447 Vector { _handler: LTDC },
448 Vector { _handler: LTDC_ER },
449 Vector { _reserved: 0 },
450 Vector {
451 _handler: DMAMUX1_OVR,
452 },
453 ];
454}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 455impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 456impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 457impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4q5ag.rs b/embassy-stm32/src/chip/stm32l4q5ag.rs
index 295c68f1c..64643dc4e 100644
--- a/embassy-stm32/src/chip/stm32l4q5ag.rs
+++ b/embassy-stm32/src/chip/stm32l4q5ag.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,449 @@ peripherals!(
15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI_PSSI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2D = 90,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 DMAMUX1_OVR = 94,
57 EXTI0 = 6,
58 EXTI1 = 7,
59 EXTI15_10 = 40,
60 EXTI2 = 8,
61 EXTI3 = 9,
62 EXTI4 = 10,
63 EXTI9_5 = 23,
64 FLASH = 4,
65 FMC = 48,
66 FPU = 81,
67 HASH_CRS = 82,
68 I2C1_ER = 32,
69 I2C1_EV = 31,
70 I2C2_ER = 34,
71 I2C2_EV = 33,
72 I2C3_ER = 73,
73 I2C3_EV = 72,
74 I2C4_ER = 83,
75 I2C4_EV = 84,
76 LPTIM1 = 65,
77 LPTIM2 = 66,
78 LPUART1 = 70,
79 LTDC = 91,
80 LTDC_ER = 92,
81 OCTOSPI1 = 71,
82 OCTOSPI2 = 76,
83 OTG_FS = 67,
84 PKA = 86,
85 PVD_PVM = 1,
86 RCC = 5,
87 RNG = 80,
88 RTC_Alarm = 41,
89 RTC_WKUP = 3,
90 SAI1 = 74,
91 SAI2 = 75,
92 SDMMC1 = 49,
93 SDMMC2 = 47,
94 SPI1 = 35,
95 SPI2 = 36,
96 SPI3 = 51,
97 TAMP_STAMP = 2,
98 TIM1_BRK_TIM15 = 24,
99 TIM1_CC = 27,
100 TIM1_TRG_COM_TIM17 = 26,
101 TIM1_UP_TIM16 = 25,
102 TIM2 = 28,
103 TIM3 = 29,
104 TIM4 = 30,
105 TIM5 = 50,
106 TIM6_DAC = 54,
107 TIM7 = 55,
108 TIM8_BRK = 43,
109 TIM8_CC = 46,
110 TIM8_TRG_COM = 45,
111 TIM8_UP = 44,
112 TSC = 77,
113 UART4 = 52,
114 UART5 = 53,
115 USART1 = 37,
116 USART2 = 38,
117 USART3 = 39,
118 WWDG = 0,
119 }
120 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
121 #[inline(always)]
122 fn number(self) -> u16 {
123 self as u16
124 }
125 }
126
127 declare!(ADC1_2);
128 declare!(AES);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(DCMI_PSSI);
135 declare!(DFSDM1_FLT0);
136 declare!(DFSDM1_FLT1);
137 declare!(DMA1_Channel1);
138 declare!(DMA1_Channel2);
139 declare!(DMA1_Channel3);
140 declare!(DMA1_Channel4);
141 declare!(DMA1_Channel5);
142 declare!(DMA1_Channel6);
143 declare!(DMA1_Channel7);
144 declare!(DMA2D);
145 declare!(DMA2_Channel1);
146 declare!(DMA2_Channel2);
147 declare!(DMA2_Channel3);
148 declare!(DMA2_Channel4);
149 declare!(DMA2_Channel5);
150 declare!(DMA2_Channel6);
151 declare!(DMA2_Channel7);
152 declare!(DMAMUX1_OVR);
153 declare!(EXTI0);
154 declare!(EXTI1);
155 declare!(EXTI15_10);
156 declare!(EXTI2);
157 declare!(EXTI3);
158 declare!(EXTI4);
159 declare!(EXTI9_5);
160 declare!(FLASH);
161 declare!(FMC);
162 declare!(FPU);
163 declare!(HASH_CRS);
164 declare!(I2C1_ER);
165 declare!(I2C1_EV);
166 declare!(I2C2_ER);
167 declare!(I2C2_EV);
168 declare!(I2C3_ER);
169 declare!(I2C3_EV);
170 declare!(I2C4_ER);
171 declare!(I2C4_EV);
172 declare!(LPTIM1);
173 declare!(LPTIM2);
174 declare!(LPUART1);
175 declare!(LTDC);
176 declare!(LTDC_ER);
177 declare!(OCTOSPI1);
178 declare!(OCTOSPI2);
179 declare!(OTG_FS);
180 declare!(PKA);
181 declare!(PVD_PVM);
182 declare!(RCC);
183 declare!(RNG);
184 declare!(RTC_Alarm);
185 declare!(RTC_WKUP);
186 declare!(SAI1);
187 declare!(SAI2);
188 declare!(SDMMC1);
189 declare!(SDMMC2);
190 declare!(SPI1);
191 declare!(SPI2);
192 declare!(SPI3);
193 declare!(TAMP_STAMP);
194 declare!(TIM1_BRK_TIM15);
195 declare!(TIM1_CC);
196 declare!(TIM1_TRG_COM_TIM17);
197 declare!(TIM1_UP_TIM16);
198 declare!(TIM2);
199 declare!(TIM3);
200 declare!(TIM4);
201 declare!(TIM5);
202 declare!(TIM6_DAC);
203 declare!(TIM7);
204 declare!(TIM8_BRK);
205 declare!(TIM8_CC);
206 declare!(TIM8_TRG_COM);
207 declare!(TIM8_UP);
208 declare!(TSC);
209 declare!(UART4);
210 declare!(UART5);
211 declare!(USART1);
212 declare!(USART2);
213 declare!(USART3);
214 declare!(WWDG);
215}
216mod interrupt_vector {
217 extern "C" {
218 fn ADC1_2();
219 fn AES();
220 fn CAN1_RX0();
221 fn CAN1_RX1();
222 fn CAN1_SCE();
223 fn CAN1_TX();
224 fn COMP();
225 fn DCMI_PSSI();
226 fn DFSDM1_FLT0();
227 fn DFSDM1_FLT1();
228 fn DMA1_Channel1();
229 fn DMA1_Channel2();
230 fn DMA1_Channel3();
231 fn DMA1_Channel4();
232 fn DMA1_Channel5();
233 fn DMA1_Channel6();
234 fn DMA1_Channel7();
235 fn DMA2D();
236 fn DMA2_Channel1();
237 fn DMA2_Channel2();
238 fn DMA2_Channel3();
239 fn DMA2_Channel4();
240 fn DMA2_Channel5();
241 fn DMA2_Channel6();
242 fn DMA2_Channel7();
243 fn DMAMUX1_OVR();
244 fn EXTI0();
245 fn EXTI1();
246 fn EXTI15_10();
247 fn EXTI2();
248 fn EXTI3();
249 fn EXTI4();
250 fn EXTI9_5();
251 fn FLASH();
252 fn FMC();
253 fn FPU();
254 fn HASH_CRS();
255 fn I2C1_ER();
256 fn I2C1_EV();
257 fn I2C2_ER();
258 fn I2C2_EV();
259 fn I2C3_ER();
260 fn I2C3_EV();
261 fn I2C4_ER();
262 fn I2C4_EV();
263 fn LPTIM1();
264 fn LPTIM2();
265 fn LPUART1();
266 fn LTDC();
267 fn LTDC_ER();
268 fn OCTOSPI1();
269 fn OCTOSPI2();
270 fn OTG_FS();
271 fn PKA();
272 fn PVD_PVM();
273 fn RCC();
274 fn RNG();
275 fn RTC_Alarm();
276 fn RTC_WKUP();
277 fn SAI1();
278 fn SAI2();
279 fn SDMMC1();
280 fn SDMMC2();
281 fn SPI1();
282 fn SPI2();
283 fn SPI3();
284 fn TAMP_STAMP();
285 fn TIM1_BRK_TIM15();
286 fn TIM1_CC();
287 fn TIM1_TRG_COM_TIM17();
288 fn TIM1_UP_TIM16();
289 fn TIM2();
290 fn TIM3();
291 fn TIM4();
292 fn TIM5();
293 fn TIM6_DAC();
294 fn TIM7();
295 fn TIM8_BRK();
296 fn TIM8_CC();
297 fn TIM8_TRG_COM();
298 fn TIM8_UP();
299 fn TSC();
300 fn UART4();
301 fn UART5();
302 fn USART1();
303 fn USART2();
304 fn USART3();
305 fn WWDG();
306 }
307 pub union Vector {
308 _handler: unsafe extern "C" fn(),
309 _reserved: u32,
310 }
311 #[link_section = ".vector_table.interrupts"]
312 #[no_mangle]
313 pub static __INTERRUPTS: [Vector; 95] = [
314 Vector { _handler: WWDG },
315 Vector { _handler: PVD_PVM },
316 Vector {
317 _handler: TAMP_STAMP,
318 },
319 Vector { _handler: RTC_WKUP },
320 Vector { _handler: FLASH },
321 Vector { _handler: RCC },
322 Vector { _handler: EXTI0 },
323 Vector { _handler: EXTI1 },
324 Vector { _handler: EXTI2 },
325 Vector { _handler: EXTI3 },
326 Vector { _handler: EXTI4 },
327 Vector {
328 _handler: DMA1_Channel1,
329 },
330 Vector {
331 _handler: DMA1_Channel2,
332 },
333 Vector {
334 _handler: DMA1_Channel3,
335 },
336 Vector {
337 _handler: DMA1_Channel4,
338 },
339 Vector {
340 _handler: DMA1_Channel5,
341 },
342 Vector {
343 _handler: DMA1_Channel6,
344 },
345 Vector {
346 _handler: DMA1_Channel7,
347 },
348 Vector { _handler: ADC1_2 },
349 Vector { _handler: CAN1_TX },
350 Vector { _handler: CAN1_RX0 },
351 Vector { _handler: CAN1_RX1 },
352 Vector { _handler: CAN1_SCE },
353 Vector { _handler: EXTI9_5 },
354 Vector {
355 _handler: TIM1_BRK_TIM15,
356 },
357 Vector {
358 _handler: TIM1_UP_TIM16,
359 },
360 Vector {
361 _handler: TIM1_TRG_COM_TIM17,
362 },
363 Vector { _handler: TIM1_CC },
364 Vector { _handler: TIM2 },
365 Vector { _handler: TIM3 },
366 Vector { _handler: TIM4 },
367 Vector { _handler: I2C1_EV },
368 Vector { _handler: I2C1_ER },
369 Vector { _handler: I2C2_EV },
370 Vector { _handler: I2C2_ER },
371 Vector { _handler: SPI1 },
372 Vector { _handler: SPI2 },
373 Vector { _handler: USART1 },
374 Vector { _handler: USART2 },
375 Vector { _handler: USART3 },
376 Vector {
377 _handler: EXTI15_10,
378 },
379 Vector {
380 _handler: RTC_Alarm,
381 },
382 Vector { _reserved: 0 },
383 Vector { _handler: TIM8_BRK },
384 Vector { _handler: TIM8_UP },
385 Vector {
386 _handler: TIM8_TRG_COM,
387 },
388 Vector { _handler: TIM8_CC },
389 Vector { _handler: SDMMC2 },
390 Vector { _handler: FMC },
391 Vector { _handler: SDMMC1 },
392 Vector { _handler: TIM5 },
393 Vector { _handler: SPI3 },
394 Vector { _handler: UART4 },
395 Vector { _handler: UART5 },
396 Vector { _handler: TIM6_DAC },
397 Vector { _handler: TIM7 },
398 Vector {
399 _handler: DMA2_Channel1,
400 },
401 Vector {
402 _handler: DMA2_Channel2,
403 },
404 Vector {
405 _handler: DMA2_Channel3,
406 },
407 Vector {
408 _handler: DMA2_Channel4,
409 },
410 Vector {
411 _handler: DMA2_Channel5,
412 },
413 Vector {
414 _handler: DFSDM1_FLT0,
415 },
416 Vector {
417 _handler: DFSDM1_FLT1,
418 },
419 Vector { _reserved: 0 },
420 Vector { _handler: COMP },
421 Vector { _handler: LPTIM1 },
422 Vector { _handler: LPTIM2 },
423 Vector { _handler: OTG_FS },
424 Vector {
425 _handler: DMA2_Channel6,
426 },
427 Vector {
428 _handler: DMA2_Channel7,
429 },
430 Vector { _handler: LPUART1 },
431 Vector { _handler: OCTOSPI1 },
432 Vector { _handler: I2C3_EV },
433 Vector { _handler: I2C3_ER },
434 Vector { _handler: SAI1 },
435 Vector { _handler: SAI2 },
436 Vector { _handler: OCTOSPI2 },
437 Vector { _handler: TSC },
438 Vector { _reserved: 0 },
439 Vector { _handler: AES },
440 Vector { _handler: RNG },
441 Vector { _handler: FPU },
442 Vector { _handler: HASH_CRS },
443 Vector { _handler: I2C4_ER },
444 Vector { _handler: I2C4_EV },
445 Vector {
446 _handler: DCMI_PSSI,
447 },
448 Vector { _handler: PKA },
449 Vector { _reserved: 0 },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector { _handler: DMA2D },
453 Vector { _handler: LTDC },
454 Vector { _handler: LTDC_ER },
455 Vector { _reserved: 0 },
456 Vector {
457 _handler: DMAMUX1_OVR,
458 },
459 ];
460}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 461impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 462impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 463impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4q5cg.rs b/embassy-stm32/src/chip/stm32l4q5cg.rs
index 1ae248437..75adefddd 100644
--- a/embassy-stm32/src/chip/stm32l4q5cg.rs
+++ b/embassy-stm32/src/chip/stm32l4q5cg.rs
@@ -1,22 +1,463 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPIM, OPAMP1, OPAMP2, PKA, RCC, RNG, RTC, SAI1, SAI2, SDMMC2, SPI1, SPI2, SPI3, SYSCFG, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PKA, RCC, RNG, RTC, SAI1, SAI2, SDMMC2, SPI1, SPI2, SPI3,
15 TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, 15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI_PSSI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2D = 90,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 DMAMUX1_OVR = 94,
57 EXTI0 = 6,
58 EXTI1 = 7,
59 EXTI15_10 = 40,
60 EXTI2 = 8,
61 EXTI3 = 9,
62 EXTI4 = 10,
63 EXTI9_5 = 23,
64 FLASH = 4,
65 FMC = 48,
66 FPU = 81,
67 HASH_CRS = 82,
68 I2C1_ER = 32,
69 I2C1_EV = 31,
70 I2C2_ER = 34,
71 I2C2_EV = 33,
72 I2C3_ER = 73,
73 I2C3_EV = 72,
74 I2C4_ER = 83,
75 I2C4_EV = 84,
76 LPTIM1 = 65,
77 LPTIM2 = 66,
78 LPUART1 = 70,
79 LTDC = 91,
80 LTDC_ER = 92,
81 OCTOSPI1 = 71,
82 OCTOSPI2 = 76,
83 OTG_FS = 67,
84 PKA = 86,
85 PVD_PVM = 1,
86 RCC = 5,
87 RNG = 80,
88 RTC_Alarm = 41,
89 RTC_WKUP = 3,
90 SAI1 = 74,
91 SAI2 = 75,
92 SDMMC1 = 49,
93 SDMMC2 = 47,
94 SPI1 = 35,
95 SPI2 = 36,
96 SPI3 = 51,
97 TAMP_STAMP = 2,
98 TIM1_BRK_TIM15 = 24,
99 TIM1_CC = 27,
100 TIM1_TRG_COM_TIM17 = 26,
101 TIM1_UP_TIM16 = 25,
102 TIM2 = 28,
103 TIM3 = 29,
104 TIM4 = 30,
105 TIM5 = 50,
106 TIM6_DAC = 54,
107 TIM7 = 55,
108 TIM8_BRK = 43,
109 TIM8_CC = 46,
110 TIM8_TRG_COM = 45,
111 TIM8_UP = 44,
112 TSC = 77,
113 UART4 = 52,
114 UART5 = 53,
115 USART1 = 37,
116 USART2 = 38,
117 USART3 = 39,
118 WWDG = 0,
119 }
120 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
121 #[inline(always)]
122 fn number(self) -> u16 {
123 self as u16
124 }
125 }
126
127 declare!(ADC1_2);
128 declare!(AES);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(DCMI_PSSI);
135 declare!(DFSDM1_FLT0);
136 declare!(DFSDM1_FLT1);
137 declare!(DMA1_Channel1);
138 declare!(DMA1_Channel2);
139 declare!(DMA1_Channel3);
140 declare!(DMA1_Channel4);
141 declare!(DMA1_Channel5);
142 declare!(DMA1_Channel6);
143 declare!(DMA1_Channel7);
144 declare!(DMA2D);
145 declare!(DMA2_Channel1);
146 declare!(DMA2_Channel2);
147 declare!(DMA2_Channel3);
148 declare!(DMA2_Channel4);
149 declare!(DMA2_Channel5);
150 declare!(DMA2_Channel6);
151 declare!(DMA2_Channel7);
152 declare!(DMAMUX1_OVR);
153 declare!(EXTI0);
154 declare!(EXTI1);
155 declare!(EXTI15_10);
156 declare!(EXTI2);
157 declare!(EXTI3);
158 declare!(EXTI4);
159 declare!(EXTI9_5);
160 declare!(FLASH);
161 declare!(FMC);
162 declare!(FPU);
163 declare!(HASH_CRS);
164 declare!(I2C1_ER);
165 declare!(I2C1_EV);
166 declare!(I2C2_ER);
167 declare!(I2C2_EV);
168 declare!(I2C3_ER);
169 declare!(I2C3_EV);
170 declare!(I2C4_ER);
171 declare!(I2C4_EV);
172 declare!(LPTIM1);
173 declare!(LPTIM2);
174 declare!(LPUART1);
175 declare!(LTDC);
176 declare!(LTDC_ER);
177 declare!(OCTOSPI1);
178 declare!(OCTOSPI2);
179 declare!(OTG_FS);
180 declare!(PKA);
181 declare!(PVD_PVM);
182 declare!(RCC);
183 declare!(RNG);
184 declare!(RTC_Alarm);
185 declare!(RTC_WKUP);
186 declare!(SAI1);
187 declare!(SAI2);
188 declare!(SDMMC1);
189 declare!(SDMMC2);
190 declare!(SPI1);
191 declare!(SPI2);
192 declare!(SPI3);
193 declare!(TAMP_STAMP);
194 declare!(TIM1_BRK_TIM15);
195 declare!(TIM1_CC);
196 declare!(TIM1_TRG_COM_TIM17);
197 declare!(TIM1_UP_TIM16);
198 declare!(TIM2);
199 declare!(TIM3);
200 declare!(TIM4);
201 declare!(TIM5);
202 declare!(TIM6_DAC);
203 declare!(TIM7);
204 declare!(TIM8_BRK);
205 declare!(TIM8_CC);
206 declare!(TIM8_TRG_COM);
207 declare!(TIM8_UP);
208 declare!(TSC);
209 declare!(UART4);
210 declare!(UART5);
211 declare!(USART1);
212 declare!(USART2);
213 declare!(USART3);
214 declare!(WWDG);
215}
216mod interrupt_vector {
217 extern "C" {
218 fn ADC1_2();
219 fn AES();
220 fn CAN1_RX0();
221 fn CAN1_RX1();
222 fn CAN1_SCE();
223 fn CAN1_TX();
224 fn COMP();
225 fn DCMI_PSSI();
226 fn DFSDM1_FLT0();
227 fn DFSDM1_FLT1();
228 fn DMA1_Channel1();
229 fn DMA1_Channel2();
230 fn DMA1_Channel3();
231 fn DMA1_Channel4();
232 fn DMA1_Channel5();
233 fn DMA1_Channel6();
234 fn DMA1_Channel7();
235 fn DMA2D();
236 fn DMA2_Channel1();
237 fn DMA2_Channel2();
238 fn DMA2_Channel3();
239 fn DMA2_Channel4();
240 fn DMA2_Channel5();
241 fn DMA2_Channel6();
242 fn DMA2_Channel7();
243 fn DMAMUX1_OVR();
244 fn EXTI0();
245 fn EXTI1();
246 fn EXTI15_10();
247 fn EXTI2();
248 fn EXTI3();
249 fn EXTI4();
250 fn EXTI9_5();
251 fn FLASH();
252 fn FMC();
253 fn FPU();
254 fn HASH_CRS();
255 fn I2C1_ER();
256 fn I2C1_EV();
257 fn I2C2_ER();
258 fn I2C2_EV();
259 fn I2C3_ER();
260 fn I2C3_EV();
261 fn I2C4_ER();
262 fn I2C4_EV();
263 fn LPTIM1();
264 fn LPTIM2();
265 fn LPUART1();
266 fn LTDC();
267 fn LTDC_ER();
268 fn OCTOSPI1();
269 fn OCTOSPI2();
270 fn OTG_FS();
271 fn PKA();
272 fn PVD_PVM();
273 fn RCC();
274 fn RNG();
275 fn RTC_Alarm();
276 fn RTC_WKUP();
277 fn SAI1();
278 fn SAI2();
279 fn SDMMC1();
280 fn SDMMC2();
281 fn SPI1();
282 fn SPI2();
283 fn SPI3();
284 fn TAMP_STAMP();
285 fn TIM1_BRK_TIM15();
286 fn TIM1_CC();
287 fn TIM1_TRG_COM_TIM17();
288 fn TIM1_UP_TIM16();
289 fn TIM2();
290 fn TIM3();
291 fn TIM4();
292 fn TIM5();
293 fn TIM6_DAC();
294 fn TIM7();
295 fn TIM8_BRK();
296 fn TIM8_CC();
297 fn TIM8_TRG_COM();
298 fn TIM8_UP();
299 fn TSC();
300 fn UART4();
301 fn UART5();
302 fn USART1();
303 fn USART2();
304 fn USART3();
305 fn WWDG();
306 }
307 pub union Vector {
308 _handler: unsafe extern "C" fn(),
309 _reserved: u32,
310 }
311 #[link_section = ".vector_table.interrupts"]
312 #[no_mangle]
313 pub static __INTERRUPTS: [Vector; 95] = [
314 Vector { _handler: WWDG },
315 Vector { _handler: PVD_PVM },
316 Vector {
317 _handler: TAMP_STAMP,
318 },
319 Vector { _handler: RTC_WKUP },
320 Vector { _handler: FLASH },
321 Vector { _handler: RCC },
322 Vector { _handler: EXTI0 },
323 Vector { _handler: EXTI1 },
324 Vector { _handler: EXTI2 },
325 Vector { _handler: EXTI3 },
326 Vector { _handler: EXTI4 },
327 Vector {
328 _handler: DMA1_Channel1,
329 },
330 Vector {
331 _handler: DMA1_Channel2,
332 },
333 Vector {
334 _handler: DMA1_Channel3,
335 },
336 Vector {
337 _handler: DMA1_Channel4,
338 },
339 Vector {
340 _handler: DMA1_Channel5,
341 },
342 Vector {
343 _handler: DMA1_Channel6,
344 },
345 Vector {
346 _handler: DMA1_Channel7,
347 },
348 Vector { _handler: ADC1_2 },
349 Vector { _handler: CAN1_TX },
350 Vector { _handler: CAN1_RX0 },
351 Vector { _handler: CAN1_RX1 },
352 Vector { _handler: CAN1_SCE },
353 Vector { _handler: EXTI9_5 },
354 Vector {
355 _handler: TIM1_BRK_TIM15,
356 },
357 Vector {
358 _handler: TIM1_UP_TIM16,
359 },
360 Vector {
361 _handler: TIM1_TRG_COM_TIM17,
362 },
363 Vector { _handler: TIM1_CC },
364 Vector { _handler: TIM2 },
365 Vector { _handler: TIM3 },
366 Vector { _handler: TIM4 },
367 Vector { _handler: I2C1_EV },
368 Vector { _handler: I2C1_ER },
369 Vector { _handler: I2C2_EV },
370 Vector { _handler: I2C2_ER },
371 Vector { _handler: SPI1 },
372 Vector { _handler: SPI2 },
373 Vector { _handler: USART1 },
374 Vector { _handler: USART2 },
375 Vector { _handler: USART3 },
376 Vector {
377 _handler: EXTI15_10,
378 },
379 Vector {
380 _handler: RTC_Alarm,
381 },
382 Vector { _reserved: 0 },
383 Vector { _handler: TIM8_BRK },
384 Vector { _handler: TIM8_UP },
385 Vector {
386 _handler: TIM8_TRG_COM,
387 },
388 Vector { _handler: TIM8_CC },
389 Vector { _handler: SDMMC2 },
390 Vector { _handler: FMC },
391 Vector { _handler: SDMMC1 },
392 Vector { _handler: TIM5 },
393 Vector { _handler: SPI3 },
394 Vector { _handler: UART4 },
395 Vector { _handler: UART5 },
396 Vector { _handler: TIM6_DAC },
397 Vector { _handler: TIM7 },
398 Vector {
399 _handler: DMA2_Channel1,
400 },
401 Vector {
402 _handler: DMA2_Channel2,
403 },
404 Vector {
405 _handler: DMA2_Channel3,
406 },
407 Vector {
408 _handler: DMA2_Channel4,
409 },
410 Vector {
411 _handler: DMA2_Channel5,
412 },
413 Vector {
414 _handler: DFSDM1_FLT0,
415 },
416 Vector {
417 _handler: DFSDM1_FLT1,
418 },
419 Vector { _reserved: 0 },
420 Vector { _handler: COMP },
421 Vector { _handler: LPTIM1 },
422 Vector { _handler: LPTIM2 },
423 Vector { _handler: OTG_FS },
424 Vector {
425 _handler: DMA2_Channel6,
426 },
427 Vector {
428 _handler: DMA2_Channel7,
429 },
430 Vector { _handler: LPUART1 },
431 Vector { _handler: OCTOSPI1 },
432 Vector { _handler: I2C3_EV },
433 Vector { _handler: I2C3_ER },
434 Vector { _handler: SAI1 },
435 Vector { _handler: SAI2 },
436 Vector { _handler: OCTOSPI2 },
437 Vector { _handler: TSC },
438 Vector { _reserved: 0 },
439 Vector { _handler: AES },
440 Vector { _handler: RNG },
441 Vector { _handler: FPU },
442 Vector { _handler: HASH_CRS },
443 Vector { _handler: I2C4_ER },
444 Vector { _handler: I2C4_EV },
445 Vector {
446 _handler: DCMI_PSSI,
447 },
448 Vector { _handler: PKA },
449 Vector { _reserved: 0 },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector { _handler: DMA2D },
453 Vector { _handler: LTDC },
454 Vector { _handler: LTDC_ER },
455 Vector { _reserved: 0 },
456 Vector {
457 _handler: DMAMUX1_OVR,
458 },
459 ];
460}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 461impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 462impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 463impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4q5qg.rs b/embassy-stm32/src/chip/stm32l4q5qg.rs
index 295c68f1c..64643dc4e 100644
--- a/embassy-stm32/src/chip/stm32l4q5qg.rs
+++ b/embassy-stm32/src/chip/stm32l4q5qg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,449 @@ peripherals!(
15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI_PSSI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2D = 90,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 DMAMUX1_OVR = 94,
57 EXTI0 = 6,
58 EXTI1 = 7,
59 EXTI15_10 = 40,
60 EXTI2 = 8,
61 EXTI3 = 9,
62 EXTI4 = 10,
63 EXTI9_5 = 23,
64 FLASH = 4,
65 FMC = 48,
66 FPU = 81,
67 HASH_CRS = 82,
68 I2C1_ER = 32,
69 I2C1_EV = 31,
70 I2C2_ER = 34,
71 I2C2_EV = 33,
72 I2C3_ER = 73,
73 I2C3_EV = 72,
74 I2C4_ER = 83,
75 I2C4_EV = 84,
76 LPTIM1 = 65,
77 LPTIM2 = 66,
78 LPUART1 = 70,
79 LTDC = 91,
80 LTDC_ER = 92,
81 OCTOSPI1 = 71,
82 OCTOSPI2 = 76,
83 OTG_FS = 67,
84 PKA = 86,
85 PVD_PVM = 1,
86 RCC = 5,
87 RNG = 80,
88 RTC_Alarm = 41,
89 RTC_WKUP = 3,
90 SAI1 = 74,
91 SAI2 = 75,
92 SDMMC1 = 49,
93 SDMMC2 = 47,
94 SPI1 = 35,
95 SPI2 = 36,
96 SPI3 = 51,
97 TAMP_STAMP = 2,
98 TIM1_BRK_TIM15 = 24,
99 TIM1_CC = 27,
100 TIM1_TRG_COM_TIM17 = 26,
101 TIM1_UP_TIM16 = 25,
102 TIM2 = 28,
103 TIM3 = 29,
104 TIM4 = 30,
105 TIM5 = 50,
106 TIM6_DAC = 54,
107 TIM7 = 55,
108 TIM8_BRK = 43,
109 TIM8_CC = 46,
110 TIM8_TRG_COM = 45,
111 TIM8_UP = 44,
112 TSC = 77,
113 UART4 = 52,
114 UART5 = 53,
115 USART1 = 37,
116 USART2 = 38,
117 USART3 = 39,
118 WWDG = 0,
119 }
120 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
121 #[inline(always)]
122 fn number(self) -> u16 {
123 self as u16
124 }
125 }
126
127 declare!(ADC1_2);
128 declare!(AES);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(DCMI_PSSI);
135 declare!(DFSDM1_FLT0);
136 declare!(DFSDM1_FLT1);
137 declare!(DMA1_Channel1);
138 declare!(DMA1_Channel2);
139 declare!(DMA1_Channel3);
140 declare!(DMA1_Channel4);
141 declare!(DMA1_Channel5);
142 declare!(DMA1_Channel6);
143 declare!(DMA1_Channel7);
144 declare!(DMA2D);
145 declare!(DMA2_Channel1);
146 declare!(DMA2_Channel2);
147 declare!(DMA2_Channel3);
148 declare!(DMA2_Channel4);
149 declare!(DMA2_Channel5);
150 declare!(DMA2_Channel6);
151 declare!(DMA2_Channel7);
152 declare!(DMAMUX1_OVR);
153 declare!(EXTI0);
154 declare!(EXTI1);
155 declare!(EXTI15_10);
156 declare!(EXTI2);
157 declare!(EXTI3);
158 declare!(EXTI4);
159 declare!(EXTI9_5);
160 declare!(FLASH);
161 declare!(FMC);
162 declare!(FPU);
163 declare!(HASH_CRS);
164 declare!(I2C1_ER);
165 declare!(I2C1_EV);
166 declare!(I2C2_ER);
167 declare!(I2C2_EV);
168 declare!(I2C3_ER);
169 declare!(I2C3_EV);
170 declare!(I2C4_ER);
171 declare!(I2C4_EV);
172 declare!(LPTIM1);
173 declare!(LPTIM2);
174 declare!(LPUART1);
175 declare!(LTDC);
176 declare!(LTDC_ER);
177 declare!(OCTOSPI1);
178 declare!(OCTOSPI2);
179 declare!(OTG_FS);
180 declare!(PKA);
181 declare!(PVD_PVM);
182 declare!(RCC);
183 declare!(RNG);
184 declare!(RTC_Alarm);
185 declare!(RTC_WKUP);
186 declare!(SAI1);
187 declare!(SAI2);
188 declare!(SDMMC1);
189 declare!(SDMMC2);
190 declare!(SPI1);
191 declare!(SPI2);
192 declare!(SPI3);
193 declare!(TAMP_STAMP);
194 declare!(TIM1_BRK_TIM15);
195 declare!(TIM1_CC);
196 declare!(TIM1_TRG_COM_TIM17);
197 declare!(TIM1_UP_TIM16);
198 declare!(TIM2);
199 declare!(TIM3);
200 declare!(TIM4);
201 declare!(TIM5);
202 declare!(TIM6_DAC);
203 declare!(TIM7);
204 declare!(TIM8_BRK);
205 declare!(TIM8_CC);
206 declare!(TIM8_TRG_COM);
207 declare!(TIM8_UP);
208 declare!(TSC);
209 declare!(UART4);
210 declare!(UART5);
211 declare!(USART1);
212 declare!(USART2);
213 declare!(USART3);
214 declare!(WWDG);
215}
216mod interrupt_vector {
217 extern "C" {
218 fn ADC1_2();
219 fn AES();
220 fn CAN1_RX0();
221 fn CAN1_RX1();
222 fn CAN1_SCE();
223 fn CAN1_TX();
224 fn COMP();
225 fn DCMI_PSSI();
226 fn DFSDM1_FLT0();
227 fn DFSDM1_FLT1();
228 fn DMA1_Channel1();
229 fn DMA1_Channel2();
230 fn DMA1_Channel3();
231 fn DMA1_Channel4();
232 fn DMA1_Channel5();
233 fn DMA1_Channel6();
234 fn DMA1_Channel7();
235 fn DMA2D();
236 fn DMA2_Channel1();
237 fn DMA2_Channel2();
238 fn DMA2_Channel3();
239 fn DMA2_Channel4();
240 fn DMA2_Channel5();
241 fn DMA2_Channel6();
242 fn DMA2_Channel7();
243 fn DMAMUX1_OVR();
244 fn EXTI0();
245 fn EXTI1();
246 fn EXTI15_10();
247 fn EXTI2();
248 fn EXTI3();
249 fn EXTI4();
250 fn EXTI9_5();
251 fn FLASH();
252 fn FMC();
253 fn FPU();
254 fn HASH_CRS();
255 fn I2C1_ER();
256 fn I2C1_EV();
257 fn I2C2_ER();
258 fn I2C2_EV();
259 fn I2C3_ER();
260 fn I2C3_EV();
261 fn I2C4_ER();
262 fn I2C4_EV();
263 fn LPTIM1();
264 fn LPTIM2();
265 fn LPUART1();
266 fn LTDC();
267 fn LTDC_ER();
268 fn OCTOSPI1();
269 fn OCTOSPI2();
270 fn OTG_FS();
271 fn PKA();
272 fn PVD_PVM();
273 fn RCC();
274 fn RNG();
275 fn RTC_Alarm();
276 fn RTC_WKUP();
277 fn SAI1();
278 fn SAI2();
279 fn SDMMC1();
280 fn SDMMC2();
281 fn SPI1();
282 fn SPI2();
283 fn SPI3();
284 fn TAMP_STAMP();
285 fn TIM1_BRK_TIM15();
286 fn TIM1_CC();
287 fn TIM1_TRG_COM_TIM17();
288 fn TIM1_UP_TIM16();
289 fn TIM2();
290 fn TIM3();
291 fn TIM4();
292 fn TIM5();
293 fn TIM6_DAC();
294 fn TIM7();
295 fn TIM8_BRK();
296 fn TIM8_CC();
297 fn TIM8_TRG_COM();
298 fn TIM8_UP();
299 fn TSC();
300 fn UART4();
301 fn UART5();
302 fn USART1();
303 fn USART2();
304 fn USART3();
305 fn WWDG();
306 }
307 pub union Vector {
308 _handler: unsafe extern "C" fn(),
309 _reserved: u32,
310 }
311 #[link_section = ".vector_table.interrupts"]
312 #[no_mangle]
313 pub static __INTERRUPTS: [Vector; 95] = [
314 Vector { _handler: WWDG },
315 Vector { _handler: PVD_PVM },
316 Vector {
317 _handler: TAMP_STAMP,
318 },
319 Vector { _handler: RTC_WKUP },
320 Vector { _handler: FLASH },
321 Vector { _handler: RCC },
322 Vector { _handler: EXTI0 },
323 Vector { _handler: EXTI1 },
324 Vector { _handler: EXTI2 },
325 Vector { _handler: EXTI3 },
326 Vector { _handler: EXTI4 },
327 Vector {
328 _handler: DMA1_Channel1,
329 },
330 Vector {
331 _handler: DMA1_Channel2,
332 },
333 Vector {
334 _handler: DMA1_Channel3,
335 },
336 Vector {
337 _handler: DMA1_Channel4,
338 },
339 Vector {
340 _handler: DMA1_Channel5,
341 },
342 Vector {
343 _handler: DMA1_Channel6,
344 },
345 Vector {
346 _handler: DMA1_Channel7,
347 },
348 Vector { _handler: ADC1_2 },
349 Vector { _handler: CAN1_TX },
350 Vector { _handler: CAN1_RX0 },
351 Vector { _handler: CAN1_RX1 },
352 Vector { _handler: CAN1_SCE },
353 Vector { _handler: EXTI9_5 },
354 Vector {
355 _handler: TIM1_BRK_TIM15,
356 },
357 Vector {
358 _handler: TIM1_UP_TIM16,
359 },
360 Vector {
361 _handler: TIM1_TRG_COM_TIM17,
362 },
363 Vector { _handler: TIM1_CC },
364 Vector { _handler: TIM2 },
365 Vector { _handler: TIM3 },
366 Vector { _handler: TIM4 },
367 Vector { _handler: I2C1_EV },
368 Vector { _handler: I2C1_ER },
369 Vector { _handler: I2C2_EV },
370 Vector { _handler: I2C2_ER },
371 Vector { _handler: SPI1 },
372 Vector { _handler: SPI2 },
373 Vector { _handler: USART1 },
374 Vector { _handler: USART2 },
375 Vector { _handler: USART3 },
376 Vector {
377 _handler: EXTI15_10,
378 },
379 Vector {
380 _handler: RTC_Alarm,
381 },
382 Vector { _reserved: 0 },
383 Vector { _handler: TIM8_BRK },
384 Vector { _handler: TIM8_UP },
385 Vector {
386 _handler: TIM8_TRG_COM,
387 },
388 Vector { _handler: TIM8_CC },
389 Vector { _handler: SDMMC2 },
390 Vector { _handler: FMC },
391 Vector { _handler: SDMMC1 },
392 Vector { _handler: TIM5 },
393 Vector { _handler: SPI3 },
394 Vector { _handler: UART4 },
395 Vector { _handler: UART5 },
396 Vector { _handler: TIM6_DAC },
397 Vector { _handler: TIM7 },
398 Vector {
399 _handler: DMA2_Channel1,
400 },
401 Vector {
402 _handler: DMA2_Channel2,
403 },
404 Vector {
405 _handler: DMA2_Channel3,
406 },
407 Vector {
408 _handler: DMA2_Channel4,
409 },
410 Vector {
411 _handler: DMA2_Channel5,
412 },
413 Vector {
414 _handler: DFSDM1_FLT0,
415 },
416 Vector {
417 _handler: DFSDM1_FLT1,
418 },
419 Vector { _reserved: 0 },
420 Vector { _handler: COMP },
421 Vector { _handler: LPTIM1 },
422 Vector { _handler: LPTIM2 },
423 Vector { _handler: OTG_FS },
424 Vector {
425 _handler: DMA2_Channel6,
426 },
427 Vector {
428 _handler: DMA2_Channel7,
429 },
430 Vector { _handler: LPUART1 },
431 Vector { _handler: OCTOSPI1 },
432 Vector { _handler: I2C3_EV },
433 Vector { _handler: I2C3_ER },
434 Vector { _handler: SAI1 },
435 Vector { _handler: SAI2 },
436 Vector { _handler: OCTOSPI2 },
437 Vector { _handler: TSC },
438 Vector { _reserved: 0 },
439 Vector { _handler: AES },
440 Vector { _handler: RNG },
441 Vector { _handler: FPU },
442 Vector { _handler: HASH_CRS },
443 Vector { _handler: I2C4_ER },
444 Vector { _handler: I2C4_EV },
445 Vector {
446 _handler: DCMI_PSSI,
447 },
448 Vector { _handler: PKA },
449 Vector { _reserved: 0 },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector { _handler: DMA2D },
453 Vector { _handler: LTDC },
454 Vector { _handler: LTDC_ER },
455 Vector { _reserved: 0 },
456 Vector {
457 _handler: DMAMUX1_OVR,
458 },
459 ];
460}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 461impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 462impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 463impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4q5rg.rs b/embassy-stm32/src/chip/stm32l4q5rg.rs
index 716f8233b..bbf0c47db 100644
--- a/embassy-stm32/src/chip/stm32l4q5rg.rs
+++ b/embassy-stm32/src/chip/stm32l4q5rg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,449 @@ peripherals!(
15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 UART4, USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI_PSSI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2D = 90,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 DMAMUX1_OVR = 94,
57 EXTI0 = 6,
58 EXTI1 = 7,
59 EXTI15_10 = 40,
60 EXTI2 = 8,
61 EXTI3 = 9,
62 EXTI4 = 10,
63 EXTI9_5 = 23,
64 FLASH = 4,
65 FMC = 48,
66 FPU = 81,
67 HASH_CRS = 82,
68 I2C1_ER = 32,
69 I2C1_EV = 31,
70 I2C2_ER = 34,
71 I2C2_EV = 33,
72 I2C3_ER = 73,
73 I2C3_EV = 72,
74 I2C4_ER = 83,
75 I2C4_EV = 84,
76 LPTIM1 = 65,
77 LPTIM2 = 66,
78 LPUART1 = 70,
79 LTDC = 91,
80 LTDC_ER = 92,
81 OCTOSPI1 = 71,
82 OCTOSPI2 = 76,
83 OTG_FS = 67,
84 PKA = 86,
85 PVD_PVM = 1,
86 RCC = 5,
87 RNG = 80,
88 RTC_Alarm = 41,
89 RTC_WKUP = 3,
90 SAI1 = 74,
91 SAI2 = 75,
92 SDMMC1 = 49,
93 SDMMC2 = 47,
94 SPI1 = 35,
95 SPI2 = 36,
96 SPI3 = 51,
97 TAMP_STAMP = 2,
98 TIM1_BRK_TIM15 = 24,
99 TIM1_CC = 27,
100 TIM1_TRG_COM_TIM17 = 26,
101 TIM1_UP_TIM16 = 25,
102 TIM2 = 28,
103 TIM3 = 29,
104 TIM4 = 30,
105 TIM5 = 50,
106 TIM6_DAC = 54,
107 TIM7 = 55,
108 TIM8_BRK = 43,
109 TIM8_CC = 46,
110 TIM8_TRG_COM = 45,
111 TIM8_UP = 44,
112 TSC = 77,
113 UART4 = 52,
114 UART5 = 53,
115 USART1 = 37,
116 USART2 = 38,
117 USART3 = 39,
118 WWDG = 0,
119 }
120 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
121 #[inline(always)]
122 fn number(self) -> u16 {
123 self as u16
124 }
125 }
126
127 declare!(ADC1_2);
128 declare!(AES);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(DCMI_PSSI);
135 declare!(DFSDM1_FLT0);
136 declare!(DFSDM1_FLT1);
137 declare!(DMA1_Channel1);
138 declare!(DMA1_Channel2);
139 declare!(DMA1_Channel3);
140 declare!(DMA1_Channel4);
141 declare!(DMA1_Channel5);
142 declare!(DMA1_Channel6);
143 declare!(DMA1_Channel7);
144 declare!(DMA2D);
145 declare!(DMA2_Channel1);
146 declare!(DMA2_Channel2);
147 declare!(DMA2_Channel3);
148 declare!(DMA2_Channel4);
149 declare!(DMA2_Channel5);
150 declare!(DMA2_Channel6);
151 declare!(DMA2_Channel7);
152 declare!(DMAMUX1_OVR);
153 declare!(EXTI0);
154 declare!(EXTI1);
155 declare!(EXTI15_10);
156 declare!(EXTI2);
157 declare!(EXTI3);
158 declare!(EXTI4);
159 declare!(EXTI9_5);
160 declare!(FLASH);
161 declare!(FMC);
162 declare!(FPU);
163 declare!(HASH_CRS);
164 declare!(I2C1_ER);
165 declare!(I2C1_EV);
166 declare!(I2C2_ER);
167 declare!(I2C2_EV);
168 declare!(I2C3_ER);
169 declare!(I2C3_EV);
170 declare!(I2C4_ER);
171 declare!(I2C4_EV);
172 declare!(LPTIM1);
173 declare!(LPTIM2);
174 declare!(LPUART1);
175 declare!(LTDC);
176 declare!(LTDC_ER);
177 declare!(OCTOSPI1);
178 declare!(OCTOSPI2);
179 declare!(OTG_FS);
180 declare!(PKA);
181 declare!(PVD_PVM);
182 declare!(RCC);
183 declare!(RNG);
184 declare!(RTC_Alarm);
185 declare!(RTC_WKUP);
186 declare!(SAI1);
187 declare!(SAI2);
188 declare!(SDMMC1);
189 declare!(SDMMC2);
190 declare!(SPI1);
191 declare!(SPI2);
192 declare!(SPI3);
193 declare!(TAMP_STAMP);
194 declare!(TIM1_BRK_TIM15);
195 declare!(TIM1_CC);
196 declare!(TIM1_TRG_COM_TIM17);
197 declare!(TIM1_UP_TIM16);
198 declare!(TIM2);
199 declare!(TIM3);
200 declare!(TIM4);
201 declare!(TIM5);
202 declare!(TIM6_DAC);
203 declare!(TIM7);
204 declare!(TIM8_BRK);
205 declare!(TIM8_CC);
206 declare!(TIM8_TRG_COM);
207 declare!(TIM8_UP);
208 declare!(TSC);
209 declare!(UART4);
210 declare!(UART5);
211 declare!(USART1);
212 declare!(USART2);
213 declare!(USART3);
214 declare!(WWDG);
215}
216mod interrupt_vector {
217 extern "C" {
218 fn ADC1_2();
219 fn AES();
220 fn CAN1_RX0();
221 fn CAN1_RX1();
222 fn CAN1_SCE();
223 fn CAN1_TX();
224 fn COMP();
225 fn DCMI_PSSI();
226 fn DFSDM1_FLT0();
227 fn DFSDM1_FLT1();
228 fn DMA1_Channel1();
229 fn DMA1_Channel2();
230 fn DMA1_Channel3();
231 fn DMA1_Channel4();
232 fn DMA1_Channel5();
233 fn DMA1_Channel6();
234 fn DMA1_Channel7();
235 fn DMA2D();
236 fn DMA2_Channel1();
237 fn DMA2_Channel2();
238 fn DMA2_Channel3();
239 fn DMA2_Channel4();
240 fn DMA2_Channel5();
241 fn DMA2_Channel6();
242 fn DMA2_Channel7();
243 fn DMAMUX1_OVR();
244 fn EXTI0();
245 fn EXTI1();
246 fn EXTI15_10();
247 fn EXTI2();
248 fn EXTI3();
249 fn EXTI4();
250 fn EXTI9_5();
251 fn FLASH();
252 fn FMC();
253 fn FPU();
254 fn HASH_CRS();
255 fn I2C1_ER();
256 fn I2C1_EV();
257 fn I2C2_ER();
258 fn I2C2_EV();
259 fn I2C3_ER();
260 fn I2C3_EV();
261 fn I2C4_ER();
262 fn I2C4_EV();
263 fn LPTIM1();
264 fn LPTIM2();
265 fn LPUART1();
266 fn LTDC();
267 fn LTDC_ER();
268 fn OCTOSPI1();
269 fn OCTOSPI2();
270 fn OTG_FS();
271 fn PKA();
272 fn PVD_PVM();
273 fn RCC();
274 fn RNG();
275 fn RTC_Alarm();
276 fn RTC_WKUP();
277 fn SAI1();
278 fn SAI2();
279 fn SDMMC1();
280 fn SDMMC2();
281 fn SPI1();
282 fn SPI2();
283 fn SPI3();
284 fn TAMP_STAMP();
285 fn TIM1_BRK_TIM15();
286 fn TIM1_CC();
287 fn TIM1_TRG_COM_TIM17();
288 fn TIM1_UP_TIM16();
289 fn TIM2();
290 fn TIM3();
291 fn TIM4();
292 fn TIM5();
293 fn TIM6_DAC();
294 fn TIM7();
295 fn TIM8_BRK();
296 fn TIM8_CC();
297 fn TIM8_TRG_COM();
298 fn TIM8_UP();
299 fn TSC();
300 fn UART4();
301 fn UART5();
302 fn USART1();
303 fn USART2();
304 fn USART3();
305 fn WWDG();
306 }
307 pub union Vector {
308 _handler: unsafe extern "C" fn(),
309 _reserved: u32,
310 }
311 #[link_section = ".vector_table.interrupts"]
312 #[no_mangle]
313 pub static __INTERRUPTS: [Vector; 95] = [
314 Vector { _handler: WWDG },
315 Vector { _handler: PVD_PVM },
316 Vector {
317 _handler: TAMP_STAMP,
318 },
319 Vector { _handler: RTC_WKUP },
320 Vector { _handler: FLASH },
321 Vector { _handler: RCC },
322 Vector { _handler: EXTI0 },
323 Vector { _handler: EXTI1 },
324 Vector { _handler: EXTI2 },
325 Vector { _handler: EXTI3 },
326 Vector { _handler: EXTI4 },
327 Vector {
328 _handler: DMA1_Channel1,
329 },
330 Vector {
331 _handler: DMA1_Channel2,
332 },
333 Vector {
334 _handler: DMA1_Channel3,
335 },
336 Vector {
337 _handler: DMA1_Channel4,
338 },
339 Vector {
340 _handler: DMA1_Channel5,
341 },
342 Vector {
343 _handler: DMA1_Channel6,
344 },
345 Vector {
346 _handler: DMA1_Channel7,
347 },
348 Vector { _handler: ADC1_2 },
349 Vector { _handler: CAN1_TX },
350 Vector { _handler: CAN1_RX0 },
351 Vector { _handler: CAN1_RX1 },
352 Vector { _handler: CAN1_SCE },
353 Vector { _handler: EXTI9_5 },
354 Vector {
355 _handler: TIM1_BRK_TIM15,
356 },
357 Vector {
358 _handler: TIM1_UP_TIM16,
359 },
360 Vector {
361 _handler: TIM1_TRG_COM_TIM17,
362 },
363 Vector { _handler: TIM1_CC },
364 Vector { _handler: TIM2 },
365 Vector { _handler: TIM3 },
366 Vector { _handler: TIM4 },
367 Vector { _handler: I2C1_EV },
368 Vector { _handler: I2C1_ER },
369 Vector { _handler: I2C2_EV },
370 Vector { _handler: I2C2_ER },
371 Vector { _handler: SPI1 },
372 Vector { _handler: SPI2 },
373 Vector { _handler: USART1 },
374 Vector { _handler: USART2 },
375 Vector { _handler: USART3 },
376 Vector {
377 _handler: EXTI15_10,
378 },
379 Vector {
380 _handler: RTC_Alarm,
381 },
382 Vector { _reserved: 0 },
383 Vector { _handler: TIM8_BRK },
384 Vector { _handler: TIM8_UP },
385 Vector {
386 _handler: TIM8_TRG_COM,
387 },
388 Vector { _handler: TIM8_CC },
389 Vector { _handler: SDMMC2 },
390 Vector { _handler: FMC },
391 Vector { _handler: SDMMC1 },
392 Vector { _handler: TIM5 },
393 Vector { _handler: SPI3 },
394 Vector { _handler: UART4 },
395 Vector { _handler: UART5 },
396 Vector { _handler: TIM6_DAC },
397 Vector { _handler: TIM7 },
398 Vector {
399 _handler: DMA2_Channel1,
400 },
401 Vector {
402 _handler: DMA2_Channel2,
403 },
404 Vector {
405 _handler: DMA2_Channel3,
406 },
407 Vector {
408 _handler: DMA2_Channel4,
409 },
410 Vector {
411 _handler: DMA2_Channel5,
412 },
413 Vector {
414 _handler: DFSDM1_FLT0,
415 },
416 Vector {
417 _handler: DFSDM1_FLT1,
418 },
419 Vector { _reserved: 0 },
420 Vector { _handler: COMP },
421 Vector { _handler: LPTIM1 },
422 Vector { _handler: LPTIM2 },
423 Vector { _handler: OTG_FS },
424 Vector {
425 _handler: DMA2_Channel6,
426 },
427 Vector {
428 _handler: DMA2_Channel7,
429 },
430 Vector { _handler: LPUART1 },
431 Vector { _handler: OCTOSPI1 },
432 Vector { _handler: I2C3_EV },
433 Vector { _handler: I2C3_ER },
434 Vector { _handler: SAI1 },
435 Vector { _handler: SAI2 },
436 Vector { _handler: OCTOSPI2 },
437 Vector { _handler: TSC },
438 Vector { _reserved: 0 },
439 Vector { _handler: AES },
440 Vector { _handler: RNG },
441 Vector { _handler: FPU },
442 Vector { _handler: HASH_CRS },
443 Vector { _handler: I2C4_ER },
444 Vector { _handler: I2C4_EV },
445 Vector {
446 _handler: DCMI_PSSI,
447 },
448 Vector { _handler: PKA },
449 Vector { _reserved: 0 },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector { _handler: DMA2D },
453 Vector { _handler: LTDC },
454 Vector { _handler: LTDC_ER },
455 Vector { _reserved: 0 },
456 Vector {
457 _handler: DMAMUX1_OVR,
458 },
459 ];
460}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 461impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 462impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 463impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4q5vg.rs b/embassy-stm32/src/chip/stm32l4q5vg.rs
index 295c68f1c..64643dc4e 100644
--- a/embassy-stm32/src/chip/stm32l4q5vg.rs
+++ b/embassy-stm32/src/chip/stm32l4q5vg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,449 @@ peripherals!(
15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI_PSSI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2D = 90,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 DMAMUX1_OVR = 94,
57 EXTI0 = 6,
58 EXTI1 = 7,
59 EXTI15_10 = 40,
60 EXTI2 = 8,
61 EXTI3 = 9,
62 EXTI4 = 10,
63 EXTI9_5 = 23,
64 FLASH = 4,
65 FMC = 48,
66 FPU = 81,
67 HASH_CRS = 82,
68 I2C1_ER = 32,
69 I2C1_EV = 31,
70 I2C2_ER = 34,
71 I2C2_EV = 33,
72 I2C3_ER = 73,
73 I2C3_EV = 72,
74 I2C4_ER = 83,
75 I2C4_EV = 84,
76 LPTIM1 = 65,
77 LPTIM2 = 66,
78 LPUART1 = 70,
79 LTDC = 91,
80 LTDC_ER = 92,
81 OCTOSPI1 = 71,
82 OCTOSPI2 = 76,
83 OTG_FS = 67,
84 PKA = 86,
85 PVD_PVM = 1,
86 RCC = 5,
87 RNG = 80,
88 RTC_Alarm = 41,
89 RTC_WKUP = 3,
90 SAI1 = 74,
91 SAI2 = 75,
92 SDMMC1 = 49,
93 SDMMC2 = 47,
94 SPI1 = 35,
95 SPI2 = 36,
96 SPI3 = 51,
97 TAMP_STAMP = 2,
98 TIM1_BRK_TIM15 = 24,
99 TIM1_CC = 27,
100 TIM1_TRG_COM_TIM17 = 26,
101 TIM1_UP_TIM16 = 25,
102 TIM2 = 28,
103 TIM3 = 29,
104 TIM4 = 30,
105 TIM5 = 50,
106 TIM6_DAC = 54,
107 TIM7 = 55,
108 TIM8_BRK = 43,
109 TIM8_CC = 46,
110 TIM8_TRG_COM = 45,
111 TIM8_UP = 44,
112 TSC = 77,
113 UART4 = 52,
114 UART5 = 53,
115 USART1 = 37,
116 USART2 = 38,
117 USART3 = 39,
118 WWDG = 0,
119 }
120 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
121 #[inline(always)]
122 fn number(self) -> u16 {
123 self as u16
124 }
125 }
126
127 declare!(ADC1_2);
128 declare!(AES);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(DCMI_PSSI);
135 declare!(DFSDM1_FLT0);
136 declare!(DFSDM1_FLT1);
137 declare!(DMA1_Channel1);
138 declare!(DMA1_Channel2);
139 declare!(DMA1_Channel3);
140 declare!(DMA1_Channel4);
141 declare!(DMA1_Channel5);
142 declare!(DMA1_Channel6);
143 declare!(DMA1_Channel7);
144 declare!(DMA2D);
145 declare!(DMA2_Channel1);
146 declare!(DMA2_Channel2);
147 declare!(DMA2_Channel3);
148 declare!(DMA2_Channel4);
149 declare!(DMA2_Channel5);
150 declare!(DMA2_Channel6);
151 declare!(DMA2_Channel7);
152 declare!(DMAMUX1_OVR);
153 declare!(EXTI0);
154 declare!(EXTI1);
155 declare!(EXTI15_10);
156 declare!(EXTI2);
157 declare!(EXTI3);
158 declare!(EXTI4);
159 declare!(EXTI9_5);
160 declare!(FLASH);
161 declare!(FMC);
162 declare!(FPU);
163 declare!(HASH_CRS);
164 declare!(I2C1_ER);
165 declare!(I2C1_EV);
166 declare!(I2C2_ER);
167 declare!(I2C2_EV);
168 declare!(I2C3_ER);
169 declare!(I2C3_EV);
170 declare!(I2C4_ER);
171 declare!(I2C4_EV);
172 declare!(LPTIM1);
173 declare!(LPTIM2);
174 declare!(LPUART1);
175 declare!(LTDC);
176 declare!(LTDC_ER);
177 declare!(OCTOSPI1);
178 declare!(OCTOSPI2);
179 declare!(OTG_FS);
180 declare!(PKA);
181 declare!(PVD_PVM);
182 declare!(RCC);
183 declare!(RNG);
184 declare!(RTC_Alarm);
185 declare!(RTC_WKUP);
186 declare!(SAI1);
187 declare!(SAI2);
188 declare!(SDMMC1);
189 declare!(SDMMC2);
190 declare!(SPI1);
191 declare!(SPI2);
192 declare!(SPI3);
193 declare!(TAMP_STAMP);
194 declare!(TIM1_BRK_TIM15);
195 declare!(TIM1_CC);
196 declare!(TIM1_TRG_COM_TIM17);
197 declare!(TIM1_UP_TIM16);
198 declare!(TIM2);
199 declare!(TIM3);
200 declare!(TIM4);
201 declare!(TIM5);
202 declare!(TIM6_DAC);
203 declare!(TIM7);
204 declare!(TIM8_BRK);
205 declare!(TIM8_CC);
206 declare!(TIM8_TRG_COM);
207 declare!(TIM8_UP);
208 declare!(TSC);
209 declare!(UART4);
210 declare!(UART5);
211 declare!(USART1);
212 declare!(USART2);
213 declare!(USART3);
214 declare!(WWDG);
215}
216mod interrupt_vector {
217 extern "C" {
218 fn ADC1_2();
219 fn AES();
220 fn CAN1_RX0();
221 fn CAN1_RX1();
222 fn CAN1_SCE();
223 fn CAN1_TX();
224 fn COMP();
225 fn DCMI_PSSI();
226 fn DFSDM1_FLT0();
227 fn DFSDM1_FLT1();
228 fn DMA1_Channel1();
229 fn DMA1_Channel2();
230 fn DMA1_Channel3();
231 fn DMA1_Channel4();
232 fn DMA1_Channel5();
233 fn DMA1_Channel6();
234 fn DMA1_Channel7();
235 fn DMA2D();
236 fn DMA2_Channel1();
237 fn DMA2_Channel2();
238 fn DMA2_Channel3();
239 fn DMA2_Channel4();
240 fn DMA2_Channel5();
241 fn DMA2_Channel6();
242 fn DMA2_Channel7();
243 fn DMAMUX1_OVR();
244 fn EXTI0();
245 fn EXTI1();
246 fn EXTI15_10();
247 fn EXTI2();
248 fn EXTI3();
249 fn EXTI4();
250 fn EXTI9_5();
251 fn FLASH();
252 fn FMC();
253 fn FPU();
254 fn HASH_CRS();
255 fn I2C1_ER();
256 fn I2C1_EV();
257 fn I2C2_ER();
258 fn I2C2_EV();
259 fn I2C3_ER();
260 fn I2C3_EV();
261 fn I2C4_ER();
262 fn I2C4_EV();
263 fn LPTIM1();
264 fn LPTIM2();
265 fn LPUART1();
266 fn LTDC();
267 fn LTDC_ER();
268 fn OCTOSPI1();
269 fn OCTOSPI2();
270 fn OTG_FS();
271 fn PKA();
272 fn PVD_PVM();
273 fn RCC();
274 fn RNG();
275 fn RTC_Alarm();
276 fn RTC_WKUP();
277 fn SAI1();
278 fn SAI2();
279 fn SDMMC1();
280 fn SDMMC2();
281 fn SPI1();
282 fn SPI2();
283 fn SPI3();
284 fn TAMP_STAMP();
285 fn TIM1_BRK_TIM15();
286 fn TIM1_CC();
287 fn TIM1_TRG_COM_TIM17();
288 fn TIM1_UP_TIM16();
289 fn TIM2();
290 fn TIM3();
291 fn TIM4();
292 fn TIM5();
293 fn TIM6_DAC();
294 fn TIM7();
295 fn TIM8_BRK();
296 fn TIM8_CC();
297 fn TIM8_TRG_COM();
298 fn TIM8_UP();
299 fn TSC();
300 fn UART4();
301 fn UART5();
302 fn USART1();
303 fn USART2();
304 fn USART3();
305 fn WWDG();
306 }
307 pub union Vector {
308 _handler: unsafe extern "C" fn(),
309 _reserved: u32,
310 }
311 #[link_section = ".vector_table.interrupts"]
312 #[no_mangle]
313 pub static __INTERRUPTS: [Vector; 95] = [
314 Vector { _handler: WWDG },
315 Vector { _handler: PVD_PVM },
316 Vector {
317 _handler: TAMP_STAMP,
318 },
319 Vector { _handler: RTC_WKUP },
320 Vector { _handler: FLASH },
321 Vector { _handler: RCC },
322 Vector { _handler: EXTI0 },
323 Vector { _handler: EXTI1 },
324 Vector { _handler: EXTI2 },
325 Vector { _handler: EXTI3 },
326 Vector { _handler: EXTI4 },
327 Vector {
328 _handler: DMA1_Channel1,
329 },
330 Vector {
331 _handler: DMA1_Channel2,
332 },
333 Vector {
334 _handler: DMA1_Channel3,
335 },
336 Vector {
337 _handler: DMA1_Channel4,
338 },
339 Vector {
340 _handler: DMA1_Channel5,
341 },
342 Vector {
343 _handler: DMA1_Channel6,
344 },
345 Vector {
346 _handler: DMA1_Channel7,
347 },
348 Vector { _handler: ADC1_2 },
349 Vector { _handler: CAN1_TX },
350 Vector { _handler: CAN1_RX0 },
351 Vector { _handler: CAN1_RX1 },
352 Vector { _handler: CAN1_SCE },
353 Vector { _handler: EXTI9_5 },
354 Vector {
355 _handler: TIM1_BRK_TIM15,
356 },
357 Vector {
358 _handler: TIM1_UP_TIM16,
359 },
360 Vector {
361 _handler: TIM1_TRG_COM_TIM17,
362 },
363 Vector { _handler: TIM1_CC },
364 Vector { _handler: TIM2 },
365 Vector { _handler: TIM3 },
366 Vector { _handler: TIM4 },
367 Vector { _handler: I2C1_EV },
368 Vector { _handler: I2C1_ER },
369 Vector { _handler: I2C2_EV },
370 Vector { _handler: I2C2_ER },
371 Vector { _handler: SPI1 },
372 Vector { _handler: SPI2 },
373 Vector { _handler: USART1 },
374 Vector { _handler: USART2 },
375 Vector { _handler: USART3 },
376 Vector {
377 _handler: EXTI15_10,
378 },
379 Vector {
380 _handler: RTC_Alarm,
381 },
382 Vector { _reserved: 0 },
383 Vector { _handler: TIM8_BRK },
384 Vector { _handler: TIM8_UP },
385 Vector {
386 _handler: TIM8_TRG_COM,
387 },
388 Vector { _handler: TIM8_CC },
389 Vector { _handler: SDMMC2 },
390 Vector { _handler: FMC },
391 Vector { _handler: SDMMC1 },
392 Vector { _handler: TIM5 },
393 Vector { _handler: SPI3 },
394 Vector { _handler: UART4 },
395 Vector { _handler: UART5 },
396 Vector { _handler: TIM6_DAC },
397 Vector { _handler: TIM7 },
398 Vector {
399 _handler: DMA2_Channel1,
400 },
401 Vector {
402 _handler: DMA2_Channel2,
403 },
404 Vector {
405 _handler: DMA2_Channel3,
406 },
407 Vector {
408 _handler: DMA2_Channel4,
409 },
410 Vector {
411 _handler: DMA2_Channel5,
412 },
413 Vector {
414 _handler: DFSDM1_FLT0,
415 },
416 Vector {
417 _handler: DFSDM1_FLT1,
418 },
419 Vector { _reserved: 0 },
420 Vector { _handler: COMP },
421 Vector { _handler: LPTIM1 },
422 Vector { _handler: LPTIM2 },
423 Vector { _handler: OTG_FS },
424 Vector {
425 _handler: DMA2_Channel6,
426 },
427 Vector {
428 _handler: DMA2_Channel7,
429 },
430 Vector { _handler: LPUART1 },
431 Vector { _handler: OCTOSPI1 },
432 Vector { _handler: I2C3_EV },
433 Vector { _handler: I2C3_ER },
434 Vector { _handler: SAI1 },
435 Vector { _handler: SAI2 },
436 Vector { _handler: OCTOSPI2 },
437 Vector { _handler: TSC },
438 Vector { _reserved: 0 },
439 Vector { _handler: AES },
440 Vector { _handler: RNG },
441 Vector { _handler: FPU },
442 Vector { _handler: HASH_CRS },
443 Vector { _handler: I2C4_ER },
444 Vector { _handler: I2C4_EV },
445 Vector {
446 _handler: DCMI_PSSI,
447 },
448 Vector { _handler: PKA },
449 Vector { _reserved: 0 },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector { _handler: DMA2D },
453 Vector { _handler: LTDC },
454 Vector { _handler: LTDC_ER },
455 Vector { _reserved: 0 },
456 Vector {
457 _handler: DMAMUX1_OVR,
458 },
459 ];
460}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 461impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 462impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 463impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4q5zg.rs b/embassy-stm32/src/chip/stm32l4q5zg.rs
index 295c68f1c..64643dc4e 100644
--- a/embassy-stm32/src/chip/stm32l4q5zg.rs
+++ b/embassy-stm32/src/chip/stm32l4q5zg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,449 @@ peripherals!(
15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, 15 SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC,
16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG 16 UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1_2 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI_PSSI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DMA1_Channel1 = 11,
42 DMA1_Channel2 = 12,
43 DMA1_Channel3 = 13,
44 DMA1_Channel4 = 14,
45 DMA1_Channel5 = 15,
46 DMA1_Channel6 = 16,
47 DMA1_Channel7 = 17,
48 DMA2D = 90,
49 DMA2_Channel1 = 56,
50 DMA2_Channel2 = 57,
51 DMA2_Channel3 = 58,
52 DMA2_Channel4 = 59,
53 DMA2_Channel5 = 60,
54 DMA2_Channel6 = 68,
55 DMA2_Channel7 = 69,
56 DMAMUX1_OVR = 94,
57 EXTI0 = 6,
58 EXTI1 = 7,
59 EXTI15_10 = 40,
60 EXTI2 = 8,
61 EXTI3 = 9,
62 EXTI4 = 10,
63 EXTI9_5 = 23,
64 FLASH = 4,
65 FMC = 48,
66 FPU = 81,
67 HASH_CRS = 82,
68 I2C1_ER = 32,
69 I2C1_EV = 31,
70 I2C2_ER = 34,
71 I2C2_EV = 33,
72 I2C3_ER = 73,
73 I2C3_EV = 72,
74 I2C4_ER = 83,
75 I2C4_EV = 84,
76 LPTIM1 = 65,
77 LPTIM2 = 66,
78 LPUART1 = 70,
79 LTDC = 91,
80 LTDC_ER = 92,
81 OCTOSPI1 = 71,
82 OCTOSPI2 = 76,
83 OTG_FS = 67,
84 PKA = 86,
85 PVD_PVM = 1,
86 RCC = 5,
87 RNG = 80,
88 RTC_Alarm = 41,
89 RTC_WKUP = 3,
90 SAI1 = 74,
91 SAI2 = 75,
92 SDMMC1 = 49,
93 SDMMC2 = 47,
94 SPI1 = 35,
95 SPI2 = 36,
96 SPI3 = 51,
97 TAMP_STAMP = 2,
98 TIM1_BRK_TIM15 = 24,
99 TIM1_CC = 27,
100 TIM1_TRG_COM_TIM17 = 26,
101 TIM1_UP_TIM16 = 25,
102 TIM2 = 28,
103 TIM3 = 29,
104 TIM4 = 30,
105 TIM5 = 50,
106 TIM6_DAC = 54,
107 TIM7 = 55,
108 TIM8_BRK = 43,
109 TIM8_CC = 46,
110 TIM8_TRG_COM = 45,
111 TIM8_UP = 44,
112 TSC = 77,
113 UART4 = 52,
114 UART5 = 53,
115 USART1 = 37,
116 USART2 = 38,
117 USART3 = 39,
118 WWDG = 0,
119 }
120 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
121 #[inline(always)]
122 fn number(self) -> u16 {
123 self as u16
124 }
125 }
126
127 declare!(ADC1_2);
128 declare!(AES);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(DCMI_PSSI);
135 declare!(DFSDM1_FLT0);
136 declare!(DFSDM1_FLT1);
137 declare!(DMA1_Channel1);
138 declare!(DMA1_Channel2);
139 declare!(DMA1_Channel3);
140 declare!(DMA1_Channel4);
141 declare!(DMA1_Channel5);
142 declare!(DMA1_Channel6);
143 declare!(DMA1_Channel7);
144 declare!(DMA2D);
145 declare!(DMA2_Channel1);
146 declare!(DMA2_Channel2);
147 declare!(DMA2_Channel3);
148 declare!(DMA2_Channel4);
149 declare!(DMA2_Channel5);
150 declare!(DMA2_Channel6);
151 declare!(DMA2_Channel7);
152 declare!(DMAMUX1_OVR);
153 declare!(EXTI0);
154 declare!(EXTI1);
155 declare!(EXTI15_10);
156 declare!(EXTI2);
157 declare!(EXTI3);
158 declare!(EXTI4);
159 declare!(EXTI9_5);
160 declare!(FLASH);
161 declare!(FMC);
162 declare!(FPU);
163 declare!(HASH_CRS);
164 declare!(I2C1_ER);
165 declare!(I2C1_EV);
166 declare!(I2C2_ER);
167 declare!(I2C2_EV);
168 declare!(I2C3_ER);
169 declare!(I2C3_EV);
170 declare!(I2C4_ER);
171 declare!(I2C4_EV);
172 declare!(LPTIM1);
173 declare!(LPTIM2);
174 declare!(LPUART1);
175 declare!(LTDC);
176 declare!(LTDC_ER);
177 declare!(OCTOSPI1);
178 declare!(OCTOSPI2);
179 declare!(OTG_FS);
180 declare!(PKA);
181 declare!(PVD_PVM);
182 declare!(RCC);
183 declare!(RNG);
184 declare!(RTC_Alarm);
185 declare!(RTC_WKUP);
186 declare!(SAI1);
187 declare!(SAI2);
188 declare!(SDMMC1);
189 declare!(SDMMC2);
190 declare!(SPI1);
191 declare!(SPI2);
192 declare!(SPI3);
193 declare!(TAMP_STAMP);
194 declare!(TIM1_BRK_TIM15);
195 declare!(TIM1_CC);
196 declare!(TIM1_TRG_COM_TIM17);
197 declare!(TIM1_UP_TIM16);
198 declare!(TIM2);
199 declare!(TIM3);
200 declare!(TIM4);
201 declare!(TIM5);
202 declare!(TIM6_DAC);
203 declare!(TIM7);
204 declare!(TIM8_BRK);
205 declare!(TIM8_CC);
206 declare!(TIM8_TRG_COM);
207 declare!(TIM8_UP);
208 declare!(TSC);
209 declare!(UART4);
210 declare!(UART5);
211 declare!(USART1);
212 declare!(USART2);
213 declare!(USART3);
214 declare!(WWDG);
215}
216mod interrupt_vector {
217 extern "C" {
218 fn ADC1_2();
219 fn AES();
220 fn CAN1_RX0();
221 fn CAN1_RX1();
222 fn CAN1_SCE();
223 fn CAN1_TX();
224 fn COMP();
225 fn DCMI_PSSI();
226 fn DFSDM1_FLT0();
227 fn DFSDM1_FLT1();
228 fn DMA1_Channel1();
229 fn DMA1_Channel2();
230 fn DMA1_Channel3();
231 fn DMA1_Channel4();
232 fn DMA1_Channel5();
233 fn DMA1_Channel6();
234 fn DMA1_Channel7();
235 fn DMA2D();
236 fn DMA2_Channel1();
237 fn DMA2_Channel2();
238 fn DMA2_Channel3();
239 fn DMA2_Channel4();
240 fn DMA2_Channel5();
241 fn DMA2_Channel6();
242 fn DMA2_Channel7();
243 fn DMAMUX1_OVR();
244 fn EXTI0();
245 fn EXTI1();
246 fn EXTI15_10();
247 fn EXTI2();
248 fn EXTI3();
249 fn EXTI4();
250 fn EXTI9_5();
251 fn FLASH();
252 fn FMC();
253 fn FPU();
254 fn HASH_CRS();
255 fn I2C1_ER();
256 fn I2C1_EV();
257 fn I2C2_ER();
258 fn I2C2_EV();
259 fn I2C3_ER();
260 fn I2C3_EV();
261 fn I2C4_ER();
262 fn I2C4_EV();
263 fn LPTIM1();
264 fn LPTIM2();
265 fn LPUART1();
266 fn LTDC();
267 fn LTDC_ER();
268 fn OCTOSPI1();
269 fn OCTOSPI2();
270 fn OTG_FS();
271 fn PKA();
272 fn PVD_PVM();
273 fn RCC();
274 fn RNG();
275 fn RTC_Alarm();
276 fn RTC_WKUP();
277 fn SAI1();
278 fn SAI2();
279 fn SDMMC1();
280 fn SDMMC2();
281 fn SPI1();
282 fn SPI2();
283 fn SPI3();
284 fn TAMP_STAMP();
285 fn TIM1_BRK_TIM15();
286 fn TIM1_CC();
287 fn TIM1_TRG_COM_TIM17();
288 fn TIM1_UP_TIM16();
289 fn TIM2();
290 fn TIM3();
291 fn TIM4();
292 fn TIM5();
293 fn TIM6_DAC();
294 fn TIM7();
295 fn TIM8_BRK();
296 fn TIM8_CC();
297 fn TIM8_TRG_COM();
298 fn TIM8_UP();
299 fn TSC();
300 fn UART4();
301 fn UART5();
302 fn USART1();
303 fn USART2();
304 fn USART3();
305 fn WWDG();
306 }
307 pub union Vector {
308 _handler: unsafe extern "C" fn(),
309 _reserved: u32,
310 }
311 #[link_section = ".vector_table.interrupts"]
312 #[no_mangle]
313 pub static __INTERRUPTS: [Vector; 95] = [
314 Vector { _handler: WWDG },
315 Vector { _handler: PVD_PVM },
316 Vector {
317 _handler: TAMP_STAMP,
318 },
319 Vector { _handler: RTC_WKUP },
320 Vector { _handler: FLASH },
321 Vector { _handler: RCC },
322 Vector { _handler: EXTI0 },
323 Vector { _handler: EXTI1 },
324 Vector { _handler: EXTI2 },
325 Vector { _handler: EXTI3 },
326 Vector { _handler: EXTI4 },
327 Vector {
328 _handler: DMA1_Channel1,
329 },
330 Vector {
331 _handler: DMA1_Channel2,
332 },
333 Vector {
334 _handler: DMA1_Channel3,
335 },
336 Vector {
337 _handler: DMA1_Channel4,
338 },
339 Vector {
340 _handler: DMA1_Channel5,
341 },
342 Vector {
343 _handler: DMA1_Channel6,
344 },
345 Vector {
346 _handler: DMA1_Channel7,
347 },
348 Vector { _handler: ADC1_2 },
349 Vector { _handler: CAN1_TX },
350 Vector { _handler: CAN1_RX0 },
351 Vector { _handler: CAN1_RX1 },
352 Vector { _handler: CAN1_SCE },
353 Vector { _handler: EXTI9_5 },
354 Vector {
355 _handler: TIM1_BRK_TIM15,
356 },
357 Vector {
358 _handler: TIM1_UP_TIM16,
359 },
360 Vector {
361 _handler: TIM1_TRG_COM_TIM17,
362 },
363 Vector { _handler: TIM1_CC },
364 Vector { _handler: TIM2 },
365 Vector { _handler: TIM3 },
366 Vector { _handler: TIM4 },
367 Vector { _handler: I2C1_EV },
368 Vector { _handler: I2C1_ER },
369 Vector { _handler: I2C2_EV },
370 Vector { _handler: I2C2_ER },
371 Vector { _handler: SPI1 },
372 Vector { _handler: SPI2 },
373 Vector { _handler: USART1 },
374 Vector { _handler: USART2 },
375 Vector { _handler: USART3 },
376 Vector {
377 _handler: EXTI15_10,
378 },
379 Vector {
380 _handler: RTC_Alarm,
381 },
382 Vector { _reserved: 0 },
383 Vector { _handler: TIM8_BRK },
384 Vector { _handler: TIM8_UP },
385 Vector {
386 _handler: TIM8_TRG_COM,
387 },
388 Vector { _handler: TIM8_CC },
389 Vector { _handler: SDMMC2 },
390 Vector { _handler: FMC },
391 Vector { _handler: SDMMC1 },
392 Vector { _handler: TIM5 },
393 Vector { _handler: SPI3 },
394 Vector { _handler: UART4 },
395 Vector { _handler: UART5 },
396 Vector { _handler: TIM6_DAC },
397 Vector { _handler: TIM7 },
398 Vector {
399 _handler: DMA2_Channel1,
400 },
401 Vector {
402 _handler: DMA2_Channel2,
403 },
404 Vector {
405 _handler: DMA2_Channel3,
406 },
407 Vector {
408 _handler: DMA2_Channel4,
409 },
410 Vector {
411 _handler: DMA2_Channel5,
412 },
413 Vector {
414 _handler: DFSDM1_FLT0,
415 },
416 Vector {
417 _handler: DFSDM1_FLT1,
418 },
419 Vector { _reserved: 0 },
420 Vector { _handler: COMP },
421 Vector { _handler: LPTIM1 },
422 Vector { _handler: LPTIM2 },
423 Vector { _handler: OTG_FS },
424 Vector {
425 _handler: DMA2_Channel6,
426 },
427 Vector {
428 _handler: DMA2_Channel7,
429 },
430 Vector { _handler: LPUART1 },
431 Vector { _handler: OCTOSPI1 },
432 Vector { _handler: I2C3_EV },
433 Vector { _handler: I2C3_ER },
434 Vector { _handler: SAI1 },
435 Vector { _handler: SAI2 },
436 Vector { _handler: OCTOSPI2 },
437 Vector { _handler: TSC },
438 Vector { _reserved: 0 },
439 Vector { _handler: AES },
440 Vector { _handler: RNG },
441 Vector { _handler: FPU },
442 Vector { _handler: HASH_CRS },
443 Vector { _handler: I2C4_ER },
444 Vector { _handler: I2C4_EV },
445 Vector {
446 _handler: DCMI_PSSI,
447 },
448 Vector { _handler: PKA },
449 Vector { _reserved: 0 },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector { _handler: DMA2D },
453 Vector { _handler: LTDC },
454 Vector { _handler: LTDC_ER },
455 Vector { _reserved: 0 },
456 Vector {
457 _handler: DMAMUX1_OVR,
458 },
459 ];
460}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 461impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 462impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 463impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r5ag.rs b/embassy-stm32/src/chip/stm32l4r5ag.rs
index d8b9445b9..9c98d1f88 100644
--- a/embassy-stm32/src/chip/stm32l4r5ag.rs
+++ b/embassy-stm32/src/chip/stm32l4r5ag.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -15,8 +15,442 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 I2C1_ER = 32,
70 I2C1_EV = 31,
71 I2C2_ER = 34,
72 I2C2_EV = 33,
73 I2C3_ER = 73,
74 I2C3_EV = 72,
75 I2C4_ER = 83,
76 I2C4_EV = 84,
77 LPTIM1 = 65,
78 LPTIM2 = 66,
79 LPUART1 = 70,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SPI1 = 35,
92 SPI2 = 36,
93 SPI3 = 51,
94 TAMP_STAMP = 2,
95 TIM1_BRK_TIM15 = 24,
96 TIM1_CC = 27,
97 TIM1_TRG_COM_TIM17 = 26,
98 TIM1_UP_TIM16 = 25,
99 TIM2 = 28,
100 TIM3 = 29,
101 TIM4 = 30,
102 TIM5 = 50,
103 TIM6_DAC = 54,
104 TIM7 = 55,
105 TIM8_BRK = 43,
106 TIM8_CC = 46,
107 TIM8_TRG_COM = 45,
108 TIM8_UP = 44,
109 TSC = 77,
110 UART4 = 52,
111 UART5 = 53,
112 USART1 = 37,
113 USART2 = 38,
114 USART3 = 39,
115 WWDG = 0,
116 }
117 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
118 #[inline(always)]
119 fn number(self) -> u16 {
120 self as u16
121 }
122 }
123
124 declare!(ADC1);
125 declare!(CAN1_RX0);
126 declare!(CAN1_RX1);
127 declare!(CAN1_SCE);
128 declare!(CAN1_TX);
129 declare!(COMP);
130 declare!(CRS);
131 declare!(DCMI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DFSDM1_FLT2);
135 declare!(DFSDM1_FLT3);
136 declare!(DMA1_Channel1);
137 declare!(DMA1_Channel2);
138 declare!(DMA1_Channel3);
139 declare!(DMA1_Channel4);
140 declare!(DMA1_Channel5);
141 declare!(DMA1_Channel6);
142 declare!(DMA1_Channel7);
143 declare!(DMA2D);
144 declare!(DMA2_Channel1);
145 declare!(DMA2_Channel2);
146 declare!(DMA2_Channel3);
147 declare!(DMA2_Channel4);
148 declare!(DMA2_Channel5);
149 declare!(DMA2_Channel6);
150 declare!(DMA2_Channel7);
151 declare!(DMAMUX1_OVR);
152 declare!(EXTI0);
153 declare!(EXTI1);
154 declare!(EXTI15_10);
155 declare!(EXTI2);
156 declare!(EXTI3);
157 declare!(EXTI4);
158 declare!(EXTI9_5);
159 declare!(FLASH);
160 declare!(FMC);
161 declare!(FPU);
162 declare!(I2C1_ER);
163 declare!(I2C1_EV);
164 declare!(I2C2_ER);
165 declare!(I2C2_EV);
166 declare!(I2C3_ER);
167 declare!(I2C3_EV);
168 declare!(I2C4_ER);
169 declare!(I2C4_EV);
170 declare!(LPTIM1);
171 declare!(LPTIM2);
172 declare!(LPUART1);
173 declare!(OCTOSPI1);
174 declare!(OCTOSPI2);
175 declare!(OTG_FS);
176 declare!(PVD_PVM);
177 declare!(RCC);
178 declare!(RNG);
179 declare!(RTC_Alarm);
180 declare!(RTC_WKUP);
181 declare!(SAI1);
182 declare!(SAI2);
183 declare!(SDMMC1);
184 declare!(SPI1);
185 declare!(SPI2);
186 declare!(SPI3);
187 declare!(TAMP_STAMP);
188 declare!(TIM1_BRK_TIM15);
189 declare!(TIM1_CC);
190 declare!(TIM1_TRG_COM_TIM17);
191 declare!(TIM1_UP_TIM16);
192 declare!(TIM2);
193 declare!(TIM3);
194 declare!(TIM4);
195 declare!(TIM5);
196 declare!(TIM6_DAC);
197 declare!(TIM7);
198 declare!(TIM8_BRK);
199 declare!(TIM8_CC);
200 declare!(TIM8_TRG_COM);
201 declare!(TIM8_UP);
202 declare!(TSC);
203 declare!(UART4);
204 declare!(UART5);
205 declare!(USART1);
206 declare!(USART2);
207 declare!(USART3);
208 declare!(WWDG);
209}
210mod interrupt_vector {
211 extern "C" {
212 fn ADC1();
213 fn CAN1_RX0();
214 fn CAN1_RX1();
215 fn CAN1_SCE();
216 fn CAN1_TX();
217 fn COMP();
218 fn CRS();
219 fn DCMI();
220 fn DFSDM1_FLT0();
221 fn DFSDM1_FLT1();
222 fn DFSDM1_FLT2();
223 fn DFSDM1_FLT3();
224 fn DMA1_Channel1();
225 fn DMA1_Channel2();
226 fn DMA1_Channel3();
227 fn DMA1_Channel4();
228 fn DMA1_Channel5();
229 fn DMA1_Channel6();
230 fn DMA1_Channel7();
231 fn DMA2D();
232 fn DMA2_Channel1();
233 fn DMA2_Channel2();
234 fn DMA2_Channel3();
235 fn DMA2_Channel4();
236 fn DMA2_Channel5();
237 fn DMA2_Channel6();
238 fn DMA2_Channel7();
239 fn DMAMUX1_OVR();
240 fn EXTI0();
241 fn EXTI1();
242 fn EXTI15_10();
243 fn EXTI2();
244 fn EXTI3();
245 fn EXTI4();
246 fn EXTI9_5();
247 fn FLASH();
248 fn FMC();
249 fn FPU();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn OCTOSPI1();
262 fn OCTOSPI2();
263 fn OTG_FS();
264 fn PVD_PVM();
265 fn RCC();
266 fn RNG();
267 fn RTC_Alarm();
268 fn RTC_WKUP();
269 fn SAI1();
270 fn SAI2();
271 fn SDMMC1();
272 fn SPI1();
273 fn SPI2();
274 fn SPI3();
275 fn TAMP_STAMP();
276 fn TIM1_BRK_TIM15();
277 fn TIM1_CC();
278 fn TIM1_TRG_COM_TIM17();
279 fn TIM1_UP_TIM16();
280 fn TIM2();
281 fn TIM3();
282 fn TIM4();
283 fn TIM5();
284 fn TIM6_DAC();
285 fn TIM7();
286 fn TIM8_BRK();
287 fn TIM8_CC();
288 fn TIM8_TRG_COM();
289 fn TIM8_UP();
290 fn TSC();
291 fn UART4();
292 fn UART5();
293 fn USART1();
294 fn USART2();
295 fn USART3();
296 fn WWDG();
297 }
298 pub union Vector {
299 _handler: unsafe extern "C" fn(),
300 _reserved: u32,
301 }
302 #[link_section = ".vector_table.interrupts"]
303 #[no_mangle]
304 pub static __INTERRUPTS: [Vector; 95] = [
305 Vector { _handler: WWDG },
306 Vector { _handler: PVD_PVM },
307 Vector {
308 _handler: TAMP_STAMP,
309 },
310 Vector { _handler: RTC_WKUP },
311 Vector { _handler: FLASH },
312 Vector { _handler: RCC },
313 Vector { _handler: EXTI0 },
314 Vector { _handler: EXTI1 },
315 Vector { _handler: EXTI2 },
316 Vector { _handler: EXTI3 },
317 Vector { _handler: EXTI4 },
318 Vector {
319 _handler: DMA1_Channel1,
320 },
321 Vector {
322 _handler: DMA1_Channel2,
323 },
324 Vector {
325 _handler: DMA1_Channel3,
326 },
327 Vector {
328 _handler: DMA1_Channel4,
329 },
330 Vector {
331 _handler: DMA1_Channel5,
332 },
333 Vector {
334 _handler: DMA1_Channel6,
335 },
336 Vector {
337 _handler: DMA1_Channel7,
338 },
339 Vector { _handler: ADC1 },
340 Vector { _handler: CAN1_TX },
341 Vector { _handler: CAN1_RX0 },
342 Vector { _handler: CAN1_RX1 },
343 Vector { _handler: CAN1_SCE },
344 Vector { _handler: EXTI9_5 },
345 Vector {
346 _handler: TIM1_BRK_TIM15,
347 },
348 Vector {
349 _handler: TIM1_UP_TIM16,
350 },
351 Vector {
352 _handler: TIM1_TRG_COM_TIM17,
353 },
354 Vector { _handler: TIM1_CC },
355 Vector { _handler: TIM2 },
356 Vector { _handler: TIM3 },
357 Vector { _handler: TIM4 },
358 Vector { _handler: I2C1_EV },
359 Vector { _handler: I2C1_ER },
360 Vector { _handler: I2C2_EV },
361 Vector { _handler: I2C2_ER },
362 Vector { _handler: SPI1 },
363 Vector { _handler: SPI2 },
364 Vector { _handler: USART1 },
365 Vector { _handler: USART2 },
366 Vector { _handler: USART3 },
367 Vector {
368 _handler: EXTI15_10,
369 },
370 Vector {
371 _handler: RTC_Alarm,
372 },
373 Vector {
374 _handler: DFSDM1_FLT3,
375 },
376 Vector { _handler: TIM8_BRK },
377 Vector { _handler: TIM8_UP },
378 Vector {
379 _handler: TIM8_TRG_COM,
380 },
381 Vector { _handler: TIM8_CC },
382 Vector { _reserved: 0 },
383 Vector { _handler: FMC },
384 Vector { _handler: SDMMC1 },
385 Vector { _handler: TIM5 },
386 Vector { _handler: SPI3 },
387 Vector { _handler: UART4 },
388 Vector { _handler: UART5 },
389 Vector { _handler: TIM6_DAC },
390 Vector { _handler: TIM7 },
391 Vector {
392 _handler: DMA2_Channel1,
393 },
394 Vector {
395 _handler: DMA2_Channel2,
396 },
397 Vector {
398 _handler: DMA2_Channel3,
399 },
400 Vector {
401 _handler: DMA2_Channel4,
402 },
403 Vector {
404 _handler: DMA2_Channel5,
405 },
406 Vector {
407 _handler: DFSDM1_FLT0,
408 },
409 Vector {
410 _handler: DFSDM1_FLT1,
411 },
412 Vector {
413 _handler: DFSDM1_FLT2,
414 },
415 Vector { _handler: COMP },
416 Vector { _handler: LPTIM1 },
417 Vector { _handler: LPTIM2 },
418 Vector { _handler: OTG_FS },
419 Vector {
420 _handler: DMA2_Channel6,
421 },
422 Vector {
423 _handler: DMA2_Channel7,
424 },
425 Vector { _handler: LPUART1 },
426 Vector { _handler: OCTOSPI1 },
427 Vector { _handler: I2C3_EV },
428 Vector { _handler: I2C3_ER },
429 Vector { _handler: SAI1 },
430 Vector { _handler: SAI2 },
431 Vector { _handler: OCTOSPI2 },
432 Vector { _handler: TSC },
433 Vector { _reserved: 0 },
434 Vector { _reserved: 0 },
435 Vector { _handler: RNG },
436 Vector { _handler: FPU },
437 Vector { _handler: CRS },
438 Vector { _handler: I2C4_ER },
439 Vector { _handler: I2C4_EV },
440 Vector { _handler: DCMI },
441 Vector { _reserved: 0 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _handler: DMA2D },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _reserved: 0 },
449 Vector {
450 _handler: DMAMUX1_OVR,
451 },
452 ];
453}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 454impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 455impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 456impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r5ai.rs b/embassy-stm32/src/chip/stm32l4r5ai.rs
index d8b9445b9..9c98d1f88 100644
--- a/embassy-stm32/src/chip/stm32l4r5ai.rs
+++ b/embassy-stm32/src/chip/stm32l4r5ai.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -15,8 +15,442 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 I2C1_ER = 32,
70 I2C1_EV = 31,
71 I2C2_ER = 34,
72 I2C2_EV = 33,
73 I2C3_ER = 73,
74 I2C3_EV = 72,
75 I2C4_ER = 83,
76 I2C4_EV = 84,
77 LPTIM1 = 65,
78 LPTIM2 = 66,
79 LPUART1 = 70,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SPI1 = 35,
92 SPI2 = 36,
93 SPI3 = 51,
94 TAMP_STAMP = 2,
95 TIM1_BRK_TIM15 = 24,
96 TIM1_CC = 27,
97 TIM1_TRG_COM_TIM17 = 26,
98 TIM1_UP_TIM16 = 25,
99 TIM2 = 28,
100 TIM3 = 29,
101 TIM4 = 30,
102 TIM5 = 50,
103 TIM6_DAC = 54,
104 TIM7 = 55,
105 TIM8_BRK = 43,
106 TIM8_CC = 46,
107 TIM8_TRG_COM = 45,
108 TIM8_UP = 44,
109 TSC = 77,
110 UART4 = 52,
111 UART5 = 53,
112 USART1 = 37,
113 USART2 = 38,
114 USART3 = 39,
115 WWDG = 0,
116 }
117 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
118 #[inline(always)]
119 fn number(self) -> u16 {
120 self as u16
121 }
122 }
123
124 declare!(ADC1);
125 declare!(CAN1_RX0);
126 declare!(CAN1_RX1);
127 declare!(CAN1_SCE);
128 declare!(CAN1_TX);
129 declare!(COMP);
130 declare!(CRS);
131 declare!(DCMI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DFSDM1_FLT2);
135 declare!(DFSDM1_FLT3);
136 declare!(DMA1_Channel1);
137 declare!(DMA1_Channel2);
138 declare!(DMA1_Channel3);
139 declare!(DMA1_Channel4);
140 declare!(DMA1_Channel5);
141 declare!(DMA1_Channel6);
142 declare!(DMA1_Channel7);
143 declare!(DMA2D);
144 declare!(DMA2_Channel1);
145 declare!(DMA2_Channel2);
146 declare!(DMA2_Channel3);
147 declare!(DMA2_Channel4);
148 declare!(DMA2_Channel5);
149 declare!(DMA2_Channel6);
150 declare!(DMA2_Channel7);
151 declare!(DMAMUX1_OVR);
152 declare!(EXTI0);
153 declare!(EXTI1);
154 declare!(EXTI15_10);
155 declare!(EXTI2);
156 declare!(EXTI3);
157 declare!(EXTI4);
158 declare!(EXTI9_5);
159 declare!(FLASH);
160 declare!(FMC);
161 declare!(FPU);
162 declare!(I2C1_ER);
163 declare!(I2C1_EV);
164 declare!(I2C2_ER);
165 declare!(I2C2_EV);
166 declare!(I2C3_ER);
167 declare!(I2C3_EV);
168 declare!(I2C4_ER);
169 declare!(I2C4_EV);
170 declare!(LPTIM1);
171 declare!(LPTIM2);
172 declare!(LPUART1);
173 declare!(OCTOSPI1);
174 declare!(OCTOSPI2);
175 declare!(OTG_FS);
176 declare!(PVD_PVM);
177 declare!(RCC);
178 declare!(RNG);
179 declare!(RTC_Alarm);
180 declare!(RTC_WKUP);
181 declare!(SAI1);
182 declare!(SAI2);
183 declare!(SDMMC1);
184 declare!(SPI1);
185 declare!(SPI2);
186 declare!(SPI3);
187 declare!(TAMP_STAMP);
188 declare!(TIM1_BRK_TIM15);
189 declare!(TIM1_CC);
190 declare!(TIM1_TRG_COM_TIM17);
191 declare!(TIM1_UP_TIM16);
192 declare!(TIM2);
193 declare!(TIM3);
194 declare!(TIM4);
195 declare!(TIM5);
196 declare!(TIM6_DAC);
197 declare!(TIM7);
198 declare!(TIM8_BRK);
199 declare!(TIM8_CC);
200 declare!(TIM8_TRG_COM);
201 declare!(TIM8_UP);
202 declare!(TSC);
203 declare!(UART4);
204 declare!(UART5);
205 declare!(USART1);
206 declare!(USART2);
207 declare!(USART3);
208 declare!(WWDG);
209}
210mod interrupt_vector {
211 extern "C" {
212 fn ADC1();
213 fn CAN1_RX0();
214 fn CAN1_RX1();
215 fn CAN1_SCE();
216 fn CAN1_TX();
217 fn COMP();
218 fn CRS();
219 fn DCMI();
220 fn DFSDM1_FLT0();
221 fn DFSDM1_FLT1();
222 fn DFSDM1_FLT2();
223 fn DFSDM1_FLT3();
224 fn DMA1_Channel1();
225 fn DMA1_Channel2();
226 fn DMA1_Channel3();
227 fn DMA1_Channel4();
228 fn DMA1_Channel5();
229 fn DMA1_Channel6();
230 fn DMA1_Channel7();
231 fn DMA2D();
232 fn DMA2_Channel1();
233 fn DMA2_Channel2();
234 fn DMA2_Channel3();
235 fn DMA2_Channel4();
236 fn DMA2_Channel5();
237 fn DMA2_Channel6();
238 fn DMA2_Channel7();
239 fn DMAMUX1_OVR();
240 fn EXTI0();
241 fn EXTI1();
242 fn EXTI15_10();
243 fn EXTI2();
244 fn EXTI3();
245 fn EXTI4();
246 fn EXTI9_5();
247 fn FLASH();
248 fn FMC();
249 fn FPU();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn OCTOSPI1();
262 fn OCTOSPI2();
263 fn OTG_FS();
264 fn PVD_PVM();
265 fn RCC();
266 fn RNG();
267 fn RTC_Alarm();
268 fn RTC_WKUP();
269 fn SAI1();
270 fn SAI2();
271 fn SDMMC1();
272 fn SPI1();
273 fn SPI2();
274 fn SPI3();
275 fn TAMP_STAMP();
276 fn TIM1_BRK_TIM15();
277 fn TIM1_CC();
278 fn TIM1_TRG_COM_TIM17();
279 fn TIM1_UP_TIM16();
280 fn TIM2();
281 fn TIM3();
282 fn TIM4();
283 fn TIM5();
284 fn TIM6_DAC();
285 fn TIM7();
286 fn TIM8_BRK();
287 fn TIM8_CC();
288 fn TIM8_TRG_COM();
289 fn TIM8_UP();
290 fn TSC();
291 fn UART4();
292 fn UART5();
293 fn USART1();
294 fn USART2();
295 fn USART3();
296 fn WWDG();
297 }
298 pub union Vector {
299 _handler: unsafe extern "C" fn(),
300 _reserved: u32,
301 }
302 #[link_section = ".vector_table.interrupts"]
303 #[no_mangle]
304 pub static __INTERRUPTS: [Vector; 95] = [
305 Vector { _handler: WWDG },
306 Vector { _handler: PVD_PVM },
307 Vector {
308 _handler: TAMP_STAMP,
309 },
310 Vector { _handler: RTC_WKUP },
311 Vector { _handler: FLASH },
312 Vector { _handler: RCC },
313 Vector { _handler: EXTI0 },
314 Vector { _handler: EXTI1 },
315 Vector { _handler: EXTI2 },
316 Vector { _handler: EXTI3 },
317 Vector { _handler: EXTI4 },
318 Vector {
319 _handler: DMA1_Channel1,
320 },
321 Vector {
322 _handler: DMA1_Channel2,
323 },
324 Vector {
325 _handler: DMA1_Channel3,
326 },
327 Vector {
328 _handler: DMA1_Channel4,
329 },
330 Vector {
331 _handler: DMA1_Channel5,
332 },
333 Vector {
334 _handler: DMA1_Channel6,
335 },
336 Vector {
337 _handler: DMA1_Channel7,
338 },
339 Vector { _handler: ADC1 },
340 Vector { _handler: CAN1_TX },
341 Vector { _handler: CAN1_RX0 },
342 Vector { _handler: CAN1_RX1 },
343 Vector { _handler: CAN1_SCE },
344 Vector { _handler: EXTI9_5 },
345 Vector {
346 _handler: TIM1_BRK_TIM15,
347 },
348 Vector {
349 _handler: TIM1_UP_TIM16,
350 },
351 Vector {
352 _handler: TIM1_TRG_COM_TIM17,
353 },
354 Vector { _handler: TIM1_CC },
355 Vector { _handler: TIM2 },
356 Vector { _handler: TIM3 },
357 Vector { _handler: TIM4 },
358 Vector { _handler: I2C1_EV },
359 Vector { _handler: I2C1_ER },
360 Vector { _handler: I2C2_EV },
361 Vector { _handler: I2C2_ER },
362 Vector { _handler: SPI1 },
363 Vector { _handler: SPI2 },
364 Vector { _handler: USART1 },
365 Vector { _handler: USART2 },
366 Vector { _handler: USART3 },
367 Vector {
368 _handler: EXTI15_10,
369 },
370 Vector {
371 _handler: RTC_Alarm,
372 },
373 Vector {
374 _handler: DFSDM1_FLT3,
375 },
376 Vector { _handler: TIM8_BRK },
377 Vector { _handler: TIM8_UP },
378 Vector {
379 _handler: TIM8_TRG_COM,
380 },
381 Vector { _handler: TIM8_CC },
382 Vector { _reserved: 0 },
383 Vector { _handler: FMC },
384 Vector { _handler: SDMMC1 },
385 Vector { _handler: TIM5 },
386 Vector { _handler: SPI3 },
387 Vector { _handler: UART4 },
388 Vector { _handler: UART5 },
389 Vector { _handler: TIM6_DAC },
390 Vector { _handler: TIM7 },
391 Vector {
392 _handler: DMA2_Channel1,
393 },
394 Vector {
395 _handler: DMA2_Channel2,
396 },
397 Vector {
398 _handler: DMA2_Channel3,
399 },
400 Vector {
401 _handler: DMA2_Channel4,
402 },
403 Vector {
404 _handler: DMA2_Channel5,
405 },
406 Vector {
407 _handler: DFSDM1_FLT0,
408 },
409 Vector {
410 _handler: DFSDM1_FLT1,
411 },
412 Vector {
413 _handler: DFSDM1_FLT2,
414 },
415 Vector { _handler: COMP },
416 Vector { _handler: LPTIM1 },
417 Vector { _handler: LPTIM2 },
418 Vector { _handler: OTG_FS },
419 Vector {
420 _handler: DMA2_Channel6,
421 },
422 Vector {
423 _handler: DMA2_Channel7,
424 },
425 Vector { _handler: LPUART1 },
426 Vector { _handler: OCTOSPI1 },
427 Vector { _handler: I2C3_EV },
428 Vector { _handler: I2C3_ER },
429 Vector { _handler: SAI1 },
430 Vector { _handler: SAI2 },
431 Vector { _handler: OCTOSPI2 },
432 Vector { _handler: TSC },
433 Vector { _reserved: 0 },
434 Vector { _reserved: 0 },
435 Vector { _handler: RNG },
436 Vector { _handler: FPU },
437 Vector { _handler: CRS },
438 Vector { _handler: I2C4_ER },
439 Vector { _handler: I2C4_EV },
440 Vector { _handler: DCMI },
441 Vector { _reserved: 0 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _handler: DMA2D },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _reserved: 0 },
449 Vector {
450 _handler: DMAMUX1_OVR,
451 },
452 ];
453}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 454impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 455impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 456impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r5qg.rs b/embassy-stm32/src/chip/stm32l4r5qg.rs
index d8b9445b9..9c98d1f88 100644
--- a/embassy-stm32/src/chip/stm32l4r5qg.rs
+++ b/embassy-stm32/src/chip/stm32l4r5qg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -15,8 +15,442 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 I2C1_ER = 32,
70 I2C1_EV = 31,
71 I2C2_ER = 34,
72 I2C2_EV = 33,
73 I2C3_ER = 73,
74 I2C3_EV = 72,
75 I2C4_ER = 83,
76 I2C4_EV = 84,
77 LPTIM1 = 65,
78 LPTIM2 = 66,
79 LPUART1 = 70,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SPI1 = 35,
92 SPI2 = 36,
93 SPI3 = 51,
94 TAMP_STAMP = 2,
95 TIM1_BRK_TIM15 = 24,
96 TIM1_CC = 27,
97 TIM1_TRG_COM_TIM17 = 26,
98 TIM1_UP_TIM16 = 25,
99 TIM2 = 28,
100 TIM3 = 29,
101 TIM4 = 30,
102 TIM5 = 50,
103 TIM6_DAC = 54,
104 TIM7 = 55,
105 TIM8_BRK = 43,
106 TIM8_CC = 46,
107 TIM8_TRG_COM = 45,
108 TIM8_UP = 44,
109 TSC = 77,
110 UART4 = 52,
111 UART5 = 53,
112 USART1 = 37,
113 USART2 = 38,
114 USART3 = 39,
115 WWDG = 0,
116 }
117 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
118 #[inline(always)]
119 fn number(self) -> u16 {
120 self as u16
121 }
122 }
123
124 declare!(ADC1);
125 declare!(CAN1_RX0);
126 declare!(CAN1_RX1);
127 declare!(CAN1_SCE);
128 declare!(CAN1_TX);
129 declare!(COMP);
130 declare!(CRS);
131 declare!(DCMI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DFSDM1_FLT2);
135 declare!(DFSDM1_FLT3);
136 declare!(DMA1_Channel1);
137 declare!(DMA1_Channel2);
138 declare!(DMA1_Channel3);
139 declare!(DMA1_Channel4);
140 declare!(DMA1_Channel5);
141 declare!(DMA1_Channel6);
142 declare!(DMA1_Channel7);
143 declare!(DMA2D);
144 declare!(DMA2_Channel1);
145 declare!(DMA2_Channel2);
146 declare!(DMA2_Channel3);
147 declare!(DMA2_Channel4);
148 declare!(DMA2_Channel5);
149 declare!(DMA2_Channel6);
150 declare!(DMA2_Channel7);
151 declare!(DMAMUX1_OVR);
152 declare!(EXTI0);
153 declare!(EXTI1);
154 declare!(EXTI15_10);
155 declare!(EXTI2);
156 declare!(EXTI3);
157 declare!(EXTI4);
158 declare!(EXTI9_5);
159 declare!(FLASH);
160 declare!(FMC);
161 declare!(FPU);
162 declare!(I2C1_ER);
163 declare!(I2C1_EV);
164 declare!(I2C2_ER);
165 declare!(I2C2_EV);
166 declare!(I2C3_ER);
167 declare!(I2C3_EV);
168 declare!(I2C4_ER);
169 declare!(I2C4_EV);
170 declare!(LPTIM1);
171 declare!(LPTIM2);
172 declare!(LPUART1);
173 declare!(OCTOSPI1);
174 declare!(OCTOSPI2);
175 declare!(OTG_FS);
176 declare!(PVD_PVM);
177 declare!(RCC);
178 declare!(RNG);
179 declare!(RTC_Alarm);
180 declare!(RTC_WKUP);
181 declare!(SAI1);
182 declare!(SAI2);
183 declare!(SDMMC1);
184 declare!(SPI1);
185 declare!(SPI2);
186 declare!(SPI3);
187 declare!(TAMP_STAMP);
188 declare!(TIM1_BRK_TIM15);
189 declare!(TIM1_CC);
190 declare!(TIM1_TRG_COM_TIM17);
191 declare!(TIM1_UP_TIM16);
192 declare!(TIM2);
193 declare!(TIM3);
194 declare!(TIM4);
195 declare!(TIM5);
196 declare!(TIM6_DAC);
197 declare!(TIM7);
198 declare!(TIM8_BRK);
199 declare!(TIM8_CC);
200 declare!(TIM8_TRG_COM);
201 declare!(TIM8_UP);
202 declare!(TSC);
203 declare!(UART4);
204 declare!(UART5);
205 declare!(USART1);
206 declare!(USART2);
207 declare!(USART3);
208 declare!(WWDG);
209}
210mod interrupt_vector {
211 extern "C" {
212 fn ADC1();
213 fn CAN1_RX0();
214 fn CAN1_RX1();
215 fn CAN1_SCE();
216 fn CAN1_TX();
217 fn COMP();
218 fn CRS();
219 fn DCMI();
220 fn DFSDM1_FLT0();
221 fn DFSDM1_FLT1();
222 fn DFSDM1_FLT2();
223 fn DFSDM1_FLT3();
224 fn DMA1_Channel1();
225 fn DMA1_Channel2();
226 fn DMA1_Channel3();
227 fn DMA1_Channel4();
228 fn DMA1_Channel5();
229 fn DMA1_Channel6();
230 fn DMA1_Channel7();
231 fn DMA2D();
232 fn DMA2_Channel1();
233 fn DMA2_Channel2();
234 fn DMA2_Channel3();
235 fn DMA2_Channel4();
236 fn DMA2_Channel5();
237 fn DMA2_Channel6();
238 fn DMA2_Channel7();
239 fn DMAMUX1_OVR();
240 fn EXTI0();
241 fn EXTI1();
242 fn EXTI15_10();
243 fn EXTI2();
244 fn EXTI3();
245 fn EXTI4();
246 fn EXTI9_5();
247 fn FLASH();
248 fn FMC();
249 fn FPU();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn OCTOSPI1();
262 fn OCTOSPI2();
263 fn OTG_FS();
264 fn PVD_PVM();
265 fn RCC();
266 fn RNG();
267 fn RTC_Alarm();
268 fn RTC_WKUP();
269 fn SAI1();
270 fn SAI2();
271 fn SDMMC1();
272 fn SPI1();
273 fn SPI2();
274 fn SPI3();
275 fn TAMP_STAMP();
276 fn TIM1_BRK_TIM15();
277 fn TIM1_CC();
278 fn TIM1_TRG_COM_TIM17();
279 fn TIM1_UP_TIM16();
280 fn TIM2();
281 fn TIM3();
282 fn TIM4();
283 fn TIM5();
284 fn TIM6_DAC();
285 fn TIM7();
286 fn TIM8_BRK();
287 fn TIM8_CC();
288 fn TIM8_TRG_COM();
289 fn TIM8_UP();
290 fn TSC();
291 fn UART4();
292 fn UART5();
293 fn USART1();
294 fn USART2();
295 fn USART3();
296 fn WWDG();
297 }
298 pub union Vector {
299 _handler: unsafe extern "C" fn(),
300 _reserved: u32,
301 }
302 #[link_section = ".vector_table.interrupts"]
303 #[no_mangle]
304 pub static __INTERRUPTS: [Vector; 95] = [
305 Vector { _handler: WWDG },
306 Vector { _handler: PVD_PVM },
307 Vector {
308 _handler: TAMP_STAMP,
309 },
310 Vector { _handler: RTC_WKUP },
311 Vector { _handler: FLASH },
312 Vector { _handler: RCC },
313 Vector { _handler: EXTI0 },
314 Vector { _handler: EXTI1 },
315 Vector { _handler: EXTI2 },
316 Vector { _handler: EXTI3 },
317 Vector { _handler: EXTI4 },
318 Vector {
319 _handler: DMA1_Channel1,
320 },
321 Vector {
322 _handler: DMA1_Channel2,
323 },
324 Vector {
325 _handler: DMA1_Channel3,
326 },
327 Vector {
328 _handler: DMA1_Channel4,
329 },
330 Vector {
331 _handler: DMA1_Channel5,
332 },
333 Vector {
334 _handler: DMA1_Channel6,
335 },
336 Vector {
337 _handler: DMA1_Channel7,
338 },
339 Vector { _handler: ADC1 },
340 Vector { _handler: CAN1_TX },
341 Vector { _handler: CAN1_RX0 },
342 Vector { _handler: CAN1_RX1 },
343 Vector { _handler: CAN1_SCE },
344 Vector { _handler: EXTI9_5 },
345 Vector {
346 _handler: TIM1_BRK_TIM15,
347 },
348 Vector {
349 _handler: TIM1_UP_TIM16,
350 },
351 Vector {
352 _handler: TIM1_TRG_COM_TIM17,
353 },
354 Vector { _handler: TIM1_CC },
355 Vector { _handler: TIM2 },
356 Vector { _handler: TIM3 },
357 Vector { _handler: TIM4 },
358 Vector { _handler: I2C1_EV },
359 Vector { _handler: I2C1_ER },
360 Vector { _handler: I2C2_EV },
361 Vector { _handler: I2C2_ER },
362 Vector { _handler: SPI1 },
363 Vector { _handler: SPI2 },
364 Vector { _handler: USART1 },
365 Vector { _handler: USART2 },
366 Vector { _handler: USART3 },
367 Vector {
368 _handler: EXTI15_10,
369 },
370 Vector {
371 _handler: RTC_Alarm,
372 },
373 Vector {
374 _handler: DFSDM1_FLT3,
375 },
376 Vector { _handler: TIM8_BRK },
377 Vector { _handler: TIM8_UP },
378 Vector {
379 _handler: TIM8_TRG_COM,
380 },
381 Vector { _handler: TIM8_CC },
382 Vector { _reserved: 0 },
383 Vector { _handler: FMC },
384 Vector { _handler: SDMMC1 },
385 Vector { _handler: TIM5 },
386 Vector { _handler: SPI3 },
387 Vector { _handler: UART4 },
388 Vector { _handler: UART5 },
389 Vector { _handler: TIM6_DAC },
390 Vector { _handler: TIM7 },
391 Vector {
392 _handler: DMA2_Channel1,
393 },
394 Vector {
395 _handler: DMA2_Channel2,
396 },
397 Vector {
398 _handler: DMA2_Channel3,
399 },
400 Vector {
401 _handler: DMA2_Channel4,
402 },
403 Vector {
404 _handler: DMA2_Channel5,
405 },
406 Vector {
407 _handler: DFSDM1_FLT0,
408 },
409 Vector {
410 _handler: DFSDM1_FLT1,
411 },
412 Vector {
413 _handler: DFSDM1_FLT2,
414 },
415 Vector { _handler: COMP },
416 Vector { _handler: LPTIM1 },
417 Vector { _handler: LPTIM2 },
418 Vector { _handler: OTG_FS },
419 Vector {
420 _handler: DMA2_Channel6,
421 },
422 Vector {
423 _handler: DMA2_Channel7,
424 },
425 Vector { _handler: LPUART1 },
426 Vector { _handler: OCTOSPI1 },
427 Vector { _handler: I2C3_EV },
428 Vector { _handler: I2C3_ER },
429 Vector { _handler: SAI1 },
430 Vector { _handler: SAI2 },
431 Vector { _handler: OCTOSPI2 },
432 Vector { _handler: TSC },
433 Vector { _reserved: 0 },
434 Vector { _reserved: 0 },
435 Vector { _handler: RNG },
436 Vector { _handler: FPU },
437 Vector { _handler: CRS },
438 Vector { _handler: I2C4_ER },
439 Vector { _handler: I2C4_EV },
440 Vector { _handler: DCMI },
441 Vector { _reserved: 0 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _handler: DMA2D },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _reserved: 0 },
449 Vector {
450 _handler: DMAMUX1_OVR,
451 },
452 ];
453}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 454impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 455impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 456impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r5qi.rs b/embassy-stm32/src/chip/stm32l4r5qi.rs
index d8b9445b9..9c98d1f88 100644
--- a/embassy-stm32/src/chip/stm32l4r5qi.rs
+++ b/embassy-stm32/src/chip/stm32l4r5qi.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -15,8 +15,442 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 I2C1_ER = 32,
70 I2C1_EV = 31,
71 I2C2_ER = 34,
72 I2C2_EV = 33,
73 I2C3_ER = 73,
74 I2C3_EV = 72,
75 I2C4_ER = 83,
76 I2C4_EV = 84,
77 LPTIM1 = 65,
78 LPTIM2 = 66,
79 LPUART1 = 70,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SPI1 = 35,
92 SPI2 = 36,
93 SPI3 = 51,
94 TAMP_STAMP = 2,
95 TIM1_BRK_TIM15 = 24,
96 TIM1_CC = 27,
97 TIM1_TRG_COM_TIM17 = 26,
98 TIM1_UP_TIM16 = 25,
99 TIM2 = 28,
100 TIM3 = 29,
101 TIM4 = 30,
102 TIM5 = 50,
103 TIM6_DAC = 54,
104 TIM7 = 55,
105 TIM8_BRK = 43,
106 TIM8_CC = 46,
107 TIM8_TRG_COM = 45,
108 TIM8_UP = 44,
109 TSC = 77,
110 UART4 = 52,
111 UART5 = 53,
112 USART1 = 37,
113 USART2 = 38,
114 USART3 = 39,
115 WWDG = 0,
116 }
117 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
118 #[inline(always)]
119 fn number(self) -> u16 {
120 self as u16
121 }
122 }
123
124 declare!(ADC1);
125 declare!(CAN1_RX0);
126 declare!(CAN1_RX1);
127 declare!(CAN1_SCE);
128 declare!(CAN1_TX);
129 declare!(COMP);
130 declare!(CRS);
131 declare!(DCMI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DFSDM1_FLT2);
135 declare!(DFSDM1_FLT3);
136 declare!(DMA1_Channel1);
137 declare!(DMA1_Channel2);
138 declare!(DMA1_Channel3);
139 declare!(DMA1_Channel4);
140 declare!(DMA1_Channel5);
141 declare!(DMA1_Channel6);
142 declare!(DMA1_Channel7);
143 declare!(DMA2D);
144 declare!(DMA2_Channel1);
145 declare!(DMA2_Channel2);
146 declare!(DMA2_Channel3);
147 declare!(DMA2_Channel4);
148 declare!(DMA2_Channel5);
149 declare!(DMA2_Channel6);
150 declare!(DMA2_Channel7);
151 declare!(DMAMUX1_OVR);
152 declare!(EXTI0);
153 declare!(EXTI1);
154 declare!(EXTI15_10);
155 declare!(EXTI2);
156 declare!(EXTI3);
157 declare!(EXTI4);
158 declare!(EXTI9_5);
159 declare!(FLASH);
160 declare!(FMC);
161 declare!(FPU);
162 declare!(I2C1_ER);
163 declare!(I2C1_EV);
164 declare!(I2C2_ER);
165 declare!(I2C2_EV);
166 declare!(I2C3_ER);
167 declare!(I2C3_EV);
168 declare!(I2C4_ER);
169 declare!(I2C4_EV);
170 declare!(LPTIM1);
171 declare!(LPTIM2);
172 declare!(LPUART1);
173 declare!(OCTOSPI1);
174 declare!(OCTOSPI2);
175 declare!(OTG_FS);
176 declare!(PVD_PVM);
177 declare!(RCC);
178 declare!(RNG);
179 declare!(RTC_Alarm);
180 declare!(RTC_WKUP);
181 declare!(SAI1);
182 declare!(SAI2);
183 declare!(SDMMC1);
184 declare!(SPI1);
185 declare!(SPI2);
186 declare!(SPI3);
187 declare!(TAMP_STAMP);
188 declare!(TIM1_BRK_TIM15);
189 declare!(TIM1_CC);
190 declare!(TIM1_TRG_COM_TIM17);
191 declare!(TIM1_UP_TIM16);
192 declare!(TIM2);
193 declare!(TIM3);
194 declare!(TIM4);
195 declare!(TIM5);
196 declare!(TIM6_DAC);
197 declare!(TIM7);
198 declare!(TIM8_BRK);
199 declare!(TIM8_CC);
200 declare!(TIM8_TRG_COM);
201 declare!(TIM8_UP);
202 declare!(TSC);
203 declare!(UART4);
204 declare!(UART5);
205 declare!(USART1);
206 declare!(USART2);
207 declare!(USART3);
208 declare!(WWDG);
209}
210mod interrupt_vector {
211 extern "C" {
212 fn ADC1();
213 fn CAN1_RX0();
214 fn CAN1_RX1();
215 fn CAN1_SCE();
216 fn CAN1_TX();
217 fn COMP();
218 fn CRS();
219 fn DCMI();
220 fn DFSDM1_FLT0();
221 fn DFSDM1_FLT1();
222 fn DFSDM1_FLT2();
223 fn DFSDM1_FLT3();
224 fn DMA1_Channel1();
225 fn DMA1_Channel2();
226 fn DMA1_Channel3();
227 fn DMA1_Channel4();
228 fn DMA1_Channel5();
229 fn DMA1_Channel6();
230 fn DMA1_Channel7();
231 fn DMA2D();
232 fn DMA2_Channel1();
233 fn DMA2_Channel2();
234 fn DMA2_Channel3();
235 fn DMA2_Channel4();
236 fn DMA2_Channel5();
237 fn DMA2_Channel6();
238 fn DMA2_Channel7();
239 fn DMAMUX1_OVR();
240 fn EXTI0();
241 fn EXTI1();
242 fn EXTI15_10();
243 fn EXTI2();
244 fn EXTI3();
245 fn EXTI4();
246 fn EXTI9_5();
247 fn FLASH();
248 fn FMC();
249 fn FPU();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn OCTOSPI1();
262 fn OCTOSPI2();
263 fn OTG_FS();
264 fn PVD_PVM();
265 fn RCC();
266 fn RNG();
267 fn RTC_Alarm();
268 fn RTC_WKUP();
269 fn SAI1();
270 fn SAI2();
271 fn SDMMC1();
272 fn SPI1();
273 fn SPI2();
274 fn SPI3();
275 fn TAMP_STAMP();
276 fn TIM1_BRK_TIM15();
277 fn TIM1_CC();
278 fn TIM1_TRG_COM_TIM17();
279 fn TIM1_UP_TIM16();
280 fn TIM2();
281 fn TIM3();
282 fn TIM4();
283 fn TIM5();
284 fn TIM6_DAC();
285 fn TIM7();
286 fn TIM8_BRK();
287 fn TIM8_CC();
288 fn TIM8_TRG_COM();
289 fn TIM8_UP();
290 fn TSC();
291 fn UART4();
292 fn UART5();
293 fn USART1();
294 fn USART2();
295 fn USART3();
296 fn WWDG();
297 }
298 pub union Vector {
299 _handler: unsafe extern "C" fn(),
300 _reserved: u32,
301 }
302 #[link_section = ".vector_table.interrupts"]
303 #[no_mangle]
304 pub static __INTERRUPTS: [Vector; 95] = [
305 Vector { _handler: WWDG },
306 Vector { _handler: PVD_PVM },
307 Vector {
308 _handler: TAMP_STAMP,
309 },
310 Vector { _handler: RTC_WKUP },
311 Vector { _handler: FLASH },
312 Vector { _handler: RCC },
313 Vector { _handler: EXTI0 },
314 Vector { _handler: EXTI1 },
315 Vector { _handler: EXTI2 },
316 Vector { _handler: EXTI3 },
317 Vector { _handler: EXTI4 },
318 Vector {
319 _handler: DMA1_Channel1,
320 },
321 Vector {
322 _handler: DMA1_Channel2,
323 },
324 Vector {
325 _handler: DMA1_Channel3,
326 },
327 Vector {
328 _handler: DMA1_Channel4,
329 },
330 Vector {
331 _handler: DMA1_Channel5,
332 },
333 Vector {
334 _handler: DMA1_Channel6,
335 },
336 Vector {
337 _handler: DMA1_Channel7,
338 },
339 Vector { _handler: ADC1 },
340 Vector { _handler: CAN1_TX },
341 Vector { _handler: CAN1_RX0 },
342 Vector { _handler: CAN1_RX1 },
343 Vector { _handler: CAN1_SCE },
344 Vector { _handler: EXTI9_5 },
345 Vector {
346 _handler: TIM1_BRK_TIM15,
347 },
348 Vector {
349 _handler: TIM1_UP_TIM16,
350 },
351 Vector {
352 _handler: TIM1_TRG_COM_TIM17,
353 },
354 Vector { _handler: TIM1_CC },
355 Vector { _handler: TIM2 },
356 Vector { _handler: TIM3 },
357 Vector { _handler: TIM4 },
358 Vector { _handler: I2C1_EV },
359 Vector { _handler: I2C1_ER },
360 Vector { _handler: I2C2_EV },
361 Vector { _handler: I2C2_ER },
362 Vector { _handler: SPI1 },
363 Vector { _handler: SPI2 },
364 Vector { _handler: USART1 },
365 Vector { _handler: USART2 },
366 Vector { _handler: USART3 },
367 Vector {
368 _handler: EXTI15_10,
369 },
370 Vector {
371 _handler: RTC_Alarm,
372 },
373 Vector {
374 _handler: DFSDM1_FLT3,
375 },
376 Vector { _handler: TIM8_BRK },
377 Vector { _handler: TIM8_UP },
378 Vector {
379 _handler: TIM8_TRG_COM,
380 },
381 Vector { _handler: TIM8_CC },
382 Vector { _reserved: 0 },
383 Vector { _handler: FMC },
384 Vector { _handler: SDMMC1 },
385 Vector { _handler: TIM5 },
386 Vector { _handler: SPI3 },
387 Vector { _handler: UART4 },
388 Vector { _handler: UART5 },
389 Vector { _handler: TIM6_DAC },
390 Vector { _handler: TIM7 },
391 Vector {
392 _handler: DMA2_Channel1,
393 },
394 Vector {
395 _handler: DMA2_Channel2,
396 },
397 Vector {
398 _handler: DMA2_Channel3,
399 },
400 Vector {
401 _handler: DMA2_Channel4,
402 },
403 Vector {
404 _handler: DMA2_Channel5,
405 },
406 Vector {
407 _handler: DFSDM1_FLT0,
408 },
409 Vector {
410 _handler: DFSDM1_FLT1,
411 },
412 Vector {
413 _handler: DFSDM1_FLT2,
414 },
415 Vector { _handler: COMP },
416 Vector { _handler: LPTIM1 },
417 Vector { _handler: LPTIM2 },
418 Vector { _handler: OTG_FS },
419 Vector {
420 _handler: DMA2_Channel6,
421 },
422 Vector {
423 _handler: DMA2_Channel7,
424 },
425 Vector { _handler: LPUART1 },
426 Vector { _handler: OCTOSPI1 },
427 Vector { _handler: I2C3_EV },
428 Vector { _handler: I2C3_ER },
429 Vector { _handler: SAI1 },
430 Vector { _handler: SAI2 },
431 Vector { _handler: OCTOSPI2 },
432 Vector { _handler: TSC },
433 Vector { _reserved: 0 },
434 Vector { _reserved: 0 },
435 Vector { _handler: RNG },
436 Vector { _handler: FPU },
437 Vector { _handler: CRS },
438 Vector { _handler: I2C4_ER },
439 Vector { _handler: I2C4_EV },
440 Vector { _handler: DCMI },
441 Vector { _reserved: 0 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _handler: DMA2D },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _reserved: 0 },
449 Vector {
450 _handler: DMAMUX1_OVR,
451 },
452 ];
453}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 454impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 455impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 456impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r5vg.rs b/embassy-stm32/src/chip/stm32l4r5vg.rs
index d8b9445b9..9c98d1f88 100644
--- a/embassy-stm32/src/chip/stm32l4r5vg.rs
+++ b/embassy-stm32/src/chip/stm32l4r5vg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -15,8 +15,442 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 I2C1_ER = 32,
70 I2C1_EV = 31,
71 I2C2_ER = 34,
72 I2C2_EV = 33,
73 I2C3_ER = 73,
74 I2C3_EV = 72,
75 I2C4_ER = 83,
76 I2C4_EV = 84,
77 LPTIM1 = 65,
78 LPTIM2 = 66,
79 LPUART1 = 70,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SPI1 = 35,
92 SPI2 = 36,
93 SPI3 = 51,
94 TAMP_STAMP = 2,
95 TIM1_BRK_TIM15 = 24,
96 TIM1_CC = 27,
97 TIM1_TRG_COM_TIM17 = 26,
98 TIM1_UP_TIM16 = 25,
99 TIM2 = 28,
100 TIM3 = 29,
101 TIM4 = 30,
102 TIM5 = 50,
103 TIM6_DAC = 54,
104 TIM7 = 55,
105 TIM8_BRK = 43,
106 TIM8_CC = 46,
107 TIM8_TRG_COM = 45,
108 TIM8_UP = 44,
109 TSC = 77,
110 UART4 = 52,
111 UART5 = 53,
112 USART1 = 37,
113 USART2 = 38,
114 USART3 = 39,
115 WWDG = 0,
116 }
117 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
118 #[inline(always)]
119 fn number(self) -> u16 {
120 self as u16
121 }
122 }
123
124 declare!(ADC1);
125 declare!(CAN1_RX0);
126 declare!(CAN1_RX1);
127 declare!(CAN1_SCE);
128 declare!(CAN1_TX);
129 declare!(COMP);
130 declare!(CRS);
131 declare!(DCMI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DFSDM1_FLT2);
135 declare!(DFSDM1_FLT3);
136 declare!(DMA1_Channel1);
137 declare!(DMA1_Channel2);
138 declare!(DMA1_Channel3);
139 declare!(DMA1_Channel4);
140 declare!(DMA1_Channel5);
141 declare!(DMA1_Channel6);
142 declare!(DMA1_Channel7);
143 declare!(DMA2D);
144 declare!(DMA2_Channel1);
145 declare!(DMA2_Channel2);
146 declare!(DMA2_Channel3);
147 declare!(DMA2_Channel4);
148 declare!(DMA2_Channel5);
149 declare!(DMA2_Channel6);
150 declare!(DMA2_Channel7);
151 declare!(DMAMUX1_OVR);
152 declare!(EXTI0);
153 declare!(EXTI1);
154 declare!(EXTI15_10);
155 declare!(EXTI2);
156 declare!(EXTI3);
157 declare!(EXTI4);
158 declare!(EXTI9_5);
159 declare!(FLASH);
160 declare!(FMC);
161 declare!(FPU);
162 declare!(I2C1_ER);
163 declare!(I2C1_EV);
164 declare!(I2C2_ER);
165 declare!(I2C2_EV);
166 declare!(I2C3_ER);
167 declare!(I2C3_EV);
168 declare!(I2C4_ER);
169 declare!(I2C4_EV);
170 declare!(LPTIM1);
171 declare!(LPTIM2);
172 declare!(LPUART1);
173 declare!(OCTOSPI1);
174 declare!(OCTOSPI2);
175 declare!(OTG_FS);
176 declare!(PVD_PVM);
177 declare!(RCC);
178 declare!(RNG);
179 declare!(RTC_Alarm);
180 declare!(RTC_WKUP);
181 declare!(SAI1);
182 declare!(SAI2);
183 declare!(SDMMC1);
184 declare!(SPI1);
185 declare!(SPI2);
186 declare!(SPI3);
187 declare!(TAMP_STAMP);
188 declare!(TIM1_BRK_TIM15);
189 declare!(TIM1_CC);
190 declare!(TIM1_TRG_COM_TIM17);
191 declare!(TIM1_UP_TIM16);
192 declare!(TIM2);
193 declare!(TIM3);
194 declare!(TIM4);
195 declare!(TIM5);
196 declare!(TIM6_DAC);
197 declare!(TIM7);
198 declare!(TIM8_BRK);
199 declare!(TIM8_CC);
200 declare!(TIM8_TRG_COM);
201 declare!(TIM8_UP);
202 declare!(TSC);
203 declare!(UART4);
204 declare!(UART5);
205 declare!(USART1);
206 declare!(USART2);
207 declare!(USART3);
208 declare!(WWDG);
209}
210mod interrupt_vector {
211 extern "C" {
212 fn ADC1();
213 fn CAN1_RX0();
214 fn CAN1_RX1();
215 fn CAN1_SCE();
216 fn CAN1_TX();
217 fn COMP();
218 fn CRS();
219 fn DCMI();
220 fn DFSDM1_FLT0();
221 fn DFSDM1_FLT1();
222 fn DFSDM1_FLT2();
223 fn DFSDM1_FLT3();
224 fn DMA1_Channel1();
225 fn DMA1_Channel2();
226 fn DMA1_Channel3();
227 fn DMA1_Channel4();
228 fn DMA1_Channel5();
229 fn DMA1_Channel6();
230 fn DMA1_Channel7();
231 fn DMA2D();
232 fn DMA2_Channel1();
233 fn DMA2_Channel2();
234 fn DMA2_Channel3();
235 fn DMA2_Channel4();
236 fn DMA2_Channel5();
237 fn DMA2_Channel6();
238 fn DMA2_Channel7();
239 fn DMAMUX1_OVR();
240 fn EXTI0();
241 fn EXTI1();
242 fn EXTI15_10();
243 fn EXTI2();
244 fn EXTI3();
245 fn EXTI4();
246 fn EXTI9_5();
247 fn FLASH();
248 fn FMC();
249 fn FPU();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn OCTOSPI1();
262 fn OCTOSPI2();
263 fn OTG_FS();
264 fn PVD_PVM();
265 fn RCC();
266 fn RNG();
267 fn RTC_Alarm();
268 fn RTC_WKUP();
269 fn SAI1();
270 fn SAI2();
271 fn SDMMC1();
272 fn SPI1();
273 fn SPI2();
274 fn SPI3();
275 fn TAMP_STAMP();
276 fn TIM1_BRK_TIM15();
277 fn TIM1_CC();
278 fn TIM1_TRG_COM_TIM17();
279 fn TIM1_UP_TIM16();
280 fn TIM2();
281 fn TIM3();
282 fn TIM4();
283 fn TIM5();
284 fn TIM6_DAC();
285 fn TIM7();
286 fn TIM8_BRK();
287 fn TIM8_CC();
288 fn TIM8_TRG_COM();
289 fn TIM8_UP();
290 fn TSC();
291 fn UART4();
292 fn UART5();
293 fn USART1();
294 fn USART2();
295 fn USART3();
296 fn WWDG();
297 }
298 pub union Vector {
299 _handler: unsafe extern "C" fn(),
300 _reserved: u32,
301 }
302 #[link_section = ".vector_table.interrupts"]
303 #[no_mangle]
304 pub static __INTERRUPTS: [Vector; 95] = [
305 Vector { _handler: WWDG },
306 Vector { _handler: PVD_PVM },
307 Vector {
308 _handler: TAMP_STAMP,
309 },
310 Vector { _handler: RTC_WKUP },
311 Vector { _handler: FLASH },
312 Vector { _handler: RCC },
313 Vector { _handler: EXTI0 },
314 Vector { _handler: EXTI1 },
315 Vector { _handler: EXTI2 },
316 Vector { _handler: EXTI3 },
317 Vector { _handler: EXTI4 },
318 Vector {
319 _handler: DMA1_Channel1,
320 },
321 Vector {
322 _handler: DMA1_Channel2,
323 },
324 Vector {
325 _handler: DMA1_Channel3,
326 },
327 Vector {
328 _handler: DMA1_Channel4,
329 },
330 Vector {
331 _handler: DMA1_Channel5,
332 },
333 Vector {
334 _handler: DMA1_Channel6,
335 },
336 Vector {
337 _handler: DMA1_Channel7,
338 },
339 Vector { _handler: ADC1 },
340 Vector { _handler: CAN1_TX },
341 Vector { _handler: CAN1_RX0 },
342 Vector { _handler: CAN1_RX1 },
343 Vector { _handler: CAN1_SCE },
344 Vector { _handler: EXTI9_5 },
345 Vector {
346 _handler: TIM1_BRK_TIM15,
347 },
348 Vector {
349 _handler: TIM1_UP_TIM16,
350 },
351 Vector {
352 _handler: TIM1_TRG_COM_TIM17,
353 },
354 Vector { _handler: TIM1_CC },
355 Vector { _handler: TIM2 },
356 Vector { _handler: TIM3 },
357 Vector { _handler: TIM4 },
358 Vector { _handler: I2C1_EV },
359 Vector { _handler: I2C1_ER },
360 Vector { _handler: I2C2_EV },
361 Vector { _handler: I2C2_ER },
362 Vector { _handler: SPI1 },
363 Vector { _handler: SPI2 },
364 Vector { _handler: USART1 },
365 Vector { _handler: USART2 },
366 Vector { _handler: USART3 },
367 Vector {
368 _handler: EXTI15_10,
369 },
370 Vector {
371 _handler: RTC_Alarm,
372 },
373 Vector {
374 _handler: DFSDM1_FLT3,
375 },
376 Vector { _handler: TIM8_BRK },
377 Vector { _handler: TIM8_UP },
378 Vector {
379 _handler: TIM8_TRG_COM,
380 },
381 Vector { _handler: TIM8_CC },
382 Vector { _reserved: 0 },
383 Vector { _handler: FMC },
384 Vector { _handler: SDMMC1 },
385 Vector { _handler: TIM5 },
386 Vector { _handler: SPI3 },
387 Vector { _handler: UART4 },
388 Vector { _handler: UART5 },
389 Vector { _handler: TIM6_DAC },
390 Vector { _handler: TIM7 },
391 Vector {
392 _handler: DMA2_Channel1,
393 },
394 Vector {
395 _handler: DMA2_Channel2,
396 },
397 Vector {
398 _handler: DMA2_Channel3,
399 },
400 Vector {
401 _handler: DMA2_Channel4,
402 },
403 Vector {
404 _handler: DMA2_Channel5,
405 },
406 Vector {
407 _handler: DFSDM1_FLT0,
408 },
409 Vector {
410 _handler: DFSDM1_FLT1,
411 },
412 Vector {
413 _handler: DFSDM1_FLT2,
414 },
415 Vector { _handler: COMP },
416 Vector { _handler: LPTIM1 },
417 Vector { _handler: LPTIM2 },
418 Vector { _handler: OTG_FS },
419 Vector {
420 _handler: DMA2_Channel6,
421 },
422 Vector {
423 _handler: DMA2_Channel7,
424 },
425 Vector { _handler: LPUART1 },
426 Vector { _handler: OCTOSPI1 },
427 Vector { _handler: I2C3_EV },
428 Vector { _handler: I2C3_ER },
429 Vector { _handler: SAI1 },
430 Vector { _handler: SAI2 },
431 Vector { _handler: OCTOSPI2 },
432 Vector { _handler: TSC },
433 Vector { _reserved: 0 },
434 Vector { _reserved: 0 },
435 Vector { _handler: RNG },
436 Vector { _handler: FPU },
437 Vector { _handler: CRS },
438 Vector { _handler: I2C4_ER },
439 Vector { _handler: I2C4_EV },
440 Vector { _handler: DCMI },
441 Vector { _reserved: 0 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _handler: DMA2D },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _reserved: 0 },
449 Vector {
450 _handler: DMAMUX1_OVR,
451 },
452 ];
453}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 454impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 455impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 456impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r5vi.rs b/embassy-stm32/src/chip/stm32l4r5vi.rs
index d8b9445b9..9c98d1f88 100644
--- a/embassy-stm32/src/chip/stm32l4r5vi.rs
+++ b/embassy-stm32/src/chip/stm32l4r5vi.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -15,8 +15,442 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 I2C1_ER = 32,
70 I2C1_EV = 31,
71 I2C2_ER = 34,
72 I2C2_EV = 33,
73 I2C3_ER = 73,
74 I2C3_EV = 72,
75 I2C4_ER = 83,
76 I2C4_EV = 84,
77 LPTIM1 = 65,
78 LPTIM2 = 66,
79 LPUART1 = 70,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SPI1 = 35,
92 SPI2 = 36,
93 SPI3 = 51,
94 TAMP_STAMP = 2,
95 TIM1_BRK_TIM15 = 24,
96 TIM1_CC = 27,
97 TIM1_TRG_COM_TIM17 = 26,
98 TIM1_UP_TIM16 = 25,
99 TIM2 = 28,
100 TIM3 = 29,
101 TIM4 = 30,
102 TIM5 = 50,
103 TIM6_DAC = 54,
104 TIM7 = 55,
105 TIM8_BRK = 43,
106 TIM8_CC = 46,
107 TIM8_TRG_COM = 45,
108 TIM8_UP = 44,
109 TSC = 77,
110 UART4 = 52,
111 UART5 = 53,
112 USART1 = 37,
113 USART2 = 38,
114 USART3 = 39,
115 WWDG = 0,
116 }
117 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
118 #[inline(always)]
119 fn number(self) -> u16 {
120 self as u16
121 }
122 }
123
124 declare!(ADC1);
125 declare!(CAN1_RX0);
126 declare!(CAN1_RX1);
127 declare!(CAN1_SCE);
128 declare!(CAN1_TX);
129 declare!(COMP);
130 declare!(CRS);
131 declare!(DCMI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DFSDM1_FLT2);
135 declare!(DFSDM1_FLT3);
136 declare!(DMA1_Channel1);
137 declare!(DMA1_Channel2);
138 declare!(DMA1_Channel3);
139 declare!(DMA1_Channel4);
140 declare!(DMA1_Channel5);
141 declare!(DMA1_Channel6);
142 declare!(DMA1_Channel7);
143 declare!(DMA2D);
144 declare!(DMA2_Channel1);
145 declare!(DMA2_Channel2);
146 declare!(DMA2_Channel3);
147 declare!(DMA2_Channel4);
148 declare!(DMA2_Channel5);
149 declare!(DMA2_Channel6);
150 declare!(DMA2_Channel7);
151 declare!(DMAMUX1_OVR);
152 declare!(EXTI0);
153 declare!(EXTI1);
154 declare!(EXTI15_10);
155 declare!(EXTI2);
156 declare!(EXTI3);
157 declare!(EXTI4);
158 declare!(EXTI9_5);
159 declare!(FLASH);
160 declare!(FMC);
161 declare!(FPU);
162 declare!(I2C1_ER);
163 declare!(I2C1_EV);
164 declare!(I2C2_ER);
165 declare!(I2C2_EV);
166 declare!(I2C3_ER);
167 declare!(I2C3_EV);
168 declare!(I2C4_ER);
169 declare!(I2C4_EV);
170 declare!(LPTIM1);
171 declare!(LPTIM2);
172 declare!(LPUART1);
173 declare!(OCTOSPI1);
174 declare!(OCTOSPI2);
175 declare!(OTG_FS);
176 declare!(PVD_PVM);
177 declare!(RCC);
178 declare!(RNG);
179 declare!(RTC_Alarm);
180 declare!(RTC_WKUP);
181 declare!(SAI1);
182 declare!(SAI2);
183 declare!(SDMMC1);
184 declare!(SPI1);
185 declare!(SPI2);
186 declare!(SPI3);
187 declare!(TAMP_STAMP);
188 declare!(TIM1_BRK_TIM15);
189 declare!(TIM1_CC);
190 declare!(TIM1_TRG_COM_TIM17);
191 declare!(TIM1_UP_TIM16);
192 declare!(TIM2);
193 declare!(TIM3);
194 declare!(TIM4);
195 declare!(TIM5);
196 declare!(TIM6_DAC);
197 declare!(TIM7);
198 declare!(TIM8_BRK);
199 declare!(TIM8_CC);
200 declare!(TIM8_TRG_COM);
201 declare!(TIM8_UP);
202 declare!(TSC);
203 declare!(UART4);
204 declare!(UART5);
205 declare!(USART1);
206 declare!(USART2);
207 declare!(USART3);
208 declare!(WWDG);
209}
210mod interrupt_vector {
211 extern "C" {
212 fn ADC1();
213 fn CAN1_RX0();
214 fn CAN1_RX1();
215 fn CAN1_SCE();
216 fn CAN1_TX();
217 fn COMP();
218 fn CRS();
219 fn DCMI();
220 fn DFSDM1_FLT0();
221 fn DFSDM1_FLT1();
222 fn DFSDM1_FLT2();
223 fn DFSDM1_FLT3();
224 fn DMA1_Channel1();
225 fn DMA1_Channel2();
226 fn DMA1_Channel3();
227 fn DMA1_Channel4();
228 fn DMA1_Channel5();
229 fn DMA1_Channel6();
230 fn DMA1_Channel7();
231 fn DMA2D();
232 fn DMA2_Channel1();
233 fn DMA2_Channel2();
234 fn DMA2_Channel3();
235 fn DMA2_Channel4();
236 fn DMA2_Channel5();
237 fn DMA2_Channel6();
238 fn DMA2_Channel7();
239 fn DMAMUX1_OVR();
240 fn EXTI0();
241 fn EXTI1();
242 fn EXTI15_10();
243 fn EXTI2();
244 fn EXTI3();
245 fn EXTI4();
246 fn EXTI9_5();
247 fn FLASH();
248 fn FMC();
249 fn FPU();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn OCTOSPI1();
262 fn OCTOSPI2();
263 fn OTG_FS();
264 fn PVD_PVM();
265 fn RCC();
266 fn RNG();
267 fn RTC_Alarm();
268 fn RTC_WKUP();
269 fn SAI1();
270 fn SAI2();
271 fn SDMMC1();
272 fn SPI1();
273 fn SPI2();
274 fn SPI3();
275 fn TAMP_STAMP();
276 fn TIM1_BRK_TIM15();
277 fn TIM1_CC();
278 fn TIM1_TRG_COM_TIM17();
279 fn TIM1_UP_TIM16();
280 fn TIM2();
281 fn TIM3();
282 fn TIM4();
283 fn TIM5();
284 fn TIM6_DAC();
285 fn TIM7();
286 fn TIM8_BRK();
287 fn TIM8_CC();
288 fn TIM8_TRG_COM();
289 fn TIM8_UP();
290 fn TSC();
291 fn UART4();
292 fn UART5();
293 fn USART1();
294 fn USART2();
295 fn USART3();
296 fn WWDG();
297 }
298 pub union Vector {
299 _handler: unsafe extern "C" fn(),
300 _reserved: u32,
301 }
302 #[link_section = ".vector_table.interrupts"]
303 #[no_mangle]
304 pub static __INTERRUPTS: [Vector; 95] = [
305 Vector { _handler: WWDG },
306 Vector { _handler: PVD_PVM },
307 Vector {
308 _handler: TAMP_STAMP,
309 },
310 Vector { _handler: RTC_WKUP },
311 Vector { _handler: FLASH },
312 Vector { _handler: RCC },
313 Vector { _handler: EXTI0 },
314 Vector { _handler: EXTI1 },
315 Vector { _handler: EXTI2 },
316 Vector { _handler: EXTI3 },
317 Vector { _handler: EXTI4 },
318 Vector {
319 _handler: DMA1_Channel1,
320 },
321 Vector {
322 _handler: DMA1_Channel2,
323 },
324 Vector {
325 _handler: DMA1_Channel3,
326 },
327 Vector {
328 _handler: DMA1_Channel4,
329 },
330 Vector {
331 _handler: DMA1_Channel5,
332 },
333 Vector {
334 _handler: DMA1_Channel6,
335 },
336 Vector {
337 _handler: DMA1_Channel7,
338 },
339 Vector { _handler: ADC1 },
340 Vector { _handler: CAN1_TX },
341 Vector { _handler: CAN1_RX0 },
342 Vector { _handler: CAN1_RX1 },
343 Vector { _handler: CAN1_SCE },
344 Vector { _handler: EXTI9_5 },
345 Vector {
346 _handler: TIM1_BRK_TIM15,
347 },
348 Vector {
349 _handler: TIM1_UP_TIM16,
350 },
351 Vector {
352 _handler: TIM1_TRG_COM_TIM17,
353 },
354 Vector { _handler: TIM1_CC },
355 Vector { _handler: TIM2 },
356 Vector { _handler: TIM3 },
357 Vector { _handler: TIM4 },
358 Vector { _handler: I2C1_EV },
359 Vector { _handler: I2C1_ER },
360 Vector { _handler: I2C2_EV },
361 Vector { _handler: I2C2_ER },
362 Vector { _handler: SPI1 },
363 Vector { _handler: SPI2 },
364 Vector { _handler: USART1 },
365 Vector { _handler: USART2 },
366 Vector { _handler: USART3 },
367 Vector {
368 _handler: EXTI15_10,
369 },
370 Vector {
371 _handler: RTC_Alarm,
372 },
373 Vector {
374 _handler: DFSDM1_FLT3,
375 },
376 Vector { _handler: TIM8_BRK },
377 Vector { _handler: TIM8_UP },
378 Vector {
379 _handler: TIM8_TRG_COM,
380 },
381 Vector { _handler: TIM8_CC },
382 Vector { _reserved: 0 },
383 Vector { _handler: FMC },
384 Vector { _handler: SDMMC1 },
385 Vector { _handler: TIM5 },
386 Vector { _handler: SPI3 },
387 Vector { _handler: UART4 },
388 Vector { _handler: UART5 },
389 Vector { _handler: TIM6_DAC },
390 Vector { _handler: TIM7 },
391 Vector {
392 _handler: DMA2_Channel1,
393 },
394 Vector {
395 _handler: DMA2_Channel2,
396 },
397 Vector {
398 _handler: DMA2_Channel3,
399 },
400 Vector {
401 _handler: DMA2_Channel4,
402 },
403 Vector {
404 _handler: DMA2_Channel5,
405 },
406 Vector {
407 _handler: DFSDM1_FLT0,
408 },
409 Vector {
410 _handler: DFSDM1_FLT1,
411 },
412 Vector {
413 _handler: DFSDM1_FLT2,
414 },
415 Vector { _handler: COMP },
416 Vector { _handler: LPTIM1 },
417 Vector { _handler: LPTIM2 },
418 Vector { _handler: OTG_FS },
419 Vector {
420 _handler: DMA2_Channel6,
421 },
422 Vector {
423 _handler: DMA2_Channel7,
424 },
425 Vector { _handler: LPUART1 },
426 Vector { _handler: OCTOSPI1 },
427 Vector { _handler: I2C3_EV },
428 Vector { _handler: I2C3_ER },
429 Vector { _handler: SAI1 },
430 Vector { _handler: SAI2 },
431 Vector { _handler: OCTOSPI2 },
432 Vector { _handler: TSC },
433 Vector { _reserved: 0 },
434 Vector { _reserved: 0 },
435 Vector { _handler: RNG },
436 Vector { _handler: FPU },
437 Vector { _handler: CRS },
438 Vector { _handler: I2C4_ER },
439 Vector { _handler: I2C4_EV },
440 Vector { _handler: DCMI },
441 Vector { _reserved: 0 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _handler: DMA2D },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _reserved: 0 },
449 Vector {
450 _handler: DMAMUX1_OVR,
451 },
452 ];
453}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 454impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 455impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 456impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r5zg.rs b/embassy-stm32/src/chip/stm32l4r5zg.rs
index d8b9445b9..9c98d1f88 100644
--- a/embassy-stm32/src/chip/stm32l4r5zg.rs
+++ b/embassy-stm32/src/chip/stm32l4r5zg.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -15,8 +15,442 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 I2C1_ER = 32,
70 I2C1_EV = 31,
71 I2C2_ER = 34,
72 I2C2_EV = 33,
73 I2C3_ER = 73,
74 I2C3_EV = 72,
75 I2C4_ER = 83,
76 I2C4_EV = 84,
77 LPTIM1 = 65,
78 LPTIM2 = 66,
79 LPUART1 = 70,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SPI1 = 35,
92 SPI2 = 36,
93 SPI3 = 51,
94 TAMP_STAMP = 2,
95 TIM1_BRK_TIM15 = 24,
96 TIM1_CC = 27,
97 TIM1_TRG_COM_TIM17 = 26,
98 TIM1_UP_TIM16 = 25,
99 TIM2 = 28,
100 TIM3 = 29,
101 TIM4 = 30,
102 TIM5 = 50,
103 TIM6_DAC = 54,
104 TIM7 = 55,
105 TIM8_BRK = 43,
106 TIM8_CC = 46,
107 TIM8_TRG_COM = 45,
108 TIM8_UP = 44,
109 TSC = 77,
110 UART4 = 52,
111 UART5 = 53,
112 USART1 = 37,
113 USART2 = 38,
114 USART3 = 39,
115 WWDG = 0,
116 }
117 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
118 #[inline(always)]
119 fn number(self) -> u16 {
120 self as u16
121 }
122 }
123
124 declare!(ADC1);
125 declare!(CAN1_RX0);
126 declare!(CAN1_RX1);
127 declare!(CAN1_SCE);
128 declare!(CAN1_TX);
129 declare!(COMP);
130 declare!(CRS);
131 declare!(DCMI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DFSDM1_FLT2);
135 declare!(DFSDM1_FLT3);
136 declare!(DMA1_Channel1);
137 declare!(DMA1_Channel2);
138 declare!(DMA1_Channel3);
139 declare!(DMA1_Channel4);
140 declare!(DMA1_Channel5);
141 declare!(DMA1_Channel6);
142 declare!(DMA1_Channel7);
143 declare!(DMA2D);
144 declare!(DMA2_Channel1);
145 declare!(DMA2_Channel2);
146 declare!(DMA2_Channel3);
147 declare!(DMA2_Channel4);
148 declare!(DMA2_Channel5);
149 declare!(DMA2_Channel6);
150 declare!(DMA2_Channel7);
151 declare!(DMAMUX1_OVR);
152 declare!(EXTI0);
153 declare!(EXTI1);
154 declare!(EXTI15_10);
155 declare!(EXTI2);
156 declare!(EXTI3);
157 declare!(EXTI4);
158 declare!(EXTI9_5);
159 declare!(FLASH);
160 declare!(FMC);
161 declare!(FPU);
162 declare!(I2C1_ER);
163 declare!(I2C1_EV);
164 declare!(I2C2_ER);
165 declare!(I2C2_EV);
166 declare!(I2C3_ER);
167 declare!(I2C3_EV);
168 declare!(I2C4_ER);
169 declare!(I2C4_EV);
170 declare!(LPTIM1);
171 declare!(LPTIM2);
172 declare!(LPUART1);
173 declare!(OCTOSPI1);
174 declare!(OCTOSPI2);
175 declare!(OTG_FS);
176 declare!(PVD_PVM);
177 declare!(RCC);
178 declare!(RNG);
179 declare!(RTC_Alarm);
180 declare!(RTC_WKUP);
181 declare!(SAI1);
182 declare!(SAI2);
183 declare!(SDMMC1);
184 declare!(SPI1);
185 declare!(SPI2);
186 declare!(SPI3);
187 declare!(TAMP_STAMP);
188 declare!(TIM1_BRK_TIM15);
189 declare!(TIM1_CC);
190 declare!(TIM1_TRG_COM_TIM17);
191 declare!(TIM1_UP_TIM16);
192 declare!(TIM2);
193 declare!(TIM3);
194 declare!(TIM4);
195 declare!(TIM5);
196 declare!(TIM6_DAC);
197 declare!(TIM7);
198 declare!(TIM8_BRK);
199 declare!(TIM8_CC);
200 declare!(TIM8_TRG_COM);
201 declare!(TIM8_UP);
202 declare!(TSC);
203 declare!(UART4);
204 declare!(UART5);
205 declare!(USART1);
206 declare!(USART2);
207 declare!(USART3);
208 declare!(WWDG);
209}
210mod interrupt_vector {
211 extern "C" {
212 fn ADC1();
213 fn CAN1_RX0();
214 fn CAN1_RX1();
215 fn CAN1_SCE();
216 fn CAN1_TX();
217 fn COMP();
218 fn CRS();
219 fn DCMI();
220 fn DFSDM1_FLT0();
221 fn DFSDM1_FLT1();
222 fn DFSDM1_FLT2();
223 fn DFSDM1_FLT3();
224 fn DMA1_Channel1();
225 fn DMA1_Channel2();
226 fn DMA1_Channel3();
227 fn DMA1_Channel4();
228 fn DMA1_Channel5();
229 fn DMA1_Channel6();
230 fn DMA1_Channel7();
231 fn DMA2D();
232 fn DMA2_Channel1();
233 fn DMA2_Channel2();
234 fn DMA2_Channel3();
235 fn DMA2_Channel4();
236 fn DMA2_Channel5();
237 fn DMA2_Channel6();
238 fn DMA2_Channel7();
239 fn DMAMUX1_OVR();
240 fn EXTI0();
241 fn EXTI1();
242 fn EXTI15_10();
243 fn EXTI2();
244 fn EXTI3();
245 fn EXTI4();
246 fn EXTI9_5();
247 fn FLASH();
248 fn FMC();
249 fn FPU();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn OCTOSPI1();
262 fn OCTOSPI2();
263 fn OTG_FS();
264 fn PVD_PVM();
265 fn RCC();
266 fn RNG();
267 fn RTC_Alarm();
268 fn RTC_WKUP();
269 fn SAI1();
270 fn SAI2();
271 fn SDMMC1();
272 fn SPI1();
273 fn SPI2();
274 fn SPI3();
275 fn TAMP_STAMP();
276 fn TIM1_BRK_TIM15();
277 fn TIM1_CC();
278 fn TIM1_TRG_COM_TIM17();
279 fn TIM1_UP_TIM16();
280 fn TIM2();
281 fn TIM3();
282 fn TIM4();
283 fn TIM5();
284 fn TIM6_DAC();
285 fn TIM7();
286 fn TIM8_BRK();
287 fn TIM8_CC();
288 fn TIM8_TRG_COM();
289 fn TIM8_UP();
290 fn TSC();
291 fn UART4();
292 fn UART5();
293 fn USART1();
294 fn USART2();
295 fn USART3();
296 fn WWDG();
297 }
298 pub union Vector {
299 _handler: unsafe extern "C" fn(),
300 _reserved: u32,
301 }
302 #[link_section = ".vector_table.interrupts"]
303 #[no_mangle]
304 pub static __INTERRUPTS: [Vector; 95] = [
305 Vector { _handler: WWDG },
306 Vector { _handler: PVD_PVM },
307 Vector {
308 _handler: TAMP_STAMP,
309 },
310 Vector { _handler: RTC_WKUP },
311 Vector { _handler: FLASH },
312 Vector { _handler: RCC },
313 Vector { _handler: EXTI0 },
314 Vector { _handler: EXTI1 },
315 Vector { _handler: EXTI2 },
316 Vector { _handler: EXTI3 },
317 Vector { _handler: EXTI4 },
318 Vector {
319 _handler: DMA1_Channel1,
320 },
321 Vector {
322 _handler: DMA1_Channel2,
323 },
324 Vector {
325 _handler: DMA1_Channel3,
326 },
327 Vector {
328 _handler: DMA1_Channel4,
329 },
330 Vector {
331 _handler: DMA1_Channel5,
332 },
333 Vector {
334 _handler: DMA1_Channel6,
335 },
336 Vector {
337 _handler: DMA1_Channel7,
338 },
339 Vector { _handler: ADC1 },
340 Vector { _handler: CAN1_TX },
341 Vector { _handler: CAN1_RX0 },
342 Vector { _handler: CAN1_RX1 },
343 Vector { _handler: CAN1_SCE },
344 Vector { _handler: EXTI9_5 },
345 Vector {
346 _handler: TIM1_BRK_TIM15,
347 },
348 Vector {
349 _handler: TIM1_UP_TIM16,
350 },
351 Vector {
352 _handler: TIM1_TRG_COM_TIM17,
353 },
354 Vector { _handler: TIM1_CC },
355 Vector { _handler: TIM2 },
356 Vector { _handler: TIM3 },
357 Vector { _handler: TIM4 },
358 Vector { _handler: I2C1_EV },
359 Vector { _handler: I2C1_ER },
360 Vector { _handler: I2C2_EV },
361 Vector { _handler: I2C2_ER },
362 Vector { _handler: SPI1 },
363 Vector { _handler: SPI2 },
364 Vector { _handler: USART1 },
365 Vector { _handler: USART2 },
366 Vector { _handler: USART3 },
367 Vector {
368 _handler: EXTI15_10,
369 },
370 Vector {
371 _handler: RTC_Alarm,
372 },
373 Vector {
374 _handler: DFSDM1_FLT3,
375 },
376 Vector { _handler: TIM8_BRK },
377 Vector { _handler: TIM8_UP },
378 Vector {
379 _handler: TIM8_TRG_COM,
380 },
381 Vector { _handler: TIM8_CC },
382 Vector { _reserved: 0 },
383 Vector { _handler: FMC },
384 Vector { _handler: SDMMC1 },
385 Vector { _handler: TIM5 },
386 Vector { _handler: SPI3 },
387 Vector { _handler: UART4 },
388 Vector { _handler: UART5 },
389 Vector { _handler: TIM6_DAC },
390 Vector { _handler: TIM7 },
391 Vector {
392 _handler: DMA2_Channel1,
393 },
394 Vector {
395 _handler: DMA2_Channel2,
396 },
397 Vector {
398 _handler: DMA2_Channel3,
399 },
400 Vector {
401 _handler: DMA2_Channel4,
402 },
403 Vector {
404 _handler: DMA2_Channel5,
405 },
406 Vector {
407 _handler: DFSDM1_FLT0,
408 },
409 Vector {
410 _handler: DFSDM1_FLT1,
411 },
412 Vector {
413 _handler: DFSDM1_FLT2,
414 },
415 Vector { _handler: COMP },
416 Vector { _handler: LPTIM1 },
417 Vector { _handler: LPTIM2 },
418 Vector { _handler: OTG_FS },
419 Vector {
420 _handler: DMA2_Channel6,
421 },
422 Vector {
423 _handler: DMA2_Channel7,
424 },
425 Vector { _handler: LPUART1 },
426 Vector { _handler: OCTOSPI1 },
427 Vector { _handler: I2C3_EV },
428 Vector { _handler: I2C3_ER },
429 Vector { _handler: SAI1 },
430 Vector { _handler: SAI2 },
431 Vector { _handler: OCTOSPI2 },
432 Vector { _handler: TSC },
433 Vector { _reserved: 0 },
434 Vector { _reserved: 0 },
435 Vector { _handler: RNG },
436 Vector { _handler: FPU },
437 Vector { _handler: CRS },
438 Vector { _handler: I2C4_ER },
439 Vector { _handler: I2C4_EV },
440 Vector { _handler: DCMI },
441 Vector { _reserved: 0 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _handler: DMA2D },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _reserved: 0 },
449 Vector {
450 _handler: DMAMUX1_OVR,
451 },
452 ];
453}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 454impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 455impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 456impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r5zi.rs b/embassy-stm32/src/chip/stm32l4r5zi.rs
index d8b9445b9..9c98d1f88 100644
--- a/embassy-stm32/src/chip/stm32l4r5zi.rs
+++ b/embassy-stm32/src/chip/stm32l4r5zi.rs
@@ -1,10 +1,10 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, PA4, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3,
5 PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, 5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5,
6 PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, 6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7,
7 PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12,
@@ -15,8 +15,442 @@ peripherals!(
15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, 15 TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2,
16 USART3, USB_OTG_FS, WWDG 16 USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 I2C1_ER = 32,
70 I2C1_EV = 31,
71 I2C2_ER = 34,
72 I2C2_EV = 33,
73 I2C3_ER = 73,
74 I2C3_EV = 72,
75 I2C4_ER = 83,
76 I2C4_EV = 84,
77 LPTIM1 = 65,
78 LPTIM2 = 66,
79 LPUART1 = 70,
80 OCTOSPI1 = 71,
81 OCTOSPI2 = 76,
82 OTG_FS = 67,
83 PVD_PVM = 1,
84 RCC = 5,
85 RNG = 80,
86 RTC_Alarm = 41,
87 RTC_WKUP = 3,
88 SAI1 = 74,
89 SAI2 = 75,
90 SDMMC1 = 49,
91 SPI1 = 35,
92 SPI2 = 36,
93 SPI3 = 51,
94 TAMP_STAMP = 2,
95 TIM1_BRK_TIM15 = 24,
96 TIM1_CC = 27,
97 TIM1_TRG_COM_TIM17 = 26,
98 TIM1_UP_TIM16 = 25,
99 TIM2 = 28,
100 TIM3 = 29,
101 TIM4 = 30,
102 TIM5 = 50,
103 TIM6_DAC = 54,
104 TIM7 = 55,
105 TIM8_BRK = 43,
106 TIM8_CC = 46,
107 TIM8_TRG_COM = 45,
108 TIM8_UP = 44,
109 TSC = 77,
110 UART4 = 52,
111 UART5 = 53,
112 USART1 = 37,
113 USART2 = 38,
114 USART3 = 39,
115 WWDG = 0,
116 }
117 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
118 #[inline(always)]
119 fn number(self) -> u16 {
120 self as u16
121 }
122 }
123
124 declare!(ADC1);
125 declare!(CAN1_RX0);
126 declare!(CAN1_RX1);
127 declare!(CAN1_SCE);
128 declare!(CAN1_TX);
129 declare!(COMP);
130 declare!(CRS);
131 declare!(DCMI);
132 declare!(DFSDM1_FLT0);
133 declare!(DFSDM1_FLT1);
134 declare!(DFSDM1_FLT2);
135 declare!(DFSDM1_FLT3);
136 declare!(DMA1_Channel1);
137 declare!(DMA1_Channel2);
138 declare!(DMA1_Channel3);
139 declare!(DMA1_Channel4);
140 declare!(DMA1_Channel5);
141 declare!(DMA1_Channel6);
142 declare!(DMA1_Channel7);
143 declare!(DMA2D);
144 declare!(DMA2_Channel1);
145 declare!(DMA2_Channel2);
146 declare!(DMA2_Channel3);
147 declare!(DMA2_Channel4);
148 declare!(DMA2_Channel5);
149 declare!(DMA2_Channel6);
150 declare!(DMA2_Channel7);
151 declare!(DMAMUX1_OVR);
152 declare!(EXTI0);
153 declare!(EXTI1);
154 declare!(EXTI15_10);
155 declare!(EXTI2);
156 declare!(EXTI3);
157 declare!(EXTI4);
158 declare!(EXTI9_5);
159 declare!(FLASH);
160 declare!(FMC);
161 declare!(FPU);
162 declare!(I2C1_ER);
163 declare!(I2C1_EV);
164 declare!(I2C2_ER);
165 declare!(I2C2_EV);
166 declare!(I2C3_ER);
167 declare!(I2C3_EV);
168 declare!(I2C4_ER);
169 declare!(I2C4_EV);
170 declare!(LPTIM1);
171 declare!(LPTIM2);
172 declare!(LPUART1);
173 declare!(OCTOSPI1);
174 declare!(OCTOSPI2);
175 declare!(OTG_FS);
176 declare!(PVD_PVM);
177 declare!(RCC);
178 declare!(RNG);
179 declare!(RTC_Alarm);
180 declare!(RTC_WKUP);
181 declare!(SAI1);
182 declare!(SAI2);
183 declare!(SDMMC1);
184 declare!(SPI1);
185 declare!(SPI2);
186 declare!(SPI3);
187 declare!(TAMP_STAMP);
188 declare!(TIM1_BRK_TIM15);
189 declare!(TIM1_CC);
190 declare!(TIM1_TRG_COM_TIM17);
191 declare!(TIM1_UP_TIM16);
192 declare!(TIM2);
193 declare!(TIM3);
194 declare!(TIM4);
195 declare!(TIM5);
196 declare!(TIM6_DAC);
197 declare!(TIM7);
198 declare!(TIM8_BRK);
199 declare!(TIM8_CC);
200 declare!(TIM8_TRG_COM);
201 declare!(TIM8_UP);
202 declare!(TSC);
203 declare!(UART4);
204 declare!(UART5);
205 declare!(USART1);
206 declare!(USART2);
207 declare!(USART3);
208 declare!(WWDG);
209}
210mod interrupt_vector {
211 extern "C" {
212 fn ADC1();
213 fn CAN1_RX0();
214 fn CAN1_RX1();
215 fn CAN1_SCE();
216 fn CAN1_TX();
217 fn COMP();
218 fn CRS();
219 fn DCMI();
220 fn DFSDM1_FLT0();
221 fn DFSDM1_FLT1();
222 fn DFSDM1_FLT2();
223 fn DFSDM1_FLT3();
224 fn DMA1_Channel1();
225 fn DMA1_Channel2();
226 fn DMA1_Channel3();
227 fn DMA1_Channel4();
228 fn DMA1_Channel5();
229 fn DMA1_Channel6();
230 fn DMA1_Channel7();
231 fn DMA2D();
232 fn DMA2_Channel1();
233 fn DMA2_Channel2();
234 fn DMA2_Channel3();
235 fn DMA2_Channel4();
236 fn DMA2_Channel5();
237 fn DMA2_Channel6();
238 fn DMA2_Channel7();
239 fn DMAMUX1_OVR();
240 fn EXTI0();
241 fn EXTI1();
242 fn EXTI15_10();
243 fn EXTI2();
244 fn EXTI3();
245 fn EXTI4();
246 fn EXTI9_5();
247 fn FLASH();
248 fn FMC();
249 fn FPU();
250 fn I2C1_ER();
251 fn I2C1_EV();
252 fn I2C2_ER();
253 fn I2C2_EV();
254 fn I2C3_ER();
255 fn I2C3_EV();
256 fn I2C4_ER();
257 fn I2C4_EV();
258 fn LPTIM1();
259 fn LPTIM2();
260 fn LPUART1();
261 fn OCTOSPI1();
262 fn OCTOSPI2();
263 fn OTG_FS();
264 fn PVD_PVM();
265 fn RCC();
266 fn RNG();
267 fn RTC_Alarm();
268 fn RTC_WKUP();
269 fn SAI1();
270 fn SAI2();
271 fn SDMMC1();
272 fn SPI1();
273 fn SPI2();
274 fn SPI3();
275 fn TAMP_STAMP();
276 fn TIM1_BRK_TIM15();
277 fn TIM1_CC();
278 fn TIM1_TRG_COM_TIM17();
279 fn TIM1_UP_TIM16();
280 fn TIM2();
281 fn TIM3();
282 fn TIM4();
283 fn TIM5();
284 fn TIM6_DAC();
285 fn TIM7();
286 fn TIM8_BRK();
287 fn TIM8_CC();
288 fn TIM8_TRG_COM();
289 fn TIM8_UP();
290 fn TSC();
291 fn UART4();
292 fn UART5();
293 fn USART1();
294 fn USART2();
295 fn USART3();
296 fn WWDG();
297 }
298 pub union Vector {
299 _handler: unsafe extern "C" fn(),
300 _reserved: u32,
301 }
302 #[link_section = ".vector_table.interrupts"]
303 #[no_mangle]
304 pub static __INTERRUPTS: [Vector; 95] = [
305 Vector { _handler: WWDG },
306 Vector { _handler: PVD_PVM },
307 Vector {
308 _handler: TAMP_STAMP,
309 },
310 Vector { _handler: RTC_WKUP },
311 Vector { _handler: FLASH },
312 Vector { _handler: RCC },
313 Vector { _handler: EXTI0 },
314 Vector { _handler: EXTI1 },
315 Vector { _handler: EXTI2 },
316 Vector { _handler: EXTI3 },
317 Vector { _handler: EXTI4 },
318 Vector {
319 _handler: DMA1_Channel1,
320 },
321 Vector {
322 _handler: DMA1_Channel2,
323 },
324 Vector {
325 _handler: DMA1_Channel3,
326 },
327 Vector {
328 _handler: DMA1_Channel4,
329 },
330 Vector {
331 _handler: DMA1_Channel5,
332 },
333 Vector {
334 _handler: DMA1_Channel6,
335 },
336 Vector {
337 _handler: DMA1_Channel7,
338 },
339 Vector { _handler: ADC1 },
340 Vector { _handler: CAN1_TX },
341 Vector { _handler: CAN1_RX0 },
342 Vector { _handler: CAN1_RX1 },
343 Vector { _handler: CAN1_SCE },
344 Vector { _handler: EXTI9_5 },
345 Vector {
346 _handler: TIM1_BRK_TIM15,
347 },
348 Vector {
349 _handler: TIM1_UP_TIM16,
350 },
351 Vector {
352 _handler: TIM1_TRG_COM_TIM17,
353 },
354 Vector { _handler: TIM1_CC },
355 Vector { _handler: TIM2 },
356 Vector { _handler: TIM3 },
357 Vector { _handler: TIM4 },
358 Vector { _handler: I2C1_EV },
359 Vector { _handler: I2C1_ER },
360 Vector { _handler: I2C2_EV },
361 Vector { _handler: I2C2_ER },
362 Vector { _handler: SPI1 },
363 Vector { _handler: SPI2 },
364 Vector { _handler: USART1 },
365 Vector { _handler: USART2 },
366 Vector { _handler: USART3 },
367 Vector {
368 _handler: EXTI15_10,
369 },
370 Vector {
371 _handler: RTC_Alarm,
372 },
373 Vector {
374 _handler: DFSDM1_FLT3,
375 },
376 Vector { _handler: TIM8_BRK },
377 Vector { _handler: TIM8_UP },
378 Vector {
379 _handler: TIM8_TRG_COM,
380 },
381 Vector { _handler: TIM8_CC },
382 Vector { _reserved: 0 },
383 Vector { _handler: FMC },
384 Vector { _handler: SDMMC1 },
385 Vector { _handler: TIM5 },
386 Vector { _handler: SPI3 },
387 Vector { _handler: UART4 },
388 Vector { _handler: UART5 },
389 Vector { _handler: TIM6_DAC },
390 Vector { _handler: TIM7 },
391 Vector {
392 _handler: DMA2_Channel1,
393 },
394 Vector {
395 _handler: DMA2_Channel2,
396 },
397 Vector {
398 _handler: DMA2_Channel3,
399 },
400 Vector {
401 _handler: DMA2_Channel4,
402 },
403 Vector {
404 _handler: DMA2_Channel5,
405 },
406 Vector {
407 _handler: DFSDM1_FLT0,
408 },
409 Vector {
410 _handler: DFSDM1_FLT1,
411 },
412 Vector {
413 _handler: DFSDM1_FLT2,
414 },
415 Vector { _handler: COMP },
416 Vector { _handler: LPTIM1 },
417 Vector { _handler: LPTIM2 },
418 Vector { _handler: OTG_FS },
419 Vector {
420 _handler: DMA2_Channel6,
421 },
422 Vector {
423 _handler: DMA2_Channel7,
424 },
425 Vector { _handler: LPUART1 },
426 Vector { _handler: OCTOSPI1 },
427 Vector { _handler: I2C3_EV },
428 Vector { _handler: I2C3_ER },
429 Vector { _handler: SAI1 },
430 Vector { _handler: SAI2 },
431 Vector { _handler: OCTOSPI2 },
432 Vector { _handler: TSC },
433 Vector { _reserved: 0 },
434 Vector { _reserved: 0 },
435 Vector { _handler: RNG },
436 Vector { _handler: FPU },
437 Vector { _handler: CRS },
438 Vector { _handler: I2C4_ER },
439 Vector { _handler: I2C4_EV },
440 Vector { _handler: DCMI },
441 Vector { _reserved: 0 },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _reserved: 0 },
445 Vector { _handler: DMA2D },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _reserved: 0 },
449 Vector {
450 _handler: DMAMUX1_OVR,
451 },
452 ];
453}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 454impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 455impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 456impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r7ai.rs b/embassy-stm32/src/chip/stm32l4r7ai.rs
index d0f3be660..d3d635c43 100644
--- a/embassy-stm32/src/chip/stm32l4r7ai.rs
+++ b/embassy-stm32/src/chip/stm32l4r7ai.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 GFXMMU = 93,
70 I2C1_ER = 32,
71 I2C1_EV = 31,
72 I2C2_ER = 34,
73 I2C2_EV = 33,
74 I2C3_ER = 73,
75 I2C3_EV = 72,
76 I2C4_ER = 83,
77 I2C4_EV = 84,
78 LPTIM1 = 65,
79 LPTIM2 = 66,
80 LPUART1 = 70,
81 LTDC = 91,
82 LTDC_ER = 92,
83 OCTOSPI1 = 71,
84 OCTOSPI2 = 76,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 RCC = 5,
88 RNG = 80,
89 RTC_Alarm = 41,
90 RTC_WKUP = 3,
91 SAI1 = 74,
92 SAI2 = 75,
93 SDMMC1 = 49,
94 SPI1 = 35,
95 SPI2 = 36,
96 SPI3 = 51,
97 TAMP_STAMP = 2,
98 TIM1_BRK_TIM15 = 24,
99 TIM1_CC = 27,
100 TIM1_TRG_COM_TIM17 = 26,
101 TIM1_UP_TIM16 = 25,
102 TIM2 = 28,
103 TIM3 = 29,
104 TIM4 = 30,
105 TIM5 = 50,
106 TIM6_DAC = 54,
107 TIM7 = 55,
108 TIM8_BRK = 43,
109 TIM8_CC = 46,
110 TIM8_TRG_COM = 45,
111 TIM8_UP = 44,
112 TSC = 77,
113 UART4 = 52,
114 UART5 = 53,
115 USART1 = 37,
116 USART2 = 38,
117 USART3 = 39,
118 WWDG = 0,
119 }
120 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
121 #[inline(always)]
122 fn number(self) -> u16 {
123 self as u16
124 }
125 }
126
127 declare!(ADC1);
128 declare!(CAN1_RX0);
129 declare!(CAN1_RX1);
130 declare!(CAN1_SCE);
131 declare!(CAN1_TX);
132 declare!(COMP);
133 declare!(CRS);
134 declare!(DCMI);
135 declare!(DFSDM1_FLT0);
136 declare!(DFSDM1_FLT1);
137 declare!(DFSDM1_FLT2);
138 declare!(DFSDM1_FLT3);
139 declare!(DMA1_Channel1);
140 declare!(DMA1_Channel2);
141 declare!(DMA1_Channel3);
142 declare!(DMA1_Channel4);
143 declare!(DMA1_Channel5);
144 declare!(DMA1_Channel6);
145 declare!(DMA1_Channel7);
146 declare!(DMA2D);
147 declare!(DMA2_Channel1);
148 declare!(DMA2_Channel2);
149 declare!(DMA2_Channel3);
150 declare!(DMA2_Channel4);
151 declare!(DMA2_Channel5);
152 declare!(DMA2_Channel6);
153 declare!(DMA2_Channel7);
154 declare!(DMAMUX1_OVR);
155 declare!(EXTI0);
156 declare!(EXTI1);
157 declare!(EXTI15_10);
158 declare!(EXTI2);
159 declare!(EXTI3);
160 declare!(EXTI4);
161 declare!(EXTI9_5);
162 declare!(FLASH);
163 declare!(FMC);
164 declare!(FPU);
165 declare!(GFXMMU);
166 declare!(I2C1_ER);
167 declare!(I2C1_EV);
168 declare!(I2C2_ER);
169 declare!(I2C2_EV);
170 declare!(I2C3_ER);
171 declare!(I2C3_EV);
172 declare!(I2C4_ER);
173 declare!(I2C4_EV);
174 declare!(LPTIM1);
175 declare!(LPTIM2);
176 declare!(LPUART1);
177 declare!(LTDC);
178 declare!(LTDC_ER);
179 declare!(OCTOSPI1);
180 declare!(OCTOSPI2);
181 declare!(OTG_FS);
182 declare!(PVD_PVM);
183 declare!(RCC);
184 declare!(RNG);
185 declare!(RTC_Alarm);
186 declare!(RTC_WKUP);
187 declare!(SAI1);
188 declare!(SAI2);
189 declare!(SDMMC1);
190 declare!(SPI1);
191 declare!(SPI2);
192 declare!(SPI3);
193 declare!(TAMP_STAMP);
194 declare!(TIM1_BRK_TIM15);
195 declare!(TIM1_CC);
196 declare!(TIM1_TRG_COM_TIM17);
197 declare!(TIM1_UP_TIM16);
198 declare!(TIM2);
199 declare!(TIM3);
200 declare!(TIM4);
201 declare!(TIM5);
202 declare!(TIM6_DAC);
203 declare!(TIM7);
204 declare!(TIM8_BRK);
205 declare!(TIM8_CC);
206 declare!(TIM8_TRG_COM);
207 declare!(TIM8_UP);
208 declare!(TSC);
209 declare!(UART4);
210 declare!(UART5);
211 declare!(USART1);
212 declare!(USART2);
213 declare!(USART3);
214 declare!(WWDG);
215}
216mod interrupt_vector {
217 extern "C" {
218 fn ADC1();
219 fn CAN1_RX0();
220 fn CAN1_RX1();
221 fn CAN1_SCE();
222 fn CAN1_TX();
223 fn COMP();
224 fn CRS();
225 fn DCMI();
226 fn DFSDM1_FLT0();
227 fn DFSDM1_FLT1();
228 fn DFSDM1_FLT2();
229 fn DFSDM1_FLT3();
230 fn DMA1_Channel1();
231 fn DMA1_Channel2();
232 fn DMA1_Channel3();
233 fn DMA1_Channel4();
234 fn DMA1_Channel5();
235 fn DMA1_Channel6();
236 fn DMA1_Channel7();
237 fn DMA2D();
238 fn DMA2_Channel1();
239 fn DMA2_Channel2();
240 fn DMA2_Channel3();
241 fn DMA2_Channel4();
242 fn DMA2_Channel5();
243 fn DMA2_Channel6();
244 fn DMA2_Channel7();
245 fn DMAMUX1_OVR();
246 fn EXTI0();
247 fn EXTI1();
248 fn EXTI15_10();
249 fn EXTI2();
250 fn EXTI3();
251 fn EXTI4();
252 fn EXTI9_5();
253 fn FLASH();
254 fn FMC();
255 fn FPU();
256 fn GFXMMU();
257 fn I2C1_ER();
258 fn I2C1_EV();
259 fn I2C2_ER();
260 fn I2C2_EV();
261 fn I2C3_ER();
262 fn I2C3_EV();
263 fn I2C4_ER();
264 fn I2C4_EV();
265 fn LPTIM1();
266 fn LPTIM2();
267 fn LPUART1();
268 fn LTDC();
269 fn LTDC_ER();
270 fn OCTOSPI1();
271 fn OCTOSPI2();
272 fn OTG_FS();
273 fn PVD_PVM();
274 fn RCC();
275 fn RNG();
276 fn RTC_Alarm();
277 fn RTC_WKUP();
278 fn SAI1();
279 fn SAI2();
280 fn SDMMC1();
281 fn SPI1();
282 fn SPI2();
283 fn SPI3();
284 fn TAMP_STAMP();
285 fn TIM1_BRK_TIM15();
286 fn TIM1_CC();
287 fn TIM1_TRG_COM_TIM17();
288 fn TIM1_UP_TIM16();
289 fn TIM2();
290 fn TIM3();
291 fn TIM4();
292 fn TIM5();
293 fn TIM6_DAC();
294 fn TIM7();
295 fn TIM8_BRK();
296 fn TIM8_CC();
297 fn TIM8_TRG_COM();
298 fn TIM8_UP();
299 fn TSC();
300 fn UART4();
301 fn UART5();
302 fn USART1();
303 fn USART2();
304 fn USART3();
305 fn WWDG();
306 }
307 pub union Vector {
308 _handler: unsafe extern "C" fn(),
309 _reserved: u32,
310 }
311 #[link_section = ".vector_table.interrupts"]
312 #[no_mangle]
313 pub static __INTERRUPTS: [Vector; 95] = [
314 Vector { _handler: WWDG },
315 Vector { _handler: PVD_PVM },
316 Vector {
317 _handler: TAMP_STAMP,
318 },
319 Vector { _handler: RTC_WKUP },
320 Vector { _handler: FLASH },
321 Vector { _handler: RCC },
322 Vector { _handler: EXTI0 },
323 Vector { _handler: EXTI1 },
324 Vector { _handler: EXTI2 },
325 Vector { _handler: EXTI3 },
326 Vector { _handler: EXTI4 },
327 Vector {
328 _handler: DMA1_Channel1,
329 },
330 Vector {
331 _handler: DMA1_Channel2,
332 },
333 Vector {
334 _handler: DMA1_Channel3,
335 },
336 Vector {
337 _handler: DMA1_Channel4,
338 },
339 Vector {
340 _handler: DMA1_Channel5,
341 },
342 Vector {
343 _handler: DMA1_Channel6,
344 },
345 Vector {
346 _handler: DMA1_Channel7,
347 },
348 Vector { _handler: ADC1 },
349 Vector { _handler: CAN1_TX },
350 Vector { _handler: CAN1_RX0 },
351 Vector { _handler: CAN1_RX1 },
352 Vector { _handler: CAN1_SCE },
353 Vector { _handler: EXTI9_5 },
354 Vector {
355 _handler: TIM1_BRK_TIM15,
356 },
357 Vector {
358 _handler: TIM1_UP_TIM16,
359 },
360 Vector {
361 _handler: TIM1_TRG_COM_TIM17,
362 },
363 Vector { _handler: TIM1_CC },
364 Vector { _handler: TIM2 },
365 Vector { _handler: TIM3 },
366 Vector { _handler: TIM4 },
367 Vector { _handler: I2C1_EV },
368 Vector { _handler: I2C1_ER },
369 Vector { _handler: I2C2_EV },
370 Vector { _handler: I2C2_ER },
371 Vector { _handler: SPI1 },
372 Vector { _handler: SPI2 },
373 Vector { _handler: USART1 },
374 Vector { _handler: USART2 },
375 Vector { _handler: USART3 },
376 Vector {
377 _handler: EXTI15_10,
378 },
379 Vector {
380 _handler: RTC_Alarm,
381 },
382 Vector {
383 _handler: DFSDM1_FLT3,
384 },
385 Vector { _handler: TIM8_BRK },
386 Vector { _handler: TIM8_UP },
387 Vector {
388 _handler: TIM8_TRG_COM,
389 },
390 Vector { _handler: TIM8_CC },
391 Vector { _reserved: 0 },
392 Vector { _handler: FMC },
393 Vector { _handler: SDMMC1 },
394 Vector { _handler: TIM5 },
395 Vector { _handler: SPI3 },
396 Vector { _handler: UART4 },
397 Vector { _handler: UART5 },
398 Vector { _handler: TIM6_DAC },
399 Vector { _handler: TIM7 },
400 Vector {
401 _handler: DMA2_Channel1,
402 },
403 Vector {
404 _handler: DMA2_Channel2,
405 },
406 Vector {
407 _handler: DMA2_Channel3,
408 },
409 Vector {
410 _handler: DMA2_Channel4,
411 },
412 Vector {
413 _handler: DMA2_Channel5,
414 },
415 Vector {
416 _handler: DFSDM1_FLT0,
417 },
418 Vector {
419 _handler: DFSDM1_FLT1,
420 },
421 Vector {
422 _handler: DFSDM1_FLT2,
423 },
424 Vector { _handler: COMP },
425 Vector { _handler: LPTIM1 },
426 Vector { _handler: LPTIM2 },
427 Vector { _handler: OTG_FS },
428 Vector {
429 _handler: DMA2_Channel6,
430 },
431 Vector {
432 _handler: DMA2_Channel7,
433 },
434 Vector { _handler: LPUART1 },
435 Vector { _handler: OCTOSPI1 },
436 Vector { _handler: I2C3_EV },
437 Vector { _handler: I2C3_ER },
438 Vector { _handler: SAI1 },
439 Vector { _handler: SAI2 },
440 Vector { _handler: OCTOSPI2 },
441 Vector { _handler: TSC },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _handler: RNG },
445 Vector { _handler: FPU },
446 Vector { _handler: CRS },
447 Vector { _handler: I2C4_ER },
448 Vector { _handler: I2C4_EV },
449 Vector { _handler: DCMI },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector { _reserved: 0 },
453 Vector { _reserved: 0 },
454 Vector { _handler: DMA2D },
455 Vector { _handler: LTDC },
456 Vector { _handler: LTDC_ER },
457 Vector { _handler: GFXMMU },
458 Vector {
459 _handler: DMAMUX1_OVR,
460 },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r7vi.rs b/embassy-stm32/src/chip/stm32l4r7vi.rs
index d0f3be660..d3d635c43 100644
--- a/embassy-stm32/src/chip/stm32l4r7vi.rs
+++ b/embassy-stm32/src/chip/stm32l4r7vi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 GFXMMU = 93,
70 I2C1_ER = 32,
71 I2C1_EV = 31,
72 I2C2_ER = 34,
73 I2C2_EV = 33,
74 I2C3_ER = 73,
75 I2C3_EV = 72,
76 I2C4_ER = 83,
77 I2C4_EV = 84,
78 LPTIM1 = 65,
79 LPTIM2 = 66,
80 LPUART1 = 70,
81 LTDC = 91,
82 LTDC_ER = 92,
83 OCTOSPI1 = 71,
84 OCTOSPI2 = 76,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 RCC = 5,
88 RNG = 80,
89 RTC_Alarm = 41,
90 RTC_WKUP = 3,
91 SAI1 = 74,
92 SAI2 = 75,
93 SDMMC1 = 49,
94 SPI1 = 35,
95 SPI2 = 36,
96 SPI3 = 51,
97 TAMP_STAMP = 2,
98 TIM1_BRK_TIM15 = 24,
99 TIM1_CC = 27,
100 TIM1_TRG_COM_TIM17 = 26,
101 TIM1_UP_TIM16 = 25,
102 TIM2 = 28,
103 TIM3 = 29,
104 TIM4 = 30,
105 TIM5 = 50,
106 TIM6_DAC = 54,
107 TIM7 = 55,
108 TIM8_BRK = 43,
109 TIM8_CC = 46,
110 TIM8_TRG_COM = 45,
111 TIM8_UP = 44,
112 TSC = 77,
113 UART4 = 52,
114 UART5 = 53,
115 USART1 = 37,
116 USART2 = 38,
117 USART3 = 39,
118 WWDG = 0,
119 }
120 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
121 #[inline(always)]
122 fn number(self) -> u16 {
123 self as u16
124 }
125 }
126
127 declare!(ADC1);
128 declare!(CAN1_RX0);
129 declare!(CAN1_RX1);
130 declare!(CAN1_SCE);
131 declare!(CAN1_TX);
132 declare!(COMP);
133 declare!(CRS);
134 declare!(DCMI);
135 declare!(DFSDM1_FLT0);
136 declare!(DFSDM1_FLT1);
137 declare!(DFSDM1_FLT2);
138 declare!(DFSDM1_FLT3);
139 declare!(DMA1_Channel1);
140 declare!(DMA1_Channel2);
141 declare!(DMA1_Channel3);
142 declare!(DMA1_Channel4);
143 declare!(DMA1_Channel5);
144 declare!(DMA1_Channel6);
145 declare!(DMA1_Channel7);
146 declare!(DMA2D);
147 declare!(DMA2_Channel1);
148 declare!(DMA2_Channel2);
149 declare!(DMA2_Channel3);
150 declare!(DMA2_Channel4);
151 declare!(DMA2_Channel5);
152 declare!(DMA2_Channel6);
153 declare!(DMA2_Channel7);
154 declare!(DMAMUX1_OVR);
155 declare!(EXTI0);
156 declare!(EXTI1);
157 declare!(EXTI15_10);
158 declare!(EXTI2);
159 declare!(EXTI3);
160 declare!(EXTI4);
161 declare!(EXTI9_5);
162 declare!(FLASH);
163 declare!(FMC);
164 declare!(FPU);
165 declare!(GFXMMU);
166 declare!(I2C1_ER);
167 declare!(I2C1_EV);
168 declare!(I2C2_ER);
169 declare!(I2C2_EV);
170 declare!(I2C3_ER);
171 declare!(I2C3_EV);
172 declare!(I2C4_ER);
173 declare!(I2C4_EV);
174 declare!(LPTIM1);
175 declare!(LPTIM2);
176 declare!(LPUART1);
177 declare!(LTDC);
178 declare!(LTDC_ER);
179 declare!(OCTOSPI1);
180 declare!(OCTOSPI2);
181 declare!(OTG_FS);
182 declare!(PVD_PVM);
183 declare!(RCC);
184 declare!(RNG);
185 declare!(RTC_Alarm);
186 declare!(RTC_WKUP);
187 declare!(SAI1);
188 declare!(SAI2);
189 declare!(SDMMC1);
190 declare!(SPI1);
191 declare!(SPI2);
192 declare!(SPI3);
193 declare!(TAMP_STAMP);
194 declare!(TIM1_BRK_TIM15);
195 declare!(TIM1_CC);
196 declare!(TIM1_TRG_COM_TIM17);
197 declare!(TIM1_UP_TIM16);
198 declare!(TIM2);
199 declare!(TIM3);
200 declare!(TIM4);
201 declare!(TIM5);
202 declare!(TIM6_DAC);
203 declare!(TIM7);
204 declare!(TIM8_BRK);
205 declare!(TIM8_CC);
206 declare!(TIM8_TRG_COM);
207 declare!(TIM8_UP);
208 declare!(TSC);
209 declare!(UART4);
210 declare!(UART5);
211 declare!(USART1);
212 declare!(USART2);
213 declare!(USART3);
214 declare!(WWDG);
215}
216mod interrupt_vector {
217 extern "C" {
218 fn ADC1();
219 fn CAN1_RX0();
220 fn CAN1_RX1();
221 fn CAN1_SCE();
222 fn CAN1_TX();
223 fn COMP();
224 fn CRS();
225 fn DCMI();
226 fn DFSDM1_FLT0();
227 fn DFSDM1_FLT1();
228 fn DFSDM1_FLT2();
229 fn DFSDM1_FLT3();
230 fn DMA1_Channel1();
231 fn DMA1_Channel2();
232 fn DMA1_Channel3();
233 fn DMA1_Channel4();
234 fn DMA1_Channel5();
235 fn DMA1_Channel6();
236 fn DMA1_Channel7();
237 fn DMA2D();
238 fn DMA2_Channel1();
239 fn DMA2_Channel2();
240 fn DMA2_Channel3();
241 fn DMA2_Channel4();
242 fn DMA2_Channel5();
243 fn DMA2_Channel6();
244 fn DMA2_Channel7();
245 fn DMAMUX1_OVR();
246 fn EXTI0();
247 fn EXTI1();
248 fn EXTI15_10();
249 fn EXTI2();
250 fn EXTI3();
251 fn EXTI4();
252 fn EXTI9_5();
253 fn FLASH();
254 fn FMC();
255 fn FPU();
256 fn GFXMMU();
257 fn I2C1_ER();
258 fn I2C1_EV();
259 fn I2C2_ER();
260 fn I2C2_EV();
261 fn I2C3_ER();
262 fn I2C3_EV();
263 fn I2C4_ER();
264 fn I2C4_EV();
265 fn LPTIM1();
266 fn LPTIM2();
267 fn LPUART1();
268 fn LTDC();
269 fn LTDC_ER();
270 fn OCTOSPI1();
271 fn OCTOSPI2();
272 fn OTG_FS();
273 fn PVD_PVM();
274 fn RCC();
275 fn RNG();
276 fn RTC_Alarm();
277 fn RTC_WKUP();
278 fn SAI1();
279 fn SAI2();
280 fn SDMMC1();
281 fn SPI1();
282 fn SPI2();
283 fn SPI3();
284 fn TAMP_STAMP();
285 fn TIM1_BRK_TIM15();
286 fn TIM1_CC();
287 fn TIM1_TRG_COM_TIM17();
288 fn TIM1_UP_TIM16();
289 fn TIM2();
290 fn TIM3();
291 fn TIM4();
292 fn TIM5();
293 fn TIM6_DAC();
294 fn TIM7();
295 fn TIM8_BRK();
296 fn TIM8_CC();
297 fn TIM8_TRG_COM();
298 fn TIM8_UP();
299 fn TSC();
300 fn UART4();
301 fn UART5();
302 fn USART1();
303 fn USART2();
304 fn USART3();
305 fn WWDG();
306 }
307 pub union Vector {
308 _handler: unsafe extern "C" fn(),
309 _reserved: u32,
310 }
311 #[link_section = ".vector_table.interrupts"]
312 #[no_mangle]
313 pub static __INTERRUPTS: [Vector; 95] = [
314 Vector { _handler: WWDG },
315 Vector { _handler: PVD_PVM },
316 Vector {
317 _handler: TAMP_STAMP,
318 },
319 Vector { _handler: RTC_WKUP },
320 Vector { _handler: FLASH },
321 Vector { _handler: RCC },
322 Vector { _handler: EXTI0 },
323 Vector { _handler: EXTI1 },
324 Vector { _handler: EXTI2 },
325 Vector { _handler: EXTI3 },
326 Vector { _handler: EXTI4 },
327 Vector {
328 _handler: DMA1_Channel1,
329 },
330 Vector {
331 _handler: DMA1_Channel2,
332 },
333 Vector {
334 _handler: DMA1_Channel3,
335 },
336 Vector {
337 _handler: DMA1_Channel4,
338 },
339 Vector {
340 _handler: DMA1_Channel5,
341 },
342 Vector {
343 _handler: DMA1_Channel6,
344 },
345 Vector {
346 _handler: DMA1_Channel7,
347 },
348 Vector { _handler: ADC1 },
349 Vector { _handler: CAN1_TX },
350 Vector { _handler: CAN1_RX0 },
351 Vector { _handler: CAN1_RX1 },
352 Vector { _handler: CAN1_SCE },
353 Vector { _handler: EXTI9_5 },
354 Vector {
355 _handler: TIM1_BRK_TIM15,
356 },
357 Vector {
358 _handler: TIM1_UP_TIM16,
359 },
360 Vector {
361 _handler: TIM1_TRG_COM_TIM17,
362 },
363 Vector { _handler: TIM1_CC },
364 Vector { _handler: TIM2 },
365 Vector { _handler: TIM3 },
366 Vector { _handler: TIM4 },
367 Vector { _handler: I2C1_EV },
368 Vector { _handler: I2C1_ER },
369 Vector { _handler: I2C2_EV },
370 Vector { _handler: I2C2_ER },
371 Vector { _handler: SPI1 },
372 Vector { _handler: SPI2 },
373 Vector { _handler: USART1 },
374 Vector { _handler: USART2 },
375 Vector { _handler: USART3 },
376 Vector {
377 _handler: EXTI15_10,
378 },
379 Vector {
380 _handler: RTC_Alarm,
381 },
382 Vector {
383 _handler: DFSDM1_FLT3,
384 },
385 Vector { _handler: TIM8_BRK },
386 Vector { _handler: TIM8_UP },
387 Vector {
388 _handler: TIM8_TRG_COM,
389 },
390 Vector { _handler: TIM8_CC },
391 Vector { _reserved: 0 },
392 Vector { _handler: FMC },
393 Vector { _handler: SDMMC1 },
394 Vector { _handler: TIM5 },
395 Vector { _handler: SPI3 },
396 Vector { _handler: UART4 },
397 Vector { _handler: UART5 },
398 Vector { _handler: TIM6_DAC },
399 Vector { _handler: TIM7 },
400 Vector {
401 _handler: DMA2_Channel1,
402 },
403 Vector {
404 _handler: DMA2_Channel2,
405 },
406 Vector {
407 _handler: DMA2_Channel3,
408 },
409 Vector {
410 _handler: DMA2_Channel4,
411 },
412 Vector {
413 _handler: DMA2_Channel5,
414 },
415 Vector {
416 _handler: DFSDM1_FLT0,
417 },
418 Vector {
419 _handler: DFSDM1_FLT1,
420 },
421 Vector {
422 _handler: DFSDM1_FLT2,
423 },
424 Vector { _handler: COMP },
425 Vector { _handler: LPTIM1 },
426 Vector { _handler: LPTIM2 },
427 Vector { _handler: OTG_FS },
428 Vector {
429 _handler: DMA2_Channel6,
430 },
431 Vector {
432 _handler: DMA2_Channel7,
433 },
434 Vector { _handler: LPUART1 },
435 Vector { _handler: OCTOSPI1 },
436 Vector { _handler: I2C3_EV },
437 Vector { _handler: I2C3_ER },
438 Vector { _handler: SAI1 },
439 Vector { _handler: SAI2 },
440 Vector { _handler: OCTOSPI2 },
441 Vector { _handler: TSC },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _handler: RNG },
445 Vector { _handler: FPU },
446 Vector { _handler: CRS },
447 Vector { _handler: I2C4_ER },
448 Vector { _handler: I2C4_EV },
449 Vector { _handler: DCMI },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector { _reserved: 0 },
453 Vector { _reserved: 0 },
454 Vector { _handler: DMA2D },
455 Vector { _handler: LTDC },
456 Vector { _handler: LTDC_ER },
457 Vector { _handler: GFXMMU },
458 Vector {
459 _handler: DMAMUX1_OVR,
460 },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r7zi.rs b/embassy-stm32/src/chip/stm32l4r7zi.rs
index d0f3be660..d3d635c43 100644
--- a/embassy-stm32/src/chip/stm32l4r7zi.rs
+++ b/embassy-stm32/src/chip/stm32l4r7zi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,451 @@ peripherals!(
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 GFXMMU = 93,
70 I2C1_ER = 32,
71 I2C1_EV = 31,
72 I2C2_ER = 34,
73 I2C2_EV = 33,
74 I2C3_ER = 73,
75 I2C3_EV = 72,
76 I2C4_ER = 83,
77 I2C4_EV = 84,
78 LPTIM1 = 65,
79 LPTIM2 = 66,
80 LPUART1 = 70,
81 LTDC = 91,
82 LTDC_ER = 92,
83 OCTOSPI1 = 71,
84 OCTOSPI2 = 76,
85 OTG_FS = 67,
86 PVD_PVM = 1,
87 RCC = 5,
88 RNG = 80,
89 RTC_Alarm = 41,
90 RTC_WKUP = 3,
91 SAI1 = 74,
92 SAI2 = 75,
93 SDMMC1 = 49,
94 SPI1 = 35,
95 SPI2 = 36,
96 SPI3 = 51,
97 TAMP_STAMP = 2,
98 TIM1_BRK_TIM15 = 24,
99 TIM1_CC = 27,
100 TIM1_TRG_COM_TIM17 = 26,
101 TIM1_UP_TIM16 = 25,
102 TIM2 = 28,
103 TIM3 = 29,
104 TIM4 = 30,
105 TIM5 = 50,
106 TIM6_DAC = 54,
107 TIM7 = 55,
108 TIM8_BRK = 43,
109 TIM8_CC = 46,
110 TIM8_TRG_COM = 45,
111 TIM8_UP = 44,
112 TSC = 77,
113 UART4 = 52,
114 UART5 = 53,
115 USART1 = 37,
116 USART2 = 38,
117 USART3 = 39,
118 WWDG = 0,
119 }
120 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
121 #[inline(always)]
122 fn number(self) -> u16 {
123 self as u16
124 }
125 }
126
127 declare!(ADC1);
128 declare!(CAN1_RX0);
129 declare!(CAN1_RX1);
130 declare!(CAN1_SCE);
131 declare!(CAN1_TX);
132 declare!(COMP);
133 declare!(CRS);
134 declare!(DCMI);
135 declare!(DFSDM1_FLT0);
136 declare!(DFSDM1_FLT1);
137 declare!(DFSDM1_FLT2);
138 declare!(DFSDM1_FLT3);
139 declare!(DMA1_Channel1);
140 declare!(DMA1_Channel2);
141 declare!(DMA1_Channel3);
142 declare!(DMA1_Channel4);
143 declare!(DMA1_Channel5);
144 declare!(DMA1_Channel6);
145 declare!(DMA1_Channel7);
146 declare!(DMA2D);
147 declare!(DMA2_Channel1);
148 declare!(DMA2_Channel2);
149 declare!(DMA2_Channel3);
150 declare!(DMA2_Channel4);
151 declare!(DMA2_Channel5);
152 declare!(DMA2_Channel6);
153 declare!(DMA2_Channel7);
154 declare!(DMAMUX1_OVR);
155 declare!(EXTI0);
156 declare!(EXTI1);
157 declare!(EXTI15_10);
158 declare!(EXTI2);
159 declare!(EXTI3);
160 declare!(EXTI4);
161 declare!(EXTI9_5);
162 declare!(FLASH);
163 declare!(FMC);
164 declare!(FPU);
165 declare!(GFXMMU);
166 declare!(I2C1_ER);
167 declare!(I2C1_EV);
168 declare!(I2C2_ER);
169 declare!(I2C2_EV);
170 declare!(I2C3_ER);
171 declare!(I2C3_EV);
172 declare!(I2C4_ER);
173 declare!(I2C4_EV);
174 declare!(LPTIM1);
175 declare!(LPTIM2);
176 declare!(LPUART1);
177 declare!(LTDC);
178 declare!(LTDC_ER);
179 declare!(OCTOSPI1);
180 declare!(OCTOSPI2);
181 declare!(OTG_FS);
182 declare!(PVD_PVM);
183 declare!(RCC);
184 declare!(RNG);
185 declare!(RTC_Alarm);
186 declare!(RTC_WKUP);
187 declare!(SAI1);
188 declare!(SAI2);
189 declare!(SDMMC1);
190 declare!(SPI1);
191 declare!(SPI2);
192 declare!(SPI3);
193 declare!(TAMP_STAMP);
194 declare!(TIM1_BRK_TIM15);
195 declare!(TIM1_CC);
196 declare!(TIM1_TRG_COM_TIM17);
197 declare!(TIM1_UP_TIM16);
198 declare!(TIM2);
199 declare!(TIM3);
200 declare!(TIM4);
201 declare!(TIM5);
202 declare!(TIM6_DAC);
203 declare!(TIM7);
204 declare!(TIM8_BRK);
205 declare!(TIM8_CC);
206 declare!(TIM8_TRG_COM);
207 declare!(TIM8_UP);
208 declare!(TSC);
209 declare!(UART4);
210 declare!(UART5);
211 declare!(USART1);
212 declare!(USART2);
213 declare!(USART3);
214 declare!(WWDG);
215}
216mod interrupt_vector {
217 extern "C" {
218 fn ADC1();
219 fn CAN1_RX0();
220 fn CAN1_RX1();
221 fn CAN1_SCE();
222 fn CAN1_TX();
223 fn COMP();
224 fn CRS();
225 fn DCMI();
226 fn DFSDM1_FLT0();
227 fn DFSDM1_FLT1();
228 fn DFSDM1_FLT2();
229 fn DFSDM1_FLT3();
230 fn DMA1_Channel1();
231 fn DMA1_Channel2();
232 fn DMA1_Channel3();
233 fn DMA1_Channel4();
234 fn DMA1_Channel5();
235 fn DMA1_Channel6();
236 fn DMA1_Channel7();
237 fn DMA2D();
238 fn DMA2_Channel1();
239 fn DMA2_Channel2();
240 fn DMA2_Channel3();
241 fn DMA2_Channel4();
242 fn DMA2_Channel5();
243 fn DMA2_Channel6();
244 fn DMA2_Channel7();
245 fn DMAMUX1_OVR();
246 fn EXTI0();
247 fn EXTI1();
248 fn EXTI15_10();
249 fn EXTI2();
250 fn EXTI3();
251 fn EXTI4();
252 fn EXTI9_5();
253 fn FLASH();
254 fn FMC();
255 fn FPU();
256 fn GFXMMU();
257 fn I2C1_ER();
258 fn I2C1_EV();
259 fn I2C2_ER();
260 fn I2C2_EV();
261 fn I2C3_ER();
262 fn I2C3_EV();
263 fn I2C4_ER();
264 fn I2C4_EV();
265 fn LPTIM1();
266 fn LPTIM2();
267 fn LPUART1();
268 fn LTDC();
269 fn LTDC_ER();
270 fn OCTOSPI1();
271 fn OCTOSPI2();
272 fn OTG_FS();
273 fn PVD_PVM();
274 fn RCC();
275 fn RNG();
276 fn RTC_Alarm();
277 fn RTC_WKUP();
278 fn SAI1();
279 fn SAI2();
280 fn SDMMC1();
281 fn SPI1();
282 fn SPI2();
283 fn SPI3();
284 fn TAMP_STAMP();
285 fn TIM1_BRK_TIM15();
286 fn TIM1_CC();
287 fn TIM1_TRG_COM_TIM17();
288 fn TIM1_UP_TIM16();
289 fn TIM2();
290 fn TIM3();
291 fn TIM4();
292 fn TIM5();
293 fn TIM6_DAC();
294 fn TIM7();
295 fn TIM8_BRK();
296 fn TIM8_CC();
297 fn TIM8_TRG_COM();
298 fn TIM8_UP();
299 fn TSC();
300 fn UART4();
301 fn UART5();
302 fn USART1();
303 fn USART2();
304 fn USART3();
305 fn WWDG();
306 }
307 pub union Vector {
308 _handler: unsafe extern "C" fn(),
309 _reserved: u32,
310 }
311 #[link_section = ".vector_table.interrupts"]
312 #[no_mangle]
313 pub static __INTERRUPTS: [Vector; 95] = [
314 Vector { _handler: WWDG },
315 Vector { _handler: PVD_PVM },
316 Vector {
317 _handler: TAMP_STAMP,
318 },
319 Vector { _handler: RTC_WKUP },
320 Vector { _handler: FLASH },
321 Vector { _handler: RCC },
322 Vector { _handler: EXTI0 },
323 Vector { _handler: EXTI1 },
324 Vector { _handler: EXTI2 },
325 Vector { _handler: EXTI3 },
326 Vector { _handler: EXTI4 },
327 Vector {
328 _handler: DMA1_Channel1,
329 },
330 Vector {
331 _handler: DMA1_Channel2,
332 },
333 Vector {
334 _handler: DMA1_Channel3,
335 },
336 Vector {
337 _handler: DMA1_Channel4,
338 },
339 Vector {
340 _handler: DMA1_Channel5,
341 },
342 Vector {
343 _handler: DMA1_Channel6,
344 },
345 Vector {
346 _handler: DMA1_Channel7,
347 },
348 Vector { _handler: ADC1 },
349 Vector { _handler: CAN1_TX },
350 Vector { _handler: CAN1_RX0 },
351 Vector { _handler: CAN1_RX1 },
352 Vector { _handler: CAN1_SCE },
353 Vector { _handler: EXTI9_5 },
354 Vector {
355 _handler: TIM1_BRK_TIM15,
356 },
357 Vector {
358 _handler: TIM1_UP_TIM16,
359 },
360 Vector {
361 _handler: TIM1_TRG_COM_TIM17,
362 },
363 Vector { _handler: TIM1_CC },
364 Vector { _handler: TIM2 },
365 Vector { _handler: TIM3 },
366 Vector { _handler: TIM4 },
367 Vector { _handler: I2C1_EV },
368 Vector { _handler: I2C1_ER },
369 Vector { _handler: I2C2_EV },
370 Vector { _handler: I2C2_ER },
371 Vector { _handler: SPI1 },
372 Vector { _handler: SPI2 },
373 Vector { _handler: USART1 },
374 Vector { _handler: USART2 },
375 Vector { _handler: USART3 },
376 Vector {
377 _handler: EXTI15_10,
378 },
379 Vector {
380 _handler: RTC_Alarm,
381 },
382 Vector {
383 _handler: DFSDM1_FLT3,
384 },
385 Vector { _handler: TIM8_BRK },
386 Vector { _handler: TIM8_UP },
387 Vector {
388 _handler: TIM8_TRG_COM,
389 },
390 Vector { _handler: TIM8_CC },
391 Vector { _reserved: 0 },
392 Vector { _handler: FMC },
393 Vector { _handler: SDMMC1 },
394 Vector { _handler: TIM5 },
395 Vector { _handler: SPI3 },
396 Vector { _handler: UART4 },
397 Vector { _handler: UART5 },
398 Vector { _handler: TIM6_DAC },
399 Vector { _handler: TIM7 },
400 Vector {
401 _handler: DMA2_Channel1,
402 },
403 Vector {
404 _handler: DMA2_Channel2,
405 },
406 Vector {
407 _handler: DMA2_Channel3,
408 },
409 Vector {
410 _handler: DMA2_Channel4,
411 },
412 Vector {
413 _handler: DMA2_Channel5,
414 },
415 Vector {
416 _handler: DFSDM1_FLT0,
417 },
418 Vector {
419 _handler: DFSDM1_FLT1,
420 },
421 Vector {
422 _handler: DFSDM1_FLT2,
423 },
424 Vector { _handler: COMP },
425 Vector { _handler: LPTIM1 },
426 Vector { _handler: LPTIM2 },
427 Vector { _handler: OTG_FS },
428 Vector {
429 _handler: DMA2_Channel6,
430 },
431 Vector {
432 _handler: DMA2_Channel7,
433 },
434 Vector { _handler: LPUART1 },
435 Vector { _handler: OCTOSPI1 },
436 Vector { _handler: I2C3_EV },
437 Vector { _handler: I2C3_ER },
438 Vector { _handler: SAI1 },
439 Vector { _handler: SAI2 },
440 Vector { _handler: OCTOSPI2 },
441 Vector { _handler: TSC },
442 Vector { _reserved: 0 },
443 Vector { _reserved: 0 },
444 Vector { _handler: RNG },
445 Vector { _handler: FPU },
446 Vector { _handler: CRS },
447 Vector { _handler: I2C4_ER },
448 Vector { _handler: I2C4_EV },
449 Vector { _handler: DCMI },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector { _reserved: 0 },
453 Vector { _reserved: 0 },
454 Vector { _handler: DMA2D },
455 Vector { _handler: LTDC },
456 Vector { _handler: LTDC_ER },
457 Vector { _handler: GFXMMU },
458 Vector {
459 _handler: DMAMUX1_OVR,
460 },
461 ];
462}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 463impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 464impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 465impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r9ag.rs b/embassy-stm32/src/chip/stm32l4r9ag.rs
index d0f3be660..9d994d7a1 100644
--- a/embassy-stm32/src/chip/stm32l4r9ag.rs
+++ b/embassy-stm32/src/chip/stm32l4r9ag.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,454 @@ peripherals!(
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 DSI = 78,
60 EXTI0 = 6,
61 EXTI1 = 7,
62 EXTI15_10 = 40,
63 EXTI2 = 8,
64 EXTI3 = 9,
65 EXTI4 = 10,
66 EXTI9_5 = 23,
67 FLASH = 4,
68 FMC = 48,
69 FPU = 81,
70 GFXMMU = 93,
71 I2C1_ER = 32,
72 I2C1_EV = 31,
73 I2C2_ER = 34,
74 I2C2_EV = 33,
75 I2C3_ER = 73,
76 I2C3_EV = 72,
77 I2C4_ER = 83,
78 I2C4_EV = 84,
79 LPTIM1 = 65,
80 LPTIM2 = 66,
81 LPUART1 = 70,
82 LTDC = 91,
83 LTDC_ER = 92,
84 OCTOSPI1 = 71,
85 OCTOSPI2 = 76,
86 OTG_FS = 67,
87 PVD_PVM = 1,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 TAMP_STAMP = 2,
99 TIM1_BRK_TIM15 = 24,
100 TIM1_CC = 27,
101 TIM1_TRG_COM_TIM17 = 26,
102 TIM1_UP_TIM16 = 25,
103 TIM2 = 28,
104 TIM3 = 29,
105 TIM4 = 30,
106 TIM5 = 50,
107 TIM6_DAC = 54,
108 TIM7 = 55,
109 TIM8_BRK = 43,
110 TIM8_CC = 46,
111 TIM8_TRG_COM = 45,
112 TIM8_UP = 44,
113 TSC = 77,
114 UART4 = 52,
115 UART5 = 53,
116 USART1 = 37,
117 USART2 = 38,
118 USART3 = 39,
119 WWDG = 0,
120 }
121 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
122 #[inline(always)]
123 fn number(self) -> u16 {
124 self as u16
125 }
126 }
127
128 declare!(ADC1);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(CRS);
135 declare!(DCMI);
136 declare!(DFSDM1_FLT0);
137 declare!(DFSDM1_FLT1);
138 declare!(DFSDM1_FLT2);
139 declare!(DFSDM1_FLT3);
140 declare!(DMA1_Channel1);
141 declare!(DMA1_Channel2);
142 declare!(DMA1_Channel3);
143 declare!(DMA1_Channel4);
144 declare!(DMA1_Channel5);
145 declare!(DMA1_Channel6);
146 declare!(DMA1_Channel7);
147 declare!(DMA2D);
148 declare!(DMA2_Channel1);
149 declare!(DMA2_Channel2);
150 declare!(DMA2_Channel3);
151 declare!(DMA2_Channel4);
152 declare!(DMA2_Channel5);
153 declare!(DMA2_Channel6);
154 declare!(DMA2_Channel7);
155 declare!(DMAMUX1_OVR);
156 declare!(DSI);
157 declare!(EXTI0);
158 declare!(EXTI1);
159 declare!(EXTI15_10);
160 declare!(EXTI2);
161 declare!(EXTI3);
162 declare!(EXTI4);
163 declare!(EXTI9_5);
164 declare!(FLASH);
165 declare!(FMC);
166 declare!(FPU);
167 declare!(GFXMMU);
168 declare!(I2C1_ER);
169 declare!(I2C1_EV);
170 declare!(I2C2_ER);
171 declare!(I2C2_EV);
172 declare!(I2C3_ER);
173 declare!(I2C3_EV);
174 declare!(I2C4_ER);
175 declare!(I2C4_EV);
176 declare!(LPTIM1);
177 declare!(LPTIM2);
178 declare!(LPUART1);
179 declare!(LTDC);
180 declare!(LTDC_ER);
181 declare!(OCTOSPI1);
182 declare!(OCTOSPI2);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(RCC);
186 declare!(RNG);
187 declare!(RTC_Alarm);
188 declare!(RTC_WKUP);
189 declare!(SAI1);
190 declare!(SAI2);
191 declare!(SDMMC1);
192 declare!(SPI1);
193 declare!(SPI2);
194 declare!(SPI3);
195 declare!(TAMP_STAMP);
196 declare!(TIM1_BRK_TIM15);
197 declare!(TIM1_CC);
198 declare!(TIM1_TRG_COM_TIM17);
199 declare!(TIM1_UP_TIM16);
200 declare!(TIM2);
201 declare!(TIM3);
202 declare!(TIM4);
203 declare!(TIM5);
204 declare!(TIM6_DAC);
205 declare!(TIM7);
206 declare!(TIM8_BRK);
207 declare!(TIM8_CC);
208 declare!(TIM8_TRG_COM);
209 declare!(TIM8_UP);
210 declare!(TSC);
211 declare!(UART4);
212 declare!(UART5);
213 declare!(USART1);
214 declare!(USART2);
215 declare!(USART3);
216 declare!(WWDG);
217}
218mod interrupt_vector {
219 extern "C" {
220 fn ADC1();
221 fn CAN1_RX0();
222 fn CAN1_RX1();
223 fn CAN1_SCE();
224 fn CAN1_TX();
225 fn COMP();
226 fn CRS();
227 fn DCMI();
228 fn DFSDM1_FLT0();
229 fn DFSDM1_FLT1();
230 fn DFSDM1_FLT2();
231 fn DFSDM1_FLT3();
232 fn DMA1_Channel1();
233 fn DMA1_Channel2();
234 fn DMA1_Channel3();
235 fn DMA1_Channel4();
236 fn DMA1_Channel5();
237 fn DMA1_Channel6();
238 fn DMA1_Channel7();
239 fn DMA2D();
240 fn DMA2_Channel1();
241 fn DMA2_Channel2();
242 fn DMA2_Channel3();
243 fn DMA2_Channel4();
244 fn DMA2_Channel5();
245 fn DMA2_Channel6();
246 fn DMA2_Channel7();
247 fn DMAMUX1_OVR();
248 fn DSI();
249 fn EXTI0();
250 fn EXTI1();
251 fn EXTI15_10();
252 fn EXTI2();
253 fn EXTI3();
254 fn EXTI4();
255 fn EXTI9_5();
256 fn FLASH();
257 fn FMC();
258 fn FPU();
259 fn GFXMMU();
260 fn I2C1_ER();
261 fn I2C1_EV();
262 fn I2C2_ER();
263 fn I2C2_EV();
264 fn I2C3_ER();
265 fn I2C3_EV();
266 fn I2C4_ER();
267 fn I2C4_EV();
268 fn LPTIM1();
269 fn LPTIM2();
270 fn LPUART1();
271 fn LTDC();
272 fn LTDC_ER();
273 fn OCTOSPI1();
274 fn OCTOSPI2();
275 fn OTG_FS();
276 fn PVD_PVM();
277 fn RCC();
278 fn RNG();
279 fn RTC_Alarm();
280 fn RTC_WKUP();
281 fn SAI1();
282 fn SAI2();
283 fn SDMMC1();
284 fn SPI1();
285 fn SPI2();
286 fn SPI3();
287 fn TAMP_STAMP();
288 fn TIM1_BRK_TIM15();
289 fn TIM1_CC();
290 fn TIM1_TRG_COM_TIM17();
291 fn TIM1_UP_TIM16();
292 fn TIM2();
293 fn TIM3();
294 fn TIM4();
295 fn TIM5();
296 fn TIM6_DAC();
297 fn TIM7();
298 fn TIM8_BRK();
299 fn TIM8_CC();
300 fn TIM8_TRG_COM();
301 fn TIM8_UP();
302 fn TSC();
303 fn UART4();
304 fn UART5();
305 fn USART1();
306 fn USART2();
307 fn USART3();
308 fn WWDG();
309 }
310 pub union Vector {
311 _handler: unsafe extern "C" fn(),
312 _reserved: u32,
313 }
314 #[link_section = ".vector_table.interrupts"]
315 #[no_mangle]
316 pub static __INTERRUPTS: [Vector; 95] = [
317 Vector { _handler: WWDG },
318 Vector { _handler: PVD_PVM },
319 Vector {
320 _handler: TAMP_STAMP,
321 },
322 Vector { _handler: RTC_WKUP },
323 Vector { _handler: FLASH },
324 Vector { _handler: RCC },
325 Vector { _handler: EXTI0 },
326 Vector { _handler: EXTI1 },
327 Vector { _handler: EXTI2 },
328 Vector { _handler: EXTI3 },
329 Vector { _handler: EXTI4 },
330 Vector {
331 _handler: DMA1_Channel1,
332 },
333 Vector {
334 _handler: DMA1_Channel2,
335 },
336 Vector {
337 _handler: DMA1_Channel3,
338 },
339 Vector {
340 _handler: DMA1_Channel4,
341 },
342 Vector {
343 _handler: DMA1_Channel5,
344 },
345 Vector {
346 _handler: DMA1_Channel6,
347 },
348 Vector {
349 _handler: DMA1_Channel7,
350 },
351 Vector { _handler: ADC1 },
352 Vector { _handler: CAN1_TX },
353 Vector { _handler: CAN1_RX0 },
354 Vector { _handler: CAN1_RX1 },
355 Vector { _handler: CAN1_SCE },
356 Vector { _handler: EXTI9_5 },
357 Vector {
358 _handler: TIM1_BRK_TIM15,
359 },
360 Vector {
361 _handler: TIM1_UP_TIM16,
362 },
363 Vector {
364 _handler: TIM1_TRG_COM_TIM17,
365 },
366 Vector { _handler: TIM1_CC },
367 Vector { _handler: TIM2 },
368 Vector { _handler: TIM3 },
369 Vector { _handler: TIM4 },
370 Vector { _handler: I2C1_EV },
371 Vector { _handler: I2C1_ER },
372 Vector { _handler: I2C2_EV },
373 Vector { _handler: I2C2_ER },
374 Vector { _handler: SPI1 },
375 Vector { _handler: SPI2 },
376 Vector { _handler: USART1 },
377 Vector { _handler: USART2 },
378 Vector { _handler: USART3 },
379 Vector {
380 _handler: EXTI15_10,
381 },
382 Vector {
383 _handler: RTC_Alarm,
384 },
385 Vector {
386 _handler: DFSDM1_FLT3,
387 },
388 Vector { _handler: TIM8_BRK },
389 Vector { _handler: TIM8_UP },
390 Vector {
391 _handler: TIM8_TRG_COM,
392 },
393 Vector { _handler: TIM8_CC },
394 Vector { _reserved: 0 },
395 Vector { _handler: FMC },
396 Vector { _handler: SDMMC1 },
397 Vector { _handler: TIM5 },
398 Vector { _handler: SPI3 },
399 Vector { _handler: UART4 },
400 Vector { _handler: UART5 },
401 Vector { _handler: TIM6_DAC },
402 Vector { _handler: TIM7 },
403 Vector {
404 _handler: DMA2_Channel1,
405 },
406 Vector {
407 _handler: DMA2_Channel2,
408 },
409 Vector {
410 _handler: DMA2_Channel3,
411 },
412 Vector {
413 _handler: DMA2_Channel4,
414 },
415 Vector {
416 _handler: DMA2_Channel5,
417 },
418 Vector {
419 _handler: DFSDM1_FLT0,
420 },
421 Vector {
422 _handler: DFSDM1_FLT1,
423 },
424 Vector {
425 _handler: DFSDM1_FLT2,
426 },
427 Vector { _handler: COMP },
428 Vector { _handler: LPTIM1 },
429 Vector { _handler: LPTIM2 },
430 Vector { _handler: OTG_FS },
431 Vector {
432 _handler: DMA2_Channel6,
433 },
434 Vector {
435 _handler: DMA2_Channel7,
436 },
437 Vector { _handler: LPUART1 },
438 Vector { _handler: OCTOSPI1 },
439 Vector { _handler: I2C3_EV },
440 Vector { _handler: I2C3_ER },
441 Vector { _handler: SAI1 },
442 Vector { _handler: SAI2 },
443 Vector { _handler: OCTOSPI2 },
444 Vector { _handler: TSC },
445 Vector { _handler: DSI },
446 Vector { _reserved: 0 },
447 Vector { _handler: RNG },
448 Vector { _handler: FPU },
449 Vector { _handler: CRS },
450 Vector { _handler: I2C4_ER },
451 Vector { _handler: I2C4_EV },
452 Vector { _handler: DCMI },
453 Vector { _reserved: 0 },
454 Vector { _reserved: 0 },
455 Vector { _reserved: 0 },
456 Vector { _reserved: 0 },
457 Vector { _handler: DMA2D },
458 Vector { _handler: LTDC },
459 Vector { _handler: LTDC_ER },
460 Vector { _handler: GFXMMU },
461 Vector {
462 _handler: DMAMUX1_OVR,
463 },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r9ai.rs b/embassy-stm32/src/chip/stm32l4r9ai.rs
index d0f3be660..9d994d7a1 100644
--- a/embassy-stm32/src/chip/stm32l4r9ai.rs
+++ b/embassy-stm32/src/chip/stm32l4r9ai.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,454 @@ peripherals!(
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 DSI = 78,
60 EXTI0 = 6,
61 EXTI1 = 7,
62 EXTI15_10 = 40,
63 EXTI2 = 8,
64 EXTI3 = 9,
65 EXTI4 = 10,
66 EXTI9_5 = 23,
67 FLASH = 4,
68 FMC = 48,
69 FPU = 81,
70 GFXMMU = 93,
71 I2C1_ER = 32,
72 I2C1_EV = 31,
73 I2C2_ER = 34,
74 I2C2_EV = 33,
75 I2C3_ER = 73,
76 I2C3_EV = 72,
77 I2C4_ER = 83,
78 I2C4_EV = 84,
79 LPTIM1 = 65,
80 LPTIM2 = 66,
81 LPUART1 = 70,
82 LTDC = 91,
83 LTDC_ER = 92,
84 OCTOSPI1 = 71,
85 OCTOSPI2 = 76,
86 OTG_FS = 67,
87 PVD_PVM = 1,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 TAMP_STAMP = 2,
99 TIM1_BRK_TIM15 = 24,
100 TIM1_CC = 27,
101 TIM1_TRG_COM_TIM17 = 26,
102 TIM1_UP_TIM16 = 25,
103 TIM2 = 28,
104 TIM3 = 29,
105 TIM4 = 30,
106 TIM5 = 50,
107 TIM6_DAC = 54,
108 TIM7 = 55,
109 TIM8_BRK = 43,
110 TIM8_CC = 46,
111 TIM8_TRG_COM = 45,
112 TIM8_UP = 44,
113 TSC = 77,
114 UART4 = 52,
115 UART5 = 53,
116 USART1 = 37,
117 USART2 = 38,
118 USART3 = 39,
119 WWDG = 0,
120 }
121 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
122 #[inline(always)]
123 fn number(self) -> u16 {
124 self as u16
125 }
126 }
127
128 declare!(ADC1);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(CRS);
135 declare!(DCMI);
136 declare!(DFSDM1_FLT0);
137 declare!(DFSDM1_FLT1);
138 declare!(DFSDM1_FLT2);
139 declare!(DFSDM1_FLT3);
140 declare!(DMA1_Channel1);
141 declare!(DMA1_Channel2);
142 declare!(DMA1_Channel3);
143 declare!(DMA1_Channel4);
144 declare!(DMA1_Channel5);
145 declare!(DMA1_Channel6);
146 declare!(DMA1_Channel7);
147 declare!(DMA2D);
148 declare!(DMA2_Channel1);
149 declare!(DMA2_Channel2);
150 declare!(DMA2_Channel3);
151 declare!(DMA2_Channel4);
152 declare!(DMA2_Channel5);
153 declare!(DMA2_Channel6);
154 declare!(DMA2_Channel7);
155 declare!(DMAMUX1_OVR);
156 declare!(DSI);
157 declare!(EXTI0);
158 declare!(EXTI1);
159 declare!(EXTI15_10);
160 declare!(EXTI2);
161 declare!(EXTI3);
162 declare!(EXTI4);
163 declare!(EXTI9_5);
164 declare!(FLASH);
165 declare!(FMC);
166 declare!(FPU);
167 declare!(GFXMMU);
168 declare!(I2C1_ER);
169 declare!(I2C1_EV);
170 declare!(I2C2_ER);
171 declare!(I2C2_EV);
172 declare!(I2C3_ER);
173 declare!(I2C3_EV);
174 declare!(I2C4_ER);
175 declare!(I2C4_EV);
176 declare!(LPTIM1);
177 declare!(LPTIM2);
178 declare!(LPUART1);
179 declare!(LTDC);
180 declare!(LTDC_ER);
181 declare!(OCTOSPI1);
182 declare!(OCTOSPI2);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(RCC);
186 declare!(RNG);
187 declare!(RTC_Alarm);
188 declare!(RTC_WKUP);
189 declare!(SAI1);
190 declare!(SAI2);
191 declare!(SDMMC1);
192 declare!(SPI1);
193 declare!(SPI2);
194 declare!(SPI3);
195 declare!(TAMP_STAMP);
196 declare!(TIM1_BRK_TIM15);
197 declare!(TIM1_CC);
198 declare!(TIM1_TRG_COM_TIM17);
199 declare!(TIM1_UP_TIM16);
200 declare!(TIM2);
201 declare!(TIM3);
202 declare!(TIM4);
203 declare!(TIM5);
204 declare!(TIM6_DAC);
205 declare!(TIM7);
206 declare!(TIM8_BRK);
207 declare!(TIM8_CC);
208 declare!(TIM8_TRG_COM);
209 declare!(TIM8_UP);
210 declare!(TSC);
211 declare!(UART4);
212 declare!(UART5);
213 declare!(USART1);
214 declare!(USART2);
215 declare!(USART3);
216 declare!(WWDG);
217}
218mod interrupt_vector {
219 extern "C" {
220 fn ADC1();
221 fn CAN1_RX0();
222 fn CAN1_RX1();
223 fn CAN1_SCE();
224 fn CAN1_TX();
225 fn COMP();
226 fn CRS();
227 fn DCMI();
228 fn DFSDM1_FLT0();
229 fn DFSDM1_FLT1();
230 fn DFSDM1_FLT2();
231 fn DFSDM1_FLT3();
232 fn DMA1_Channel1();
233 fn DMA1_Channel2();
234 fn DMA1_Channel3();
235 fn DMA1_Channel4();
236 fn DMA1_Channel5();
237 fn DMA1_Channel6();
238 fn DMA1_Channel7();
239 fn DMA2D();
240 fn DMA2_Channel1();
241 fn DMA2_Channel2();
242 fn DMA2_Channel3();
243 fn DMA2_Channel4();
244 fn DMA2_Channel5();
245 fn DMA2_Channel6();
246 fn DMA2_Channel7();
247 fn DMAMUX1_OVR();
248 fn DSI();
249 fn EXTI0();
250 fn EXTI1();
251 fn EXTI15_10();
252 fn EXTI2();
253 fn EXTI3();
254 fn EXTI4();
255 fn EXTI9_5();
256 fn FLASH();
257 fn FMC();
258 fn FPU();
259 fn GFXMMU();
260 fn I2C1_ER();
261 fn I2C1_EV();
262 fn I2C2_ER();
263 fn I2C2_EV();
264 fn I2C3_ER();
265 fn I2C3_EV();
266 fn I2C4_ER();
267 fn I2C4_EV();
268 fn LPTIM1();
269 fn LPTIM2();
270 fn LPUART1();
271 fn LTDC();
272 fn LTDC_ER();
273 fn OCTOSPI1();
274 fn OCTOSPI2();
275 fn OTG_FS();
276 fn PVD_PVM();
277 fn RCC();
278 fn RNG();
279 fn RTC_Alarm();
280 fn RTC_WKUP();
281 fn SAI1();
282 fn SAI2();
283 fn SDMMC1();
284 fn SPI1();
285 fn SPI2();
286 fn SPI3();
287 fn TAMP_STAMP();
288 fn TIM1_BRK_TIM15();
289 fn TIM1_CC();
290 fn TIM1_TRG_COM_TIM17();
291 fn TIM1_UP_TIM16();
292 fn TIM2();
293 fn TIM3();
294 fn TIM4();
295 fn TIM5();
296 fn TIM6_DAC();
297 fn TIM7();
298 fn TIM8_BRK();
299 fn TIM8_CC();
300 fn TIM8_TRG_COM();
301 fn TIM8_UP();
302 fn TSC();
303 fn UART4();
304 fn UART5();
305 fn USART1();
306 fn USART2();
307 fn USART3();
308 fn WWDG();
309 }
310 pub union Vector {
311 _handler: unsafe extern "C" fn(),
312 _reserved: u32,
313 }
314 #[link_section = ".vector_table.interrupts"]
315 #[no_mangle]
316 pub static __INTERRUPTS: [Vector; 95] = [
317 Vector { _handler: WWDG },
318 Vector { _handler: PVD_PVM },
319 Vector {
320 _handler: TAMP_STAMP,
321 },
322 Vector { _handler: RTC_WKUP },
323 Vector { _handler: FLASH },
324 Vector { _handler: RCC },
325 Vector { _handler: EXTI0 },
326 Vector { _handler: EXTI1 },
327 Vector { _handler: EXTI2 },
328 Vector { _handler: EXTI3 },
329 Vector { _handler: EXTI4 },
330 Vector {
331 _handler: DMA1_Channel1,
332 },
333 Vector {
334 _handler: DMA1_Channel2,
335 },
336 Vector {
337 _handler: DMA1_Channel3,
338 },
339 Vector {
340 _handler: DMA1_Channel4,
341 },
342 Vector {
343 _handler: DMA1_Channel5,
344 },
345 Vector {
346 _handler: DMA1_Channel6,
347 },
348 Vector {
349 _handler: DMA1_Channel7,
350 },
351 Vector { _handler: ADC1 },
352 Vector { _handler: CAN1_TX },
353 Vector { _handler: CAN1_RX0 },
354 Vector { _handler: CAN1_RX1 },
355 Vector { _handler: CAN1_SCE },
356 Vector { _handler: EXTI9_5 },
357 Vector {
358 _handler: TIM1_BRK_TIM15,
359 },
360 Vector {
361 _handler: TIM1_UP_TIM16,
362 },
363 Vector {
364 _handler: TIM1_TRG_COM_TIM17,
365 },
366 Vector { _handler: TIM1_CC },
367 Vector { _handler: TIM2 },
368 Vector { _handler: TIM3 },
369 Vector { _handler: TIM4 },
370 Vector { _handler: I2C1_EV },
371 Vector { _handler: I2C1_ER },
372 Vector { _handler: I2C2_EV },
373 Vector { _handler: I2C2_ER },
374 Vector { _handler: SPI1 },
375 Vector { _handler: SPI2 },
376 Vector { _handler: USART1 },
377 Vector { _handler: USART2 },
378 Vector { _handler: USART3 },
379 Vector {
380 _handler: EXTI15_10,
381 },
382 Vector {
383 _handler: RTC_Alarm,
384 },
385 Vector {
386 _handler: DFSDM1_FLT3,
387 },
388 Vector { _handler: TIM8_BRK },
389 Vector { _handler: TIM8_UP },
390 Vector {
391 _handler: TIM8_TRG_COM,
392 },
393 Vector { _handler: TIM8_CC },
394 Vector { _reserved: 0 },
395 Vector { _handler: FMC },
396 Vector { _handler: SDMMC1 },
397 Vector { _handler: TIM5 },
398 Vector { _handler: SPI3 },
399 Vector { _handler: UART4 },
400 Vector { _handler: UART5 },
401 Vector { _handler: TIM6_DAC },
402 Vector { _handler: TIM7 },
403 Vector {
404 _handler: DMA2_Channel1,
405 },
406 Vector {
407 _handler: DMA2_Channel2,
408 },
409 Vector {
410 _handler: DMA2_Channel3,
411 },
412 Vector {
413 _handler: DMA2_Channel4,
414 },
415 Vector {
416 _handler: DMA2_Channel5,
417 },
418 Vector {
419 _handler: DFSDM1_FLT0,
420 },
421 Vector {
422 _handler: DFSDM1_FLT1,
423 },
424 Vector {
425 _handler: DFSDM1_FLT2,
426 },
427 Vector { _handler: COMP },
428 Vector { _handler: LPTIM1 },
429 Vector { _handler: LPTIM2 },
430 Vector { _handler: OTG_FS },
431 Vector {
432 _handler: DMA2_Channel6,
433 },
434 Vector {
435 _handler: DMA2_Channel7,
436 },
437 Vector { _handler: LPUART1 },
438 Vector { _handler: OCTOSPI1 },
439 Vector { _handler: I2C3_EV },
440 Vector { _handler: I2C3_ER },
441 Vector { _handler: SAI1 },
442 Vector { _handler: SAI2 },
443 Vector { _handler: OCTOSPI2 },
444 Vector { _handler: TSC },
445 Vector { _handler: DSI },
446 Vector { _reserved: 0 },
447 Vector { _handler: RNG },
448 Vector { _handler: FPU },
449 Vector { _handler: CRS },
450 Vector { _handler: I2C4_ER },
451 Vector { _handler: I2C4_EV },
452 Vector { _handler: DCMI },
453 Vector { _reserved: 0 },
454 Vector { _reserved: 0 },
455 Vector { _reserved: 0 },
456 Vector { _reserved: 0 },
457 Vector { _handler: DMA2D },
458 Vector { _handler: LTDC },
459 Vector { _handler: LTDC_ER },
460 Vector { _handler: GFXMMU },
461 Vector {
462 _handler: DMAMUX1_OVR,
463 },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r9vg.rs b/embassy-stm32/src/chip/stm32l4r9vg.rs
index d0f3be660..9d994d7a1 100644
--- a/embassy-stm32/src/chip/stm32l4r9vg.rs
+++ b/embassy-stm32/src/chip/stm32l4r9vg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,454 @@ peripherals!(
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 DSI = 78,
60 EXTI0 = 6,
61 EXTI1 = 7,
62 EXTI15_10 = 40,
63 EXTI2 = 8,
64 EXTI3 = 9,
65 EXTI4 = 10,
66 EXTI9_5 = 23,
67 FLASH = 4,
68 FMC = 48,
69 FPU = 81,
70 GFXMMU = 93,
71 I2C1_ER = 32,
72 I2C1_EV = 31,
73 I2C2_ER = 34,
74 I2C2_EV = 33,
75 I2C3_ER = 73,
76 I2C3_EV = 72,
77 I2C4_ER = 83,
78 I2C4_EV = 84,
79 LPTIM1 = 65,
80 LPTIM2 = 66,
81 LPUART1 = 70,
82 LTDC = 91,
83 LTDC_ER = 92,
84 OCTOSPI1 = 71,
85 OCTOSPI2 = 76,
86 OTG_FS = 67,
87 PVD_PVM = 1,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 TAMP_STAMP = 2,
99 TIM1_BRK_TIM15 = 24,
100 TIM1_CC = 27,
101 TIM1_TRG_COM_TIM17 = 26,
102 TIM1_UP_TIM16 = 25,
103 TIM2 = 28,
104 TIM3 = 29,
105 TIM4 = 30,
106 TIM5 = 50,
107 TIM6_DAC = 54,
108 TIM7 = 55,
109 TIM8_BRK = 43,
110 TIM8_CC = 46,
111 TIM8_TRG_COM = 45,
112 TIM8_UP = 44,
113 TSC = 77,
114 UART4 = 52,
115 UART5 = 53,
116 USART1 = 37,
117 USART2 = 38,
118 USART3 = 39,
119 WWDG = 0,
120 }
121 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
122 #[inline(always)]
123 fn number(self) -> u16 {
124 self as u16
125 }
126 }
127
128 declare!(ADC1);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(CRS);
135 declare!(DCMI);
136 declare!(DFSDM1_FLT0);
137 declare!(DFSDM1_FLT1);
138 declare!(DFSDM1_FLT2);
139 declare!(DFSDM1_FLT3);
140 declare!(DMA1_Channel1);
141 declare!(DMA1_Channel2);
142 declare!(DMA1_Channel3);
143 declare!(DMA1_Channel4);
144 declare!(DMA1_Channel5);
145 declare!(DMA1_Channel6);
146 declare!(DMA1_Channel7);
147 declare!(DMA2D);
148 declare!(DMA2_Channel1);
149 declare!(DMA2_Channel2);
150 declare!(DMA2_Channel3);
151 declare!(DMA2_Channel4);
152 declare!(DMA2_Channel5);
153 declare!(DMA2_Channel6);
154 declare!(DMA2_Channel7);
155 declare!(DMAMUX1_OVR);
156 declare!(DSI);
157 declare!(EXTI0);
158 declare!(EXTI1);
159 declare!(EXTI15_10);
160 declare!(EXTI2);
161 declare!(EXTI3);
162 declare!(EXTI4);
163 declare!(EXTI9_5);
164 declare!(FLASH);
165 declare!(FMC);
166 declare!(FPU);
167 declare!(GFXMMU);
168 declare!(I2C1_ER);
169 declare!(I2C1_EV);
170 declare!(I2C2_ER);
171 declare!(I2C2_EV);
172 declare!(I2C3_ER);
173 declare!(I2C3_EV);
174 declare!(I2C4_ER);
175 declare!(I2C4_EV);
176 declare!(LPTIM1);
177 declare!(LPTIM2);
178 declare!(LPUART1);
179 declare!(LTDC);
180 declare!(LTDC_ER);
181 declare!(OCTOSPI1);
182 declare!(OCTOSPI2);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(RCC);
186 declare!(RNG);
187 declare!(RTC_Alarm);
188 declare!(RTC_WKUP);
189 declare!(SAI1);
190 declare!(SAI2);
191 declare!(SDMMC1);
192 declare!(SPI1);
193 declare!(SPI2);
194 declare!(SPI3);
195 declare!(TAMP_STAMP);
196 declare!(TIM1_BRK_TIM15);
197 declare!(TIM1_CC);
198 declare!(TIM1_TRG_COM_TIM17);
199 declare!(TIM1_UP_TIM16);
200 declare!(TIM2);
201 declare!(TIM3);
202 declare!(TIM4);
203 declare!(TIM5);
204 declare!(TIM6_DAC);
205 declare!(TIM7);
206 declare!(TIM8_BRK);
207 declare!(TIM8_CC);
208 declare!(TIM8_TRG_COM);
209 declare!(TIM8_UP);
210 declare!(TSC);
211 declare!(UART4);
212 declare!(UART5);
213 declare!(USART1);
214 declare!(USART2);
215 declare!(USART3);
216 declare!(WWDG);
217}
218mod interrupt_vector {
219 extern "C" {
220 fn ADC1();
221 fn CAN1_RX0();
222 fn CAN1_RX1();
223 fn CAN1_SCE();
224 fn CAN1_TX();
225 fn COMP();
226 fn CRS();
227 fn DCMI();
228 fn DFSDM1_FLT0();
229 fn DFSDM1_FLT1();
230 fn DFSDM1_FLT2();
231 fn DFSDM1_FLT3();
232 fn DMA1_Channel1();
233 fn DMA1_Channel2();
234 fn DMA1_Channel3();
235 fn DMA1_Channel4();
236 fn DMA1_Channel5();
237 fn DMA1_Channel6();
238 fn DMA1_Channel7();
239 fn DMA2D();
240 fn DMA2_Channel1();
241 fn DMA2_Channel2();
242 fn DMA2_Channel3();
243 fn DMA2_Channel4();
244 fn DMA2_Channel5();
245 fn DMA2_Channel6();
246 fn DMA2_Channel7();
247 fn DMAMUX1_OVR();
248 fn DSI();
249 fn EXTI0();
250 fn EXTI1();
251 fn EXTI15_10();
252 fn EXTI2();
253 fn EXTI3();
254 fn EXTI4();
255 fn EXTI9_5();
256 fn FLASH();
257 fn FMC();
258 fn FPU();
259 fn GFXMMU();
260 fn I2C1_ER();
261 fn I2C1_EV();
262 fn I2C2_ER();
263 fn I2C2_EV();
264 fn I2C3_ER();
265 fn I2C3_EV();
266 fn I2C4_ER();
267 fn I2C4_EV();
268 fn LPTIM1();
269 fn LPTIM2();
270 fn LPUART1();
271 fn LTDC();
272 fn LTDC_ER();
273 fn OCTOSPI1();
274 fn OCTOSPI2();
275 fn OTG_FS();
276 fn PVD_PVM();
277 fn RCC();
278 fn RNG();
279 fn RTC_Alarm();
280 fn RTC_WKUP();
281 fn SAI1();
282 fn SAI2();
283 fn SDMMC1();
284 fn SPI1();
285 fn SPI2();
286 fn SPI3();
287 fn TAMP_STAMP();
288 fn TIM1_BRK_TIM15();
289 fn TIM1_CC();
290 fn TIM1_TRG_COM_TIM17();
291 fn TIM1_UP_TIM16();
292 fn TIM2();
293 fn TIM3();
294 fn TIM4();
295 fn TIM5();
296 fn TIM6_DAC();
297 fn TIM7();
298 fn TIM8_BRK();
299 fn TIM8_CC();
300 fn TIM8_TRG_COM();
301 fn TIM8_UP();
302 fn TSC();
303 fn UART4();
304 fn UART5();
305 fn USART1();
306 fn USART2();
307 fn USART3();
308 fn WWDG();
309 }
310 pub union Vector {
311 _handler: unsafe extern "C" fn(),
312 _reserved: u32,
313 }
314 #[link_section = ".vector_table.interrupts"]
315 #[no_mangle]
316 pub static __INTERRUPTS: [Vector; 95] = [
317 Vector { _handler: WWDG },
318 Vector { _handler: PVD_PVM },
319 Vector {
320 _handler: TAMP_STAMP,
321 },
322 Vector { _handler: RTC_WKUP },
323 Vector { _handler: FLASH },
324 Vector { _handler: RCC },
325 Vector { _handler: EXTI0 },
326 Vector { _handler: EXTI1 },
327 Vector { _handler: EXTI2 },
328 Vector { _handler: EXTI3 },
329 Vector { _handler: EXTI4 },
330 Vector {
331 _handler: DMA1_Channel1,
332 },
333 Vector {
334 _handler: DMA1_Channel2,
335 },
336 Vector {
337 _handler: DMA1_Channel3,
338 },
339 Vector {
340 _handler: DMA1_Channel4,
341 },
342 Vector {
343 _handler: DMA1_Channel5,
344 },
345 Vector {
346 _handler: DMA1_Channel6,
347 },
348 Vector {
349 _handler: DMA1_Channel7,
350 },
351 Vector { _handler: ADC1 },
352 Vector { _handler: CAN1_TX },
353 Vector { _handler: CAN1_RX0 },
354 Vector { _handler: CAN1_RX1 },
355 Vector { _handler: CAN1_SCE },
356 Vector { _handler: EXTI9_5 },
357 Vector {
358 _handler: TIM1_BRK_TIM15,
359 },
360 Vector {
361 _handler: TIM1_UP_TIM16,
362 },
363 Vector {
364 _handler: TIM1_TRG_COM_TIM17,
365 },
366 Vector { _handler: TIM1_CC },
367 Vector { _handler: TIM2 },
368 Vector { _handler: TIM3 },
369 Vector { _handler: TIM4 },
370 Vector { _handler: I2C1_EV },
371 Vector { _handler: I2C1_ER },
372 Vector { _handler: I2C2_EV },
373 Vector { _handler: I2C2_ER },
374 Vector { _handler: SPI1 },
375 Vector { _handler: SPI2 },
376 Vector { _handler: USART1 },
377 Vector { _handler: USART2 },
378 Vector { _handler: USART3 },
379 Vector {
380 _handler: EXTI15_10,
381 },
382 Vector {
383 _handler: RTC_Alarm,
384 },
385 Vector {
386 _handler: DFSDM1_FLT3,
387 },
388 Vector { _handler: TIM8_BRK },
389 Vector { _handler: TIM8_UP },
390 Vector {
391 _handler: TIM8_TRG_COM,
392 },
393 Vector { _handler: TIM8_CC },
394 Vector { _reserved: 0 },
395 Vector { _handler: FMC },
396 Vector { _handler: SDMMC1 },
397 Vector { _handler: TIM5 },
398 Vector { _handler: SPI3 },
399 Vector { _handler: UART4 },
400 Vector { _handler: UART5 },
401 Vector { _handler: TIM6_DAC },
402 Vector { _handler: TIM7 },
403 Vector {
404 _handler: DMA2_Channel1,
405 },
406 Vector {
407 _handler: DMA2_Channel2,
408 },
409 Vector {
410 _handler: DMA2_Channel3,
411 },
412 Vector {
413 _handler: DMA2_Channel4,
414 },
415 Vector {
416 _handler: DMA2_Channel5,
417 },
418 Vector {
419 _handler: DFSDM1_FLT0,
420 },
421 Vector {
422 _handler: DFSDM1_FLT1,
423 },
424 Vector {
425 _handler: DFSDM1_FLT2,
426 },
427 Vector { _handler: COMP },
428 Vector { _handler: LPTIM1 },
429 Vector { _handler: LPTIM2 },
430 Vector { _handler: OTG_FS },
431 Vector {
432 _handler: DMA2_Channel6,
433 },
434 Vector {
435 _handler: DMA2_Channel7,
436 },
437 Vector { _handler: LPUART1 },
438 Vector { _handler: OCTOSPI1 },
439 Vector { _handler: I2C3_EV },
440 Vector { _handler: I2C3_ER },
441 Vector { _handler: SAI1 },
442 Vector { _handler: SAI2 },
443 Vector { _handler: OCTOSPI2 },
444 Vector { _handler: TSC },
445 Vector { _handler: DSI },
446 Vector { _reserved: 0 },
447 Vector { _handler: RNG },
448 Vector { _handler: FPU },
449 Vector { _handler: CRS },
450 Vector { _handler: I2C4_ER },
451 Vector { _handler: I2C4_EV },
452 Vector { _handler: DCMI },
453 Vector { _reserved: 0 },
454 Vector { _reserved: 0 },
455 Vector { _reserved: 0 },
456 Vector { _reserved: 0 },
457 Vector { _handler: DMA2D },
458 Vector { _handler: LTDC },
459 Vector { _handler: LTDC_ER },
460 Vector { _handler: GFXMMU },
461 Vector {
462 _handler: DMAMUX1_OVR,
463 },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r9vi.rs b/embassy-stm32/src/chip/stm32l4r9vi.rs
index d0f3be660..9d994d7a1 100644
--- a/embassy-stm32/src/chip/stm32l4r9vi.rs
+++ b/embassy-stm32/src/chip/stm32l4r9vi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,454 @@ peripherals!(
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 DSI = 78,
60 EXTI0 = 6,
61 EXTI1 = 7,
62 EXTI15_10 = 40,
63 EXTI2 = 8,
64 EXTI3 = 9,
65 EXTI4 = 10,
66 EXTI9_5 = 23,
67 FLASH = 4,
68 FMC = 48,
69 FPU = 81,
70 GFXMMU = 93,
71 I2C1_ER = 32,
72 I2C1_EV = 31,
73 I2C2_ER = 34,
74 I2C2_EV = 33,
75 I2C3_ER = 73,
76 I2C3_EV = 72,
77 I2C4_ER = 83,
78 I2C4_EV = 84,
79 LPTIM1 = 65,
80 LPTIM2 = 66,
81 LPUART1 = 70,
82 LTDC = 91,
83 LTDC_ER = 92,
84 OCTOSPI1 = 71,
85 OCTOSPI2 = 76,
86 OTG_FS = 67,
87 PVD_PVM = 1,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 TAMP_STAMP = 2,
99 TIM1_BRK_TIM15 = 24,
100 TIM1_CC = 27,
101 TIM1_TRG_COM_TIM17 = 26,
102 TIM1_UP_TIM16 = 25,
103 TIM2 = 28,
104 TIM3 = 29,
105 TIM4 = 30,
106 TIM5 = 50,
107 TIM6_DAC = 54,
108 TIM7 = 55,
109 TIM8_BRK = 43,
110 TIM8_CC = 46,
111 TIM8_TRG_COM = 45,
112 TIM8_UP = 44,
113 TSC = 77,
114 UART4 = 52,
115 UART5 = 53,
116 USART1 = 37,
117 USART2 = 38,
118 USART3 = 39,
119 WWDG = 0,
120 }
121 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
122 #[inline(always)]
123 fn number(self) -> u16 {
124 self as u16
125 }
126 }
127
128 declare!(ADC1);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(CRS);
135 declare!(DCMI);
136 declare!(DFSDM1_FLT0);
137 declare!(DFSDM1_FLT1);
138 declare!(DFSDM1_FLT2);
139 declare!(DFSDM1_FLT3);
140 declare!(DMA1_Channel1);
141 declare!(DMA1_Channel2);
142 declare!(DMA1_Channel3);
143 declare!(DMA1_Channel4);
144 declare!(DMA1_Channel5);
145 declare!(DMA1_Channel6);
146 declare!(DMA1_Channel7);
147 declare!(DMA2D);
148 declare!(DMA2_Channel1);
149 declare!(DMA2_Channel2);
150 declare!(DMA2_Channel3);
151 declare!(DMA2_Channel4);
152 declare!(DMA2_Channel5);
153 declare!(DMA2_Channel6);
154 declare!(DMA2_Channel7);
155 declare!(DMAMUX1_OVR);
156 declare!(DSI);
157 declare!(EXTI0);
158 declare!(EXTI1);
159 declare!(EXTI15_10);
160 declare!(EXTI2);
161 declare!(EXTI3);
162 declare!(EXTI4);
163 declare!(EXTI9_5);
164 declare!(FLASH);
165 declare!(FMC);
166 declare!(FPU);
167 declare!(GFXMMU);
168 declare!(I2C1_ER);
169 declare!(I2C1_EV);
170 declare!(I2C2_ER);
171 declare!(I2C2_EV);
172 declare!(I2C3_ER);
173 declare!(I2C3_EV);
174 declare!(I2C4_ER);
175 declare!(I2C4_EV);
176 declare!(LPTIM1);
177 declare!(LPTIM2);
178 declare!(LPUART1);
179 declare!(LTDC);
180 declare!(LTDC_ER);
181 declare!(OCTOSPI1);
182 declare!(OCTOSPI2);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(RCC);
186 declare!(RNG);
187 declare!(RTC_Alarm);
188 declare!(RTC_WKUP);
189 declare!(SAI1);
190 declare!(SAI2);
191 declare!(SDMMC1);
192 declare!(SPI1);
193 declare!(SPI2);
194 declare!(SPI3);
195 declare!(TAMP_STAMP);
196 declare!(TIM1_BRK_TIM15);
197 declare!(TIM1_CC);
198 declare!(TIM1_TRG_COM_TIM17);
199 declare!(TIM1_UP_TIM16);
200 declare!(TIM2);
201 declare!(TIM3);
202 declare!(TIM4);
203 declare!(TIM5);
204 declare!(TIM6_DAC);
205 declare!(TIM7);
206 declare!(TIM8_BRK);
207 declare!(TIM8_CC);
208 declare!(TIM8_TRG_COM);
209 declare!(TIM8_UP);
210 declare!(TSC);
211 declare!(UART4);
212 declare!(UART5);
213 declare!(USART1);
214 declare!(USART2);
215 declare!(USART3);
216 declare!(WWDG);
217}
218mod interrupt_vector {
219 extern "C" {
220 fn ADC1();
221 fn CAN1_RX0();
222 fn CAN1_RX1();
223 fn CAN1_SCE();
224 fn CAN1_TX();
225 fn COMP();
226 fn CRS();
227 fn DCMI();
228 fn DFSDM1_FLT0();
229 fn DFSDM1_FLT1();
230 fn DFSDM1_FLT2();
231 fn DFSDM1_FLT3();
232 fn DMA1_Channel1();
233 fn DMA1_Channel2();
234 fn DMA1_Channel3();
235 fn DMA1_Channel4();
236 fn DMA1_Channel5();
237 fn DMA1_Channel6();
238 fn DMA1_Channel7();
239 fn DMA2D();
240 fn DMA2_Channel1();
241 fn DMA2_Channel2();
242 fn DMA2_Channel3();
243 fn DMA2_Channel4();
244 fn DMA2_Channel5();
245 fn DMA2_Channel6();
246 fn DMA2_Channel7();
247 fn DMAMUX1_OVR();
248 fn DSI();
249 fn EXTI0();
250 fn EXTI1();
251 fn EXTI15_10();
252 fn EXTI2();
253 fn EXTI3();
254 fn EXTI4();
255 fn EXTI9_5();
256 fn FLASH();
257 fn FMC();
258 fn FPU();
259 fn GFXMMU();
260 fn I2C1_ER();
261 fn I2C1_EV();
262 fn I2C2_ER();
263 fn I2C2_EV();
264 fn I2C3_ER();
265 fn I2C3_EV();
266 fn I2C4_ER();
267 fn I2C4_EV();
268 fn LPTIM1();
269 fn LPTIM2();
270 fn LPUART1();
271 fn LTDC();
272 fn LTDC_ER();
273 fn OCTOSPI1();
274 fn OCTOSPI2();
275 fn OTG_FS();
276 fn PVD_PVM();
277 fn RCC();
278 fn RNG();
279 fn RTC_Alarm();
280 fn RTC_WKUP();
281 fn SAI1();
282 fn SAI2();
283 fn SDMMC1();
284 fn SPI1();
285 fn SPI2();
286 fn SPI3();
287 fn TAMP_STAMP();
288 fn TIM1_BRK_TIM15();
289 fn TIM1_CC();
290 fn TIM1_TRG_COM_TIM17();
291 fn TIM1_UP_TIM16();
292 fn TIM2();
293 fn TIM3();
294 fn TIM4();
295 fn TIM5();
296 fn TIM6_DAC();
297 fn TIM7();
298 fn TIM8_BRK();
299 fn TIM8_CC();
300 fn TIM8_TRG_COM();
301 fn TIM8_UP();
302 fn TSC();
303 fn UART4();
304 fn UART5();
305 fn USART1();
306 fn USART2();
307 fn USART3();
308 fn WWDG();
309 }
310 pub union Vector {
311 _handler: unsafe extern "C" fn(),
312 _reserved: u32,
313 }
314 #[link_section = ".vector_table.interrupts"]
315 #[no_mangle]
316 pub static __INTERRUPTS: [Vector; 95] = [
317 Vector { _handler: WWDG },
318 Vector { _handler: PVD_PVM },
319 Vector {
320 _handler: TAMP_STAMP,
321 },
322 Vector { _handler: RTC_WKUP },
323 Vector { _handler: FLASH },
324 Vector { _handler: RCC },
325 Vector { _handler: EXTI0 },
326 Vector { _handler: EXTI1 },
327 Vector { _handler: EXTI2 },
328 Vector { _handler: EXTI3 },
329 Vector { _handler: EXTI4 },
330 Vector {
331 _handler: DMA1_Channel1,
332 },
333 Vector {
334 _handler: DMA1_Channel2,
335 },
336 Vector {
337 _handler: DMA1_Channel3,
338 },
339 Vector {
340 _handler: DMA1_Channel4,
341 },
342 Vector {
343 _handler: DMA1_Channel5,
344 },
345 Vector {
346 _handler: DMA1_Channel6,
347 },
348 Vector {
349 _handler: DMA1_Channel7,
350 },
351 Vector { _handler: ADC1 },
352 Vector { _handler: CAN1_TX },
353 Vector { _handler: CAN1_RX0 },
354 Vector { _handler: CAN1_RX1 },
355 Vector { _handler: CAN1_SCE },
356 Vector { _handler: EXTI9_5 },
357 Vector {
358 _handler: TIM1_BRK_TIM15,
359 },
360 Vector {
361 _handler: TIM1_UP_TIM16,
362 },
363 Vector {
364 _handler: TIM1_TRG_COM_TIM17,
365 },
366 Vector { _handler: TIM1_CC },
367 Vector { _handler: TIM2 },
368 Vector { _handler: TIM3 },
369 Vector { _handler: TIM4 },
370 Vector { _handler: I2C1_EV },
371 Vector { _handler: I2C1_ER },
372 Vector { _handler: I2C2_EV },
373 Vector { _handler: I2C2_ER },
374 Vector { _handler: SPI1 },
375 Vector { _handler: SPI2 },
376 Vector { _handler: USART1 },
377 Vector { _handler: USART2 },
378 Vector { _handler: USART3 },
379 Vector {
380 _handler: EXTI15_10,
381 },
382 Vector {
383 _handler: RTC_Alarm,
384 },
385 Vector {
386 _handler: DFSDM1_FLT3,
387 },
388 Vector { _handler: TIM8_BRK },
389 Vector { _handler: TIM8_UP },
390 Vector {
391 _handler: TIM8_TRG_COM,
392 },
393 Vector { _handler: TIM8_CC },
394 Vector { _reserved: 0 },
395 Vector { _handler: FMC },
396 Vector { _handler: SDMMC1 },
397 Vector { _handler: TIM5 },
398 Vector { _handler: SPI3 },
399 Vector { _handler: UART4 },
400 Vector { _handler: UART5 },
401 Vector { _handler: TIM6_DAC },
402 Vector { _handler: TIM7 },
403 Vector {
404 _handler: DMA2_Channel1,
405 },
406 Vector {
407 _handler: DMA2_Channel2,
408 },
409 Vector {
410 _handler: DMA2_Channel3,
411 },
412 Vector {
413 _handler: DMA2_Channel4,
414 },
415 Vector {
416 _handler: DMA2_Channel5,
417 },
418 Vector {
419 _handler: DFSDM1_FLT0,
420 },
421 Vector {
422 _handler: DFSDM1_FLT1,
423 },
424 Vector {
425 _handler: DFSDM1_FLT2,
426 },
427 Vector { _handler: COMP },
428 Vector { _handler: LPTIM1 },
429 Vector { _handler: LPTIM2 },
430 Vector { _handler: OTG_FS },
431 Vector {
432 _handler: DMA2_Channel6,
433 },
434 Vector {
435 _handler: DMA2_Channel7,
436 },
437 Vector { _handler: LPUART1 },
438 Vector { _handler: OCTOSPI1 },
439 Vector { _handler: I2C3_EV },
440 Vector { _handler: I2C3_ER },
441 Vector { _handler: SAI1 },
442 Vector { _handler: SAI2 },
443 Vector { _handler: OCTOSPI2 },
444 Vector { _handler: TSC },
445 Vector { _handler: DSI },
446 Vector { _reserved: 0 },
447 Vector { _handler: RNG },
448 Vector { _handler: FPU },
449 Vector { _handler: CRS },
450 Vector { _handler: I2C4_ER },
451 Vector { _handler: I2C4_EV },
452 Vector { _handler: DCMI },
453 Vector { _reserved: 0 },
454 Vector { _reserved: 0 },
455 Vector { _reserved: 0 },
456 Vector { _reserved: 0 },
457 Vector { _handler: DMA2D },
458 Vector { _handler: LTDC },
459 Vector { _handler: LTDC_ER },
460 Vector { _handler: GFXMMU },
461 Vector {
462 _handler: DMAMUX1_OVR,
463 },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r9zg.rs b/embassy-stm32/src/chip/stm32l4r9zg.rs
index d0f3be660..9d994d7a1 100644
--- a/embassy-stm32/src/chip/stm32l4r9zg.rs
+++ b/embassy-stm32/src/chip/stm32l4r9zg.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,454 @@ peripherals!(
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 DSI = 78,
60 EXTI0 = 6,
61 EXTI1 = 7,
62 EXTI15_10 = 40,
63 EXTI2 = 8,
64 EXTI3 = 9,
65 EXTI4 = 10,
66 EXTI9_5 = 23,
67 FLASH = 4,
68 FMC = 48,
69 FPU = 81,
70 GFXMMU = 93,
71 I2C1_ER = 32,
72 I2C1_EV = 31,
73 I2C2_ER = 34,
74 I2C2_EV = 33,
75 I2C3_ER = 73,
76 I2C3_EV = 72,
77 I2C4_ER = 83,
78 I2C4_EV = 84,
79 LPTIM1 = 65,
80 LPTIM2 = 66,
81 LPUART1 = 70,
82 LTDC = 91,
83 LTDC_ER = 92,
84 OCTOSPI1 = 71,
85 OCTOSPI2 = 76,
86 OTG_FS = 67,
87 PVD_PVM = 1,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 TAMP_STAMP = 2,
99 TIM1_BRK_TIM15 = 24,
100 TIM1_CC = 27,
101 TIM1_TRG_COM_TIM17 = 26,
102 TIM1_UP_TIM16 = 25,
103 TIM2 = 28,
104 TIM3 = 29,
105 TIM4 = 30,
106 TIM5 = 50,
107 TIM6_DAC = 54,
108 TIM7 = 55,
109 TIM8_BRK = 43,
110 TIM8_CC = 46,
111 TIM8_TRG_COM = 45,
112 TIM8_UP = 44,
113 TSC = 77,
114 UART4 = 52,
115 UART5 = 53,
116 USART1 = 37,
117 USART2 = 38,
118 USART3 = 39,
119 WWDG = 0,
120 }
121 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
122 #[inline(always)]
123 fn number(self) -> u16 {
124 self as u16
125 }
126 }
127
128 declare!(ADC1);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(CRS);
135 declare!(DCMI);
136 declare!(DFSDM1_FLT0);
137 declare!(DFSDM1_FLT1);
138 declare!(DFSDM1_FLT2);
139 declare!(DFSDM1_FLT3);
140 declare!(DMA1_Channel1);
141 declare!(DMA1_Channel2);
142 declare!(DMA1_Channel3);
143 declare!(DMA1_Channel4);
144 declare!(DMA1_Channel5);
145 declare!(DMA1_Channel6);
146 declare!(DMA1_Channel7);
147 declare!(DMA2D);
148 declare!(DMA2_Channel1);
149 declare!(DMA2_Channel2);
150 declare!(DMA2_Channel3);
151 declare!(DMA2_Channel4);
152 declare!(DMA2_Channel5);
153 declare!(DMA2_Channel6);
154 declare!(DMA2_Channel7);
155 declare!(DMAMUX1_OVR);
156 declare!(DSI);
157 declare!(EXTI0);
158 declare!(EXTI1);
159 declare!(EXTI15_10);
160 declare!(EXTI2);
161 declare!(EXTI3);
162 declare!(EXTI4);
163 declare!(EXTI9_5);
164 declare!(FLASH);
165 declare!(FMC);
166 declare!(FPU);
167 declare!(GFXMMU);
168 declare!(I2C1_ER);
169 declare!(I2C1_EV);
170 declare!(I2C2_ER);
171 declare!(I2C2_EV);
172 declare!(I2C3_ER);
173 declare!(I2C3_EV);
174 declare!(I2C4_ER);
175 declare!(I2C4_EV);
176 declare!(LPTIM1);
177 declare!(LPTIM2);
178 declare!(LPUART1);
179 declare!(LTDC);
180 declare!(LTDC_ER);
181 declare!(OCTOSPI1);
182 declare!(OCTOSPI2);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(RCC);
186 declare!(RNG);
187 declare!(RTC_Alarm);
188 declare!(RTC_WKUP);
189 declare!(SAI1);
190 declare!(SAI2);
191 declare!(SDMMC1);
192 declare!(SPI1);
193 declare!(SPI2);
194 declare!(SPI3);
195 declare!(TAMP_STAMP);
196 declare!(TIM1_BRK_TIM15);
197 declare!(TIM1_CC);
198 declare!(TIM1_TRG_COM_TIM17);
199 declare!(TIM1_UP_TIM16);
200 declare!(TIM2);
201 declare!(TIM3);
202 declare!(TIM4);
203 declare!(TIM5);
204 declare!(TIM6_DAC);
205 declare!(TIM7);
206 declare!(TIM8_BRK);
207 declare!(TIM8_CC);
208 declare!(TIM8_TRG_COM);
209 declare!(TIM8_UP);
210 declare!(TSC);
211 declare!(UART4);
212 declare!(UART5);
213 declare!(USART1);
214 declare!(USART2);
215 declare!(USART3);
216 declare!(WWDG);
217}
218mod interrupt_vector {
219 extern "C" {
220 fn ADC1();
221 fn CAN1_RX0();
222 fn CAN1_RX1();
223 fn CAN1_SCE();
224 fn CAN1_TX();
225 fn COMP();
226 fn CRS();
227 fn DCMI();
228 fn DFSDM1_FLT0();
229 fn DFSDM1_FLT1();
230 fn DFSDM1_FLT2();
231 fn DFSDM1_FLT3();
232 fn DMA1_Channel1();
233 fn DMA1_Channel2();
234 fn DMA1_Channel3();
235 fn DMA1_Channel4();
236 fn DMA1_Channel5();
237 fn DMA1_Channel6();
238 fn DMA1_Channel7();
239 fn DMA2D();
240 fn DMA2_Channel1();
241 fn DMA2_Channel2();
242 fn DMA2_Channel3();
243 fn DMA2_Channel4();
244 fn DMA2_Channel5();
245 fn DMA2_Channel6();
246 fn DMA2_Channel7();
247 fn DMAMUX1_OVR();
248 fn DSI();
249 fn EXTI0();
250 fn EXTI1();
251 fn EXTI15_10();
252 fn EXTI2();
253 fn EXTI3();
254 fn EXTI4();
255 fn EXTI9_5();
256 fn FLASH();
257 fn FMC();
258 fn FPU();
259 fn GFXMMU();
260 fn I2C1_ER();
261 fn I2C1_EV();
262 fn I2C2_ER();
263 fn I2C2_EV();
264 fn I2C3_ER();
265 fn I2C3_EV();
266 fn I2C4_ER();
267 fn I2C4_EV();
268 fn LPTIM1();
269 fn LPTIM2();
270 fn LPUART1();
271 fn LTDC();
272 fn LTDC_ER();
273 fn OCTOSPI1();
274 fn OCTOSPI2();
275 fn OTG_FS();
276 fn PVD_PVM();
277 fn RCC();
278 fn RNG();
279 fn RTC_Alarm();
280 fn RTC_WKUP();
281 fn SAI1();
282 fn SAI2();
283 fn SDMMC1();
284 fn SPI1();
285 fn SPI2();
286 fn SPI3();
287 fn TAMP_STAMP();
288 fn TIM1_BRK_TIM15();
289 fn TIM1_CC();
290 fn TIM1_TRG_COM_TIM17();
291 fn TIM1_UP_TIM16();
292 fn TIM2();
293 fn TIM3();
294 fn TIM4();
295 fn TIM5();
296 fn TIM6_DAC();
297 fn TIM7();
298 fn TIM8_BRK();
299 fn TIM8_CC();
300 fn TIM8_TRG_COM();
301 fn TIM8_UP();
302 fn TSC();
303 fn UART4();
304 fn UART5();
305 fn USART1();
306 fn USART2();
307 fn USART3();
308 fn WWDG();
309 }
310 pub union Vector {
311 _handler: unsafe extern "C" fn(),
312 _reserved: u32,
313 }
314 #[link_section = ".vector_table.interrupts"]
315 #[no_mangle]
316 pub static __INTERRUPTS: [Vector; 95] = [
317 Vector { _handler: WWDG },
318 Vector { _handler: PVD_PVM },
319 Vector {
320 _handler: TAMP_STAMP,
321 },
322 Vector { _handler: RTC_WKUP },
323 Vector { _handler: FLASH },
324 Vector { _handler: RCC },
325 Vector { _handler: EXTI0 },
326 Vector { _handler: EXTI1 },
327 Vector { _handler: EXTI2 },
328 Vector { _handler: EXTI3 },
329 Vector { _handler: EXTI4 },
330 Vector {
331 _handler: DMA1_Channel1,
332 },
333 Vector {
334 _handler: DMA1_Channel2,
335 },
336 Vector {
337 _handler: DMA1_Channel3,
338 },
339 Vector {
340 _handler: DMA1_Channel4,
341 },
342 Vector {
343 _handler: DMA1_Channel5,
344 },
345 Vector {
346 _handler: DMA1_Channel6,
347 },
348 Vector {
349 _handler: DMA1_Channel7,
350 },
351 Vector { _handler: ADC1 },
352 Vector { _handler: CAN1_TX },
353 Vector { _handler: CAN1_RX0 },
354 Vector { _handler: CAN1_RX1 },
355 Vector { _handler: CAN1_SCE },
356 Vector { _handler: EXTI9_5 },
357 Vector {
358 _handler: TIM1_BRK_TIM15,
359 },
360 Vector {
361 _handler: TIM1_UP_TIM16,
362 },
363 Vector {
364 _handler: TIM1_TRG_COM_TIM17,
365 },
366 Vector { _handler: TIM1_CC },
367 Vector { _handler: TIM2 },
368 Vector { _handler: TIM3 },
369 Vector { _handler: TIM4 },
370 Vector { _handler: I2C1_EV },
371 Vector { _handler: I2C1_ER },
372 Vector { _handler: I2C2_EV },
373 Vector { _handler: I2C2_ER },
374 Vector { _handler: SPI1 },
375 Vector { _handler: SPI2 },
376 Vector { _handler: USART1 },
377 Vector { _handler: USART2 },
378 Vector { _handler: USART3 },
379 Vector {
380 _handler: EXTI15_10,
381 },
382 Vector {
383 _handler: RTC_Alarm,
384 },
385 Vector {
386 _handler: DFSDM1_FLT3,
387 },
388 Vector { _handler: TIM8_BRK },
389 Vector { _handler: TIM8_UP },
390 Vector {
391 _handler: TIM8_TRG_COM,
392 },
393 Vector { _handler: TIM8_CC },
394 Vector { _reserved: 0 },
395 Vector { _handler: FMC },
396 Vector { _handler: SDMMC1 },
397 Vector { _handler: TIM5 },
398 Vector { _handler: SPI3 },
399 Vector { _handler: UART4 },
400 Vector { _handler: UART5 },
401 Vector { _handler: TIM6_DAC },
402 Vector { _handler: TIM7 },
403 Vector {
404 _handler: DMA2_Channel1,
405 },
406 Vector {
407 _handler: DMA2_Channel2,
408 },
409 Vector {
410 _handler: DMA2_Channel3,
411 },
412 Vector {
413 _handler: DMA2_Channel4,
414 },
415 Vector {
416 _handler: DMA2_Channel5,
417 },
418 Vector {
419 _handler: DFSDM1_FLT0,
420 },
421 Vector {
422 _handler: DFSDM1_FLT1,
423 },
424 Vector {
425 _handler: DFSDM1_FLT2,
426 },
427 Vector { _handler: COMP },
428 Vector { _handler: LPTIM1 },
429 Vector { _handler: LPTIM2 },
430 Vector { _handler: OTG_FS },
431 Vector {
432 _handler: DMA2_Channel6,
433 },
434 Vector {
435 _handler: DMA2_Channel7,
436 },
437 Vector { _handler: LPUART1 },
438 Vector { _handler: OCTOSPI1 },
439 Vector { _handler: I2C3_EV },
440 Vector { _handler: I2C3_ER },
441 Vector { _handler: SAI1 },
442 Vector { _handler: SAI2 },
443 Vector { _handler: OCTOSPI2 },
444 Vector { _handler: TSC },
445 Vector { _handler: DSI },
446 Vector { _reserved: 0 },
447 Vector { _handler: RNG },
448 Vector { _handler: FPU },
449 Vector { _handler: CRS },
450 Vector { _handler: I2C4_ER },
451 Vector { _handler: I2C4_EV },
452 Vector { _handler: DCMI },
453 Vector { _reserved: 0 },
454 Vector { _reserved: 0 },
455 Vector { _reserved: 0 },
456 Vector { _reserved: 0 },
457 Vector { _handler: DMA2D },
458 Vector { _handler: LTDC },
459 Vector { _handler: LTDC_ER },
460 Vector { _handler: GFXMMU },
461 Vector {
462 _handler: DMAMUX1_OVR,
463 },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4r9zi.rs b/embassy-stm32/src/chip/stm32l4r9zi.rs
index d0f3be660..9d994d7a1 100644
--- a/embassy-stm32/src/chip/stm32l4r9zi.rs
+++ b/embassy-stm32/src/chip/stm32l4r9zi.rs
@@ -1,11 +1,11 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, PA2, 4 EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1,
5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, 5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3,
6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, 6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5,
7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, 7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7,
8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
@@ -15,8 +15,454 @@ peripherals!(
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 CAN1_RX0 = 20,
33 CAN1_RX1 = 21,
34 CAN1_SCE = 22,
35 CAN1_TX = 19,
36 COMP = 64,
37 CRS = 82,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 DSI = 78,
60 EXTI0 = 6,
61 EXTI1 = 7,
62 EXTI15_10 = 40,
63 EXTI2 = 8,
64 EXTI3 = 9,
65 EXTI4 = 10,
66 EXTI9_5 = 23,
67 FLASH = 4,
68 FMC = 48,
69 FPU = 81,
70 GFXMMU = 93,
71 I2C1_ER = 32,
72 I2C1_EV = 31,
73 I2C2_ER = 34,
74 I2C2_EV = 33,
75 I2C3_ER = 73,
76 I2C3_EV = 72,
77 I2C4_ER = 83,
78 I2C4_EV = 84,
79 LPTIM1 = 65,
80 LPTIM2 = 66,
81 LPUART1 = 70,
82 LTDC = 91,
83 LTDC_ER = 92,
84 OCTOSPI1 = 71,
85 OCTOSPI2 = 76,
86 OTG_FS = 67,
87 PVD_PVM = 1,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 TAMP_STAMP = 2,
99 TIM1_BRK_TIM15 = 24,
100 TIM1_CC = 27,
101 TIM1_TRG_COM_TIM17 = 26,
102 TIM1_UP_TIM16 = 25,
103 TIM2 = 28,
104 TIM3 = 29,
105 TIM4 = 30,
106 TIM5 = 50,
107 TIM6_DAC = 54,
108 TIM7 = 55,
109 TIM8_BRK = 43,
110 TIM8_CC = 46,
111 TIM8_TRG_COM = 45,
112 TIM8_UP = 44,
113 TSC = 77,
114 UART4 = 52,
115 UART5 = 53,
116 USART1 = 37,
117 USART2 = 38,
118 USART3 = 39,
119 WWDG = 0,
120 }
121 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
122 #[inline(always)]
123 fn number(self) -> u16 {
124 self as u16
125 }
126 }
127
128 declare!(ADC1);
129 declare!(CAN1_RX0);
130 declare!(CAN1_RX1);
131 declare!(CAN1_SCE);
132 declare!(CAN1_TX);
133 declare!(COMP);
134 declare!(CRS);
135 declare!(DCMI);
136 declare!(DFSDM1_FLT0);
137 declare!(DFSDM1_FLT1);
138 declare!(DFSDM1_FLT2);
139 declare!(DFSDM1_FLT3);
140 declare!(DMA1_Channel1);
141 declare!(DMA1_Channel2);
142 declare!(DMA1_Channel3);
143 declare!(DMA1_Channel4);
144 declare!(DMA1_Channel5);
145 declare!(DMA1_Channel6);
146 declare!(DMA1_Channel7);
147 declare!(DMA2D);
148 declare!(DMA2_Channel1);
149 declare!(DMA2_Channel2);
150 declare!(DMA2_Channel3);
151 declare!(DMA2_Channel4);
152 declare!(DMA2_Channel5);
153 declare!(DMA2_Channel6);
154 declare!(DMA2_Channel7);
155 declare!(DMAMUX1_OVR);
156 declare!(DSI);
157 declare!(EXTI0);
158 declare!(EXTI1);
159 declare!(EXTI15_10);
160 declare!(EXTI2);
161 declare!(EXTI3);
162 declare!(EXTI4);
163 declare!(EXTI9_5);
164 declare!(FLASH);
165 declare!(FMC);
166 declare!(FPU);
167 declare!(GFXMMU);
168 declare!(I2C1_ER);
169 declare!(I2C1_EV);
170 declare!(I2C2_ER);
171 declare!(I2C2_EV);
172 declare!(I2C3_ER);
173 declare!(I2C3_EV);
174 declare!(I2C4_ER);
175 declare!(I2C4_EV);
176 declare!(LPTIM1);
177 declare!(LPTIM2);
178 declare!(LPUART1);
179 declare!(LTDC);
180 declare!(LTDC_ER);
181 declare!(OCTOSPI1);
182 declare!(OCTOSPI2);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(RCC);
186 declare!(RNG);
187 declare!(RTC_Alarm);
188 declare!(RTC_WKUP);
189 declare!(SAI1);
190 declare!(SAI2);
191 declare!(SDMMC1);
192 declare!(SPI1);
193 declare!(SPI2);
194 declare!(SPI3);
195 declare!(TAMP_STAMP);
196 declare!(TIM1_BRK_TIM15);
197 declare!(TIM1_CC);
198 declare!(TIM1_TRG_COM_TIM17);
199 declare!(TIM1_UP_TIM16);
200 declare!(TIM2);
201 declare!(TIM3);
202 declare!(TIM4);
203 declare!(TIM5);
204 declare!(TIM6_DAC);
205 declare!(TIM7);
206 declare!(TIM8_BRK);
207 declare!(TIM8_CC);
208 declare!(TIM8_TRG_COM);
209 declare!(TIM8_UP);
210 declare!(TSC);
211 declare!(UART4);
212 declare!(UART5);
213 declare!(USART1);
214 declare!(USART2);
215 declare!(USART3);
216 declare!(WWDG);
217}
218mod interrupt_vector {
219 extern "C" {
220 fn ADC1();
221 fn CAN1_RX0();
222 fn CAN1_RX1();
223 fn CAN1_SCE();
224 fn CAN1_TX();
225 fn COMP();
226 fn CRS();
227 fn DCMI();
228 fn DFSDM1_FLT0();
229 fn DFSDM1_FLT1();
230 fn DFSDM1_FLT2();
231 fn DFSDM1_FLT3();
232 fn DMA1_Channel1();
233 fn DMA1_Channel2();
234 fn DMA1_Channel3();
235 fn DMA1_Channel4();
236 fn DMA1_Channel5();
237 fn DMA1_Channel6();
238 fn DMA1_Channel7();
239 fn DMA2D();
240 fn DMA2_Channel1();
241 fn DMA2_Channel2();
242 fn DMA2_Channel3();
243 fn DMA2_Channel4();
244 fn DMA2_Channel5();
245 fn DMA2_Channel6();
246 fn DMA2_Channel7();
247 fn DMAMUX1_OVR();
248 fn DSI();
249 fn EXTI0();
250 fn EXTI1();
251 fn EXTI15_10();
252 fn EXTI2();
253 fn EXTI3();
254 fn EXTI4();
255 fn EXTI9_5();
256 fn FLASH();
257 fn FMC();
258 fn FPU();
259 fn GFXMMU();
260 fn I2C1_ER();
261 fn I2C1_EV();
262 fn I2C2_ER();
263 fn I2C2_EV();
264 fn I2C3_ER();
265 fn I2C3_EV();
266 fn I2C4_ER();
267 fn I2C4_EV();
268 fn LPTIM1();
269 fn LPTIM2();
270 fn LPUART1();
271 fn LTDC();
272 fn LTDC_ER();
273 fn OCTOSPI1();
274 fn OCTOSPI2();
275 fn OTG_FS();
276 fn PVD_PVM();
277 fn RCC();
278 fn RNG();
279 fn RTC_Alarm();
280 fn RTC_WKUP();
281 fn SAI1();
282 fn SAI2();
283 fn SDMMC1();
284 fn SPI1();
285 fn SPI2();
286 fn SPI3();
287 fn TAMP_STAMP();
288 fn TIM1_BRK_TIM15();
289 fn TIM1_CC();
290 fn TIM1_TRG_COM_TIM17();
291 fn TIM1_UP_TIM16();
292 fn TIM2();
293 fn TIM3();
294 fn TIM4();
295 fn TIM5();
296 fn TIM6_DAC();
297 fn TIM7();
298 fn TIM8_BRK();
299 fn TIM8_CC();
300 fn TIM8_TRG_COM();
301 fn TIM8_UP();
302 fn TSC();
303 fn UART4();
304 fn UART5();
305 fn USART1();
306 fn USART2();
307 fn USART3();
308 fn WWDG();
309 }
310 pub union Vector {
311 _handler: unsafe extern "C" fn(),
312 _reserved: u32,
313 }
314 #[link_section = ".vector_table.interrupts"]
315 #[no_mangle]
316 pub static __INTERRUPTS: [Vector; 95] = [
317 Vector { _handler: WWDG },
318 Vector { _handler: PVD_PVM },
319 Vector {
320 _handler: TAMP_STAMP,
321 },
322 Vector { _handler: RTC_WKUP },
323 Vector { _handler: FLASH },
324 Vector { _handler: RCC },
325 Vector { _handler: EXTI0 },
326 Vector { _handler: EXTI1 },
327 Vector { _handler: EXTI2 },
328 Vector { _handler: EXTI3 },
329 Vector { _handler: EXTI4 },
330 Vector {
331 _handler: DMA1_Channel1,
332 },
333 Vector {
334 _handler: DMA1_Channel2,
335 },
336 Vector {
337 _handler: DMA1_Channel3,
338 },
339 Vector {
340 _handler: DMA1_Channel4,
341 },
342 Vector {
343 _handler: DMA1_Channel5,
344 },
345 Vector {
346 _handler: DMA1_Channel6,
347 },
348 Vector {
349 _handler: DMA1_Channel7,
350 },
351 Vector { _handler: ADC1 },
352 Vector { _handler: CAN1_TX },
353 Vector { _handler: CAN1_RX0 },
354 Vector { _handler: CAN1_RX1 },
355 Vector { _handler: CAN1_SCE },
356 Vector { _handler: EXTI9_5 },
357 Vector {
358 _handler: TIM1_BRK_TIM15,
359 },
360 Vector {
361 _handler: TIM1_UP_TIM16,
362 },
363 Vector {
364 _handler: TIM1_TRG_COM_TIM17,
365 },
366 Vector { _handler: TIM1_CC },
367 Vector { _handler: TIM2 },
368 Vector { _handler: TIM3 },
369 Vector { _handler: TIM4 },
370 Vector { _handler: I2C1_EV },
371 Vector { _handler: I2C1_ER },
372 Vector { _handler: I2C2_EV },
373 Vector { _handler: I2C2_ER },
374 Vector { _handler: SPI1 },
375 Vector { _handler: SPI2 },
376 Vector { _handler: USART1 },
377 Vector { _handler: USART2 },
378 Vector { _handler: USART3 },
379 Vector {
380 _handler: EXTI15_10,
381 },
382 Vector {
383 _handler: RTC_Alarm,
384 },
385 Vector {
386 _handler: DFSDM1_FLT3,
387 },
388 Vector { _handler: TIM8_BRK },
389 Vector { _handler: TIM8_UP },
390 Vector {
391 _handler: TIM8_TRG_COM,
392 },
393 Vector { _handler: TIM8_CC },
394 Vector { _reserved: 0 },
395 Vector { _handler: FMC },
396 Vector { _handler: SDMMC1 },
397 Vector { _handler: TIM5 },
398 Vector { _handler: SPI3 },
399 Vector { _handler: UART4 },
400 Vector { _handler: UART5 },
401 Vector { _handler: TIM6_DAC },
402 Vector { _handler: TIM7 },
403 Vector {
404 _handler: DMA2_Channel1,
405 },
406 Vector {
407 _handler: DMA2_Channel2,
408 },
409 Vector {
410 _handler: DMA2_Channel3,
411 },
412 Vector {
413 _handler: DMA2_Channel4,
414 },
415 Vector {
416 _handler: DMA2_Channel5,
417 },
418 Vector {
419 _handler: DFSDM1_FLT0,
420 },
421 Vector {
422 _handler: DFSDM1_FLT1,
423 },
424 Vector {
425 _handler: DFSDM1_FLT2,
426 },
427 Vector { _handler: COMP },
428 Vector { _handler: LPTIM1 },
429 Vector { _handler: LPTIM2 },
430 Vector { _handler: OTG_FS },
431 Vector {
432 _handler: DMA2_Channel6,
433 },
434 Vector {
435 _handler: DMA2_Channel7,
436 },
437 Vector { _handler: LPUART1 },
438 Vector { _handler: OCTOSPI1 },
439 Vector { _handler: I2C3_EV },
440 Vector { _handler: I2C3_ER },
441 Vector { _handler: SAI1 },
442 Vector { _handler: SAI2 },
443 Vector { _handler: OCTOSPI2 },
444 Vector { _handler: TSC },
445 Vector { _handler: DSI },
446 Vector { _reserved: 0 },
447 Vector { _handler: RNG },
448 Vector { _handler: FPU },
449 Vector { _handler: CRS },
450 Vector { _handler: I2C4_ER },
451 Vector { _handler: I2C4_EV },
452 Vector { _handler: DCMI },
453 Vector { _reserved: 0 },
454 Vector { _reserved: 0 },
455 Vector { _reserved: 0 },
456 Vector { _reserved: 0 },
457 Vector { _handler: DMA2D },
458 Vector { _handler: LTDC },
459 Vector { _handler: LTDC_ER },
460 Vector { _handler: GFXMMU },
461 Vector {
462 _handler: DMAMUX1_OVR,
463 },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4s5ai.rs b/embassy-stm32/src/chip/stm32l4s5ai.rs
index 88d4b7bc6..cac7ba52a 100644
--- a/embassy-stm32/src/chip/stm32l4s5ai.rs
+++ b/embassy-stm32/src/chip/stm32l4s5ai.rs
@@ -1,22 +1,459 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2,
14 OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, 14 OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1,
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 HASH_CRS = 82,
70 I2C1_ER = 32,
71 I2C1_EV = 31,
72 I2C2_ER = 34,
73 I2C2_EV = 33,
74 I2C3_ER = 73,
75 I2C3_EV = 72,
76 I2C4_ER = 83,
77 I2C4_EV = 84,
78 LPTIM1 = 65,
79 LPTIM2 = 66,
80 LPUART1 = 70,
81 OCTOSPI1 = 71,
82 OCTOSPI2 = 76,
83 OTG_FS = 67,
84 PVD_PVM = 1,
85 RCC = 5,
86 RNG = 80,
87 RTC_Alarm = 41,
88 RTC_WKUP = 3,
89 SAI1 = 74,
90 SAI2 = 75,
91 SDMMC1 = 49,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1);
126 declare!(AES);
127 declare!(CAN1_RX0);
128 declare!(CAN1_RX1);
129 declare!(CAN1_SCE);
130 declare!(CAN1_TX);
131 declare!(COMP);
132 declare!(DCMI);
133 declare!(DFSDM1_FLT0);
134 declare!(DFSDM1_FLT1);
135 declare!(DFSDM1_FLT2);
136 declare!(DFSDM1_FLT3);
137 declare!(DMA1_Channel1);
138 declare!(DMA1_Channel2);
139 declare!(DMA1_Channel3);
140 declare!(DMA1_Channel4);
141 declare!(DMA1_Channel5);
142 declare!(DMA1_Channel6);
143 declare!(DMA1_Channel7);
144 declare!(DMA2D);
145 declare!(DMA2_Channel1);
146 declare!(DMA2_Channel2);
147 declare!(DMA2_Channel3);
148 declare!(DMA2_Channel4);
149 declare!(DMA2_Channel5);
150 declare!(DMA2_Channel6);
151 declare!(DMA2_Channel7);
152 declare!(DMAMUX1_OVR);
153 declare!(EXTI0);
154 declare!(EXTI1);
155 declare!(EXTI15_10);
156 declare!(EXTI2);
157 declare!(EXTI3);
158 declare!(EXTI4);
159 declare!(EXTI9_5);
160 declare!(FLASH);
161 declare!(FMC);
162 declare!(FPU);
163 declare!(HASH_CRS);
164 declare!(I2C1_ER);
165 declare!(I2C1_EV);
166 declare!(I2C2_ER);
167 declare!(I2C2_EV);
168 declare!(I2C3_ER);
169 declare!(I2C3_EV);
170 declare!(I2C4_ER);
171 declare!(I2C4_EV);
172 declare!(LPTIM1);
173 declare!(LPTIM2);
174 declare!(LPUART1);
175 declare!(OCTOSPI1);
176 declare!(OCTOSPI2);
177 declare!(OTG_FS);
178 declare!(PVD_PVM);
179 declare!(RCC);
180 declare!(RNG);
181 declare!(RTC_Alarm);
182 declare!(RTC_WKUP);
183 declare!(SAI1);
184 declare!(SAI2);
185 declare!(SDMMC1);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1();
215 fn AES();
216 fn CAN1_RX0();
217 fn CAN1_RX1();
218 fn CAN1_SCE();
219 fn CAN1_TX();
220 fn COMP();
221 fn DCMI();
222 fn DFSDM1_FLT0();
223 fn DFSDM1_FLT1();
224 fn DFSDM1_FLT2();
225 fn DFSDM1_FLT3();
226 fn DMA1_Channel1();
227 fn DMA1_Channel2();
228 fn DMA1_Channel3();
229 fn DMA1_Channel4();
230 fn DMA1_Channel5();
231 fn DMA1_Channel6();
232 fn DMA1_Channel7();
233 fn DMA2D();
234 fn DMA2_Channel1();
235 fn DMA2_Channel2();
236 fn DMA2_Channel3();
237 fn DMA2_Channel4();
238 fn DMA2_Channel5();
239 fn DMA2_Channel6();
240 fn DMA2_Channel7();
241 fn DMAMUX1_OVR();
242 fn EXTI0();
243 fn EXTI1();
244 fn EXTI15_10();
245 fn EXTI2();
246 fn EXTI3();
247 fn EXTI4();
248 fn EXTI9_5();
249 fn FLASH();
250 fn FMC();
251 fn FPU();
252 fn HASH_CRS();
253 fn I2C1_ER();
254 fn I2C1_EV();
255 fn I2C2_ER();
256 fn I2C2_EV();
257 fn I2C3_ER();
258 fn I2C3_EV();
259 fn I2C4_ER();
260 fn I2C4_EV();
261 fn LPTIM1();
262 fn LPTIM2();
263 fn LPUART1();
264 fn OCTOSPI1();
265 fn OCTOSPI2();
266 fn OTG_FS();
267 fn PVD_PVM();
268 fn RCC();
269 fn RNG();
270 fn RTC_Alarm();
271 fn RTC_WKUP();
272 fn SAI1();
273 fn SAI2();
274 fn SDMMC1();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector {
377 _handler: DFSDM1_FLT3,
378 },
379 Vector { _handler: TIM8_BRK },
380 Vector { _handler: TIM8_UP },
381 Vector {
382 _handler: TIM8_TRG_COM,
383 },
384 Vector { _handler: TIM8_CC },
385 Vector { _reserved: 0 },
386 Vector { _handler: FMC },
387 Vector { _handler: SDMMC1 },
388 Vector { _handler: TIM5 },
389 Vector { _handler: SPI3 },
390 Vector { _handler: UART4 },
391 Vector { _handler: UART5 },
392 Vector { _handler: TIM6_DAC },
393 Vector { _handler: TIM7 },
394 Vector {
395 _handler: DMA2_Channel1,
396 },
397 Vector {
398 _handler: DMA2_Channel2,
399 },
400 Vector {
401 _handler: DMA2_Channel3,
402 },
403 Vector {
404 _handler: DMA2_Channel4,
405 },
406 Vector {
407 _handler: DMA2_Channel5,
408 },
409 Vector {
410 _handler: DFSDM1_FLT0,
411 },
412 Vector {
413 _handler: DFSDM1_FLT1,
414 },
415 Vector {
416 _handler: DFSDM1_FLT2,
417 },
418 Vector { _handler: COMP },
419 Vector { _handler: LPTIM1 },
420 Vector { _handler: LPTIM2 },
421 Vector { _handler: OTG_FS },
422 Vector {
423 _handler: DMA2_Channel6,
424 },
425 Vector {
426 _handler: DMA2_Channel7,
427 },
428 Vector { _handler: LPUART1 },
429 Vector { _handler: OCTOSPI1 },
430 Vector { _handler: I2C3_EV },
431 Vector { _handler: I2C3_ER },
432 Vector { _handler: SAI1 },
433 Vector { _handler: SAI2 },
434 Vector { _handler: OCTOSPI2 },
435 Vector { _handler: TSC },
436 Vector { _reserved: 0 },
437 Vector { _handler: AES },
438 Vector { _handler: RNG },
439 Vector { _handler: FPU },
440 Vector { _handler: HASH_CRS },
441 Vector { _handler: I2C4_ER },
442 Vector { _handler: I2C4_EV },
443 Vector { _handler: DCMI },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _handler: DMA2D },
449 Vector { _reserved: 0 },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector {
453 _handler: DMAMUX1_OVR,
454 },
455 ];
456}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 457impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 458impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 459impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4s5qi.rs b/embassy-stm32/src/chip/stm32l4s5qi.rs
index 88d4b7bc6..cac7ba52a 100644
--- a/embassy-stm32/src/chip/stm32l4s5qi.rs
+++ b/embassy-stm32/src/chip/stm32l4s5qi.rs
@@ -1,22 +1,459 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2,
14 OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, 14 OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1,
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 HASH_CRS = 82,
70 I2C1_ER = 32,
71 I2C1_EV = 31,
72 I2C2_ER = 34,
73 I2C2_EV = 33,
74 I2C3_ER = 73,
75 I2C3_EV = 72,
76 I2C4_ER = 83,
77 I2C4_EV = 84,
78 LPTIM1 = 65,
79 LPTIM2 = 66,
80 LPUART1 = 70,
81 OCTOSPI1 = 71,
82 OCTOSPI2 = 76,
83 OTG_FS = 67,
84 PVD_PVM = 1,
85 RCC = 5,
86 RNG = 80,
87 RTC_Alarm = 41,
88 RTC_WKUP = 3,
89 SAI1 = 74,
90 SAI2 = 75,
91 SDMMC1 = 49,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1);
126 declare!(AES);
127 declare!(CAN1_RX0);
128 declare!(CAN1_RX1);
129 declare!(CAN1_SCE);
130 declare!(CAN1_TX);
131 declare!(COMP);
132 declare!(DCMI);
133 declare!(DFSDM1_FLT0);
134 declare!(DFSDM1_FLT1);
135 declare!(DFSDM1_FLT2);
136 declare!(DFSDM1_FLT3);
137 declare!(DMA1_Channel1);
138 declare!(DMA1_Channel2);
139 declare!(DMA1_Channel3);
140 declare!(DMA1_Channel4);
141 declare!(DMA1_Channel5);
142 declare!(DMA1_Channel6);
143 declare!(DMA1_Channel7);
144 declare!(DMA2D);
145 declare!(DMA2_Channel1);
146 declare!(DMA2_Channel2);
147 declare!(DMA2_Channel3);
148 declare!(DMA2_Channel4);
149 declare!(DMA2_Channel5);
150 declare!(DMA2_Channel6);
151 declare!(DMA2_Channel7);
152 declare!(DMAMUX1_OVR);
153 declare!(EXTI0);
154 declare!(EXTI1);
155 declare!(EXTI15_10);
156 declare!(EXTI2);
157 declare!(EXTI3);
158 declare!(EXTI4);
159 declare!(EXTI9_5);
160 declare!(FLASH);
161 declare!(FMC);
162 declare!(FPU);
163 declare!(HASH_CRS);
164 declare!(I2C1_ER);
165 declare!(I2C1_EV);
166 declare!(I2C2_ER);
167 declare!(I2C2_EV);
168 declare!(I2C3_ER);
169 declare!(I2C3_EV);
170 declare!(I2C4_ER);
171 declare!(I2C4_EV);
172 declare!(LPTIM1);
173 declare!(LPTIM2);
174 declare!(LPUART1);
175 declare!(OCTOSPI1);
176 declare!(OCTOSPI2);
177 declare!(OTG_FS);
178 declare!(PVD_PVM);
179 declare!(RCC);
180 declare!(RNG);
181 declare!(RTC_Alarm);
182 declare!(RTC_WKUP);
183 declare!(SAI1);
184 declare!(SAI2);
185 declare!(SDMMC1);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1();
215 fn AES();
216 fn CAN1_RX0();
217 fn CAN1_RX1();
218 fn CAN1_SCE();
219 fn CAN1_TX();
220 fn COMP();
221 fn DCMI();
222 fn DFSDM1_FLT0();
223 fn DFSDM1_FLT1();
224 fn DFSDM1_FLT2();
225 fn DFSDM1_FLT3();
226 fn DMA1_Channel1();
227 fn DMA1_Channel2();
228 fn DMA1_Channel3();
229 fn DMA1_Channel4();
230 fn DMA1_Channel5();
231 fn DMA1_Channel6();
232 fn DMA1_Channel7();
233 fn DMA2D();
234 fn DMA2_Channel1();
235 fn DMA2_Channel2();
236 fn DMA2_Channel3();
237 fn DMA2_Channel4();
238 fn DMA2_Channel5();
239 fn DMA2_Channel6();
240 fn DMA2_Channel7();
241 fn DMAMUX1_OVR();
242 fn EXTI0();
243 fn EXTI1();
244 fn EXTI15_10();
245 fn EXTI2();
246 fn EXTI3();
247 fn EXTI4();
248 fn EXTI9_5();
249 fn FLASH();
250 fn FMC();
251 fn FPU();
252 fn HASH_CRS();
253 fn I2C1_ER();
254 fn I2C1_EV();
255 fn I2C2_ER();
256 fn I2C2_EV();
257 fn I2C3_ER();
258 fn I2C3_EV();
259 fn I2C4_ER();
260 fn I2C4_EV();
261 fn LPTIM1();
262 fn LPTIM2();
263 fn LPUART1();
264 fn OCTOSPI1();
265 fn OCTOSPI2();
266 fn OTG_FS();
267 fn PVD_PVM();
268 fn RCC();
269 fn RNG();
270 fn RTC_Alarm();
271 fn RTC_WKUP();
272 fn SAI1();
273 fn SAI2();
274 fn SDMMC1();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector {
377 _handler: DFSDM1_FLT3,
378 },
379 Vector { _handler: TIM8_BRK },
380 Vector { _handler: TIM8_UP },
381 Vector {
382 _handler: TIM8_TRG_COM,
383 },
384 Vector { _handler: TIM8_CC },
385 Vector { _reserved: 0 },
386 Vector { _handler: FMC },
387 Vector { _handler: SDMMC1 },
388 Vector { _handler: TIM5 },
389 Vector { _handler: SPI3 },
390 Vector { _handler: UART4 },
391 Vector { _handler: UART5 },
392 Vector { _handler: TIM6_DAC },
393 Vector { _handler: TIM7 },
394 Vector {
395 _handler: DMA2_Channel1,
396 },
397 Vector {
398 _handler: DMA2_Channel2,
399 },
400 Vector {
401 _handler: DMA2_Channel3,
402 },
403 Vector {
404 _handler: DMA2_Channel4,
405 },
406 Vector {
407 _handler: DMA2_Channel5,
408 },
409 Vector {
410 _handler: DFSDM1_FLT0,
411 },
412 Vector {
413 _handler: DFSDM1_FLT1,
414 },
415 Vector {
416 _handler: DFSDM1_FLT2,
417 },
418 Vector { _handler: COMP },
419 Vector { _handler: LPTIM1 },
420 Vector { _handler: LPTIM2 },
421 Vector { _handler: OTG_FS },
422 Vector {
423 _handler: DMA2_Channel6,
424 },
425 Vector {
426 _handler: DMA2_Channel7,
427 },
428 Vector { _handler: LPUART1 },
429 Vector { _handler: OCTOSPI1 },
430 Vector { _handler: I2C3_EV },
431 Vector { _handler: I2C3_ER },
432 Vector { _handler: SAI1 },
433 Vector { _handler: SAI2 },
434 Vector { _handler: OCTOSPI2 },
435 Vector { _handler: TSC },
436 Vector { _reserved: 0 },
437 Vector { _handler: AES },
438 Vector { _handler: RNG },
439 Vector { _handler: FPU },
440 Vector { _handler: HASH_CRS },
441 Vector { _handler: I2C4_ER },
442 Vector { _handler: I2C4_EV },
443 Vector { _handler: DCMI },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _handler: DMA2D },
449 Vector { _reserved: 0 },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector {
453 _handler: DMAMUX1_OVR,
454 },
455 ];
456}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 457impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 458impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 459impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4s5vi.rs b/embassy-stm32/src/chip/stm32l4s5vi.rs
index 88d4b7bc6..cac7ba52a 100644
--- a/embassy-stm32/src/chip/stm32l4s5vi.rs
+++ b/embassy-stm32/src/chip/stm32l4s5vi.rs
@@ -1,22 +1,459 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2,
14 OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, 14 OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1,
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 HASH_CRS = 82,
70 I2C1_ER = 32,
71 I2C1_EV = 31,
72 I2C2_ER = 34,
73 I2C2_EV = 33,
74 I2C3_ER = 73,
75 I2C3_EV = 72,
76 I2C4_ER = 83,
77 I2C4_EV = 84,
78 LPTIM1 = 65,
79 LPTIM2 = 66,
80 LPUART1 = 70,
81 OCTOSPI1 = 71,
82 OCTOSPI2 = 76,
83 OTG_FS = 67,
84 PVD_PVM = 1,
85 RCC = 5,
86 RNG = 80,
87 RTC_Alarm = 41,
88 RTC_WKUP = 3,
89 SAI1 = 74,
90 SAI2 = 75,
91 SDMMC1 = 49,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1);
126 declare!(AES);
127 declare!(CAN1_RX0);
128 declare!(CAN1_RX1);
129 declare!(CAN1_SCE);
130 declare!(CAN1_TX);
131 declare!(COMP);
132 declare!(DCMI);
133 declare!(DFSDM1_FLT0);
134 declare!(DFSDM1_FLT1);
135 declare!(DFSDM1_FLT2);
136 declare!(DFSDM1_FLT3);
137 declare!(DMA1_Channel1);
138 declare!(DMA1_Channel2);
139 declare!(DMA1_Channel3);
140 declare!(DMA1_Channel4);
141 declare!(DMA1_Channel5);
142 declare!(DMA1_Channel6);
143 declare!(DMA1_Channel7);
144 declare!(DMA2D);
145 declare!(DMA2_Channel1);
146 declare!(DMA2_Channel2);
147 declare!(DMA2_Channel3);
148 declare!(DMA2_Channel4);
149 declare!(DMA2_Channel5);
150 declare!(DMA2_Channel6);
151 declare!(DMA2_Channel7);
152 declare!(DMAMUX1_OVR);
153 declare!(EXTI0);
154 declare!(EXTI1);
155 declare!(EXTI15_10);
156 declare!(EXTI2);
157 declare!(EXTI3);
158 declare!(EXTI4);
159 declare!(EXTI9_5);
160 declare!(FLASH);
161 declare!(FMC);
162 declare!(FPU);
163 declare!(HASH_CRS);
164 declare!(I2C1_ER);
165 declare!(I2C1_EV);
166 declare!(I2C2_ER);
167 declare!(I2C2_EV);
168 declare!(I2C3_ER);
169 declare!(I2C3_EV);
170 declare!(I2C4_ER);
171 declare!(I2C4_EV);
172 declare!(LPTIM1);
173 declare!(LPTIM2);
174 declare!(LPUART1);
175 declare!(OCTOSPI1);
176 declare!(OCTOSPI2);
177 declare!(OTG_FS);
178 declare!(PVD_PVM);
179 declare!(RCC);
180 declare!(RNG);
181 declare!(RTC_Alarm);
182 declare!(RTC_WKUP);
183 declare!(SAI1);
184 declare!(SAI2);
185 declare!(SDMMC1);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1();
215 fn AES();
216 fn CAN1_RX0();
217 fn CAN1_RX1();
218 fn CAN1_SCE();
219 fn CAN1_TX();
220 fn COMP();
221 fn DCMI();
222 fn DFSDM1_FLT0();
223 fn DFSDM1_FLT1();
224 fn DFSDM1_FLT2();
225 fn DFSDM1_FLT3();
226 fn DMA1_Channel1();
227 fn DMA1_Channel2();
228 fn DMA1_Channel3();
229 fn DMA1_Channel4();
230 fn DMA1_Channel5();
231 fn DMA1_Channel6();
232 fn DMA1_Channel7();
233 fn DMA2D();
234 fn DMA2_Channel1();
235 fn DMA2_Channel2();
236 fn DMA2_Channel3();
237 fn DMA2_Channel4();
238 fn DMA2_Channel5();
239 fn DMA2_Channel6();
240 fn DMA2_Channel7();
241 fn DMAMUX1_OVR();
242 fn EXTI0();
243 fn EXTI1();
244 fn EXTI15_10();
245 fn EXTI2();
246 fn EXTI3();
247 fn EXTI4();
248 fn EXTI9_5();
249 fn FLASH();
250 fn FMC();
251 fn FPU();
252 fn HASH_CRS();
253 fn I2C1_ER();
254 fn I2C1_EV();
255 fn I2C2_ER();
256 fn I2C2_EV();
257 fn I2C3_ER();
258 fn I2C3_EV();
259 fn I2C4_ER();
260 fn I2C4_EV();
261 fn LPTIM1();
262 fn LPTIM2();
263 fn LPUART1();
264 fn OCTOSPI1();
265 fn OCTOSPI2();
266 fn OTG_FS();
267 fn PVD_PVM();
268 fn RCC();
269 fn RNG();
270 fn RTC_Alarm();
271 fn RTC_WKUP();
272 fn SAI1();
273 fn SAI2();
274 fn SDMMC1();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector {
377 _handler: DFSDM1_FLT3,
378 },
379 Vector { _handler: TIM8_BRK },
380 Vector { _handler: TIM8_UP },
381 Vector {
382 _handler: TIM8_TRG_COM,
383 },
384 Vector { _handler: TIM8_CC },
385 Vector { _reserved: 0 },
386 Vector { _handler: FMC },
387 Vector { _handler: SDMMC1 },
388 Vector { _handler: TIM5 },
389 Vector { _handler: SPI3 },
390 Vector { _handler: UART4 },
391 Vector { _handler: UART5 },
392 Vector { _handler: TIM6_DAC },
393 Vector { _handler: TIM7 },
394 Vector {
395 _handler: DMA2_Channel1,
396 },
397 Vector {
398 _handler: DMA2_Channel2,
399 },
400 Vector {
401 _handler: DMA2_Channel3,
402 },
403 Vector {
404 _handler: DMA2_Channel4,
405 },
406 Vector {
407 _handler: DMA2_Channel5,
408 },
409 Vector {
410 _handler: DFSDM1_FLT0,
411 },
412 Vector {
413 _handler: DFSDM1_FLT1,
414 },
415 Vector {
416 _handler: DFSDM1_FLT2,
417 },
418 Vector { _handler: COMP },
419 Vector { _handler: LPTIM1 },
420 Vector { _handler: LPTIM2 },
421 Vector { _handler: OTG_FS },
422 Vector {
423 _handler: DMA2_Channel6,
424 },
425 Vector {
426 _handler: DMA2_Channel7,
427 },
428 Vector { _handler: LPUART1 },
429 Vector { _handler: OCTOSPI1 },
430 Vector { _handler: I2C3_EV },
431 Vector { _handler: I2C3_ER },
432 Vector { _handler: SAI1 },
433 Vector { _handler: SAI2 },
434 Vector { _handler: OCTOSPI2 },
435 Vector { _handler: TSC },
436 Vector { _reserved: 0 },
437 Vector { _handler: AES },
438 Vector { _handler: RNG },
439 Vector { _handler: FPU },
440 Vector { _handler: HASH_CRS },
441 Vector { _handler: I2C4_ER },
442 Vector { _handler: I2C4_EV },
443 Vector { _handler: DCMI },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _handler: DMA2D },
449 Vector { _reserved: 0 },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector {
453 _handler: DMAMUX1_OVR,
454 },
455 ];
456}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 457impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 458impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 459impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4s5zi.rs b/embassy-stm32/src/chip/stm32l4s5zi.rs
index 88d4b7bc6..cac7ba52a 100644
--- a/embassy-stm32/src/chip/stm32l4s5zi.rs
+++ b/embassy-stm32/src/chip/stm32l4s5zi.rs
@@ -1,22 +1,459 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, PA0, PA1, PA2, PA3, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2,
5 PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, 5 PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4,
6 PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, 6 PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6,
7 PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, 7 PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8,
8 PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, 8 PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9,
9 PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, 9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10,
10 PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, 10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11,
11 PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, 11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12,
12 PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, 12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13,
13 PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, 13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2,
14 OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, 14 OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1,
15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, 15 TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1,
16 USART2, USART3, USB_OTG_FS, WWDG 16 USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 HASH_CRS = 82,
70 I2C1_ER = 32,
71 I2C1_EV = 31,
72 I2C2_ER = 34,
73 I2C2_EV = 33,
74 I2C3_ER = 73,
75 I2C3_EV = 72,
76 I2C4_ER = 83,
77 I2C4_EV = 84,
78 LPTIM1 = 65,
79 LPTIM2 = 66,
80 LPUART1 = 70,
81 OCTOSPI1 = 71,
82 OCTOSPI2 = 76,
83 OTG_FS = 67,
84 PVD_PVM = 1,
85 RCC = 5,
86 RNG = 80,
87 RTC_Alarm = 41,
88 RTC_WKUP = 3,
89 SAI1 = 74,
90 SAI2 = 75,
91 SDMMC1 = 49,
92 SPI1 = 35,
93 SPI2 = 36,
94 SPI3 = 51,
95 TAMP_STAMP = 2,
96 TIM1_BRK_TIM15 = 24,
97 TIM1_CC = 27,
98 TIM1_TRG_COM_TIM17 = 26,
99 TIM1_UP_TIM16 = 25,
100 TIM2 = 28,
101 TIM3 = 29,
102 TIM4 = 30,
103 TIM5 = 50,
104 TIM6_DAC = 54,
105 TIM7 = 55,
106 TIM8_BRK = 43,
107 TIM8_CC = 46,
108 TIM8_TRG_COM = 45,
109 TIM8_UP = 44,
110 TSC = 77,
111 UART4 = 52,
112 UART5 = 53,
113 USART1 = 37,
114 USART2 = 38,
115 USART3 = 39,
116 WWDG = 0,
117 }
118 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
119 #[inline(always)]
120 fn number(self) -> u16 {
121 self as u16
122 }
123 }
124
125 declare!(ADC1);
126 declare!(AES);
127 declare!(CAN1_RX0);
128 declare!(CAN1_RX1);
129 declare!(CAN1_SCE);
130 declare!(CAN1_TX);
131 declare!(COMP);
132 declare!(DCMI);
133 declare!(DFSDM1_FLT0);
134 declare!(DFSDM1_FLT1);
135 declare!(DFSDM1_FLT2);
136 declare!(DFSDM1_FLT3);
137 declare!(DMA1_Channel1);
138 declare!(DMA1_Channel2);
139 declare!(DMA1_Channel3);
140 declare!(DMA1_Channel4);
141 declare!(DMA1_Channel5);
142 declare!(DMA1_Channel6);
143 declare!(DMA1_Channel7);
144 declare!(DMA2D);
145 declare!(DMA2_Channel1);
146 declare!(DMA2_Channel2);
147 declare!(DMA2_Channel3);
148 declare!(DMA2_Channel4);
149 declare!(DMA2_Channel5);
150 declare!(DMA2_Channel6);
151 declare!(DMA2_Channel7);
152 declare!(DMAMUX1_OVR);
153 declare!(EXTI0);
154 declare!(EXTI1);
155 declare!(EXTI15_10);
156 declare!(EXTI2);
157 declare!(EXTI3);
158 declare!(EXTI4);
159 declare!(EXTI9_5);
160 declare!(FLASH);
161 declare!(FMC);
162 declare!(FPU);
163 declare!(HASH_CRS);
164 declare!(I2C1_ER);
165 declare!(I2C1_EV);
166 declare!(I2C2_ER);
167 declare!(I2C2_EV);
168 declare!(I2C3_ER);
169 declare!(I2C3_EV);
170 declare!(I2C4_ER);
171 declare!(I2C4_EV);
172 declare!(LPTIM1);
173 declare!(LPTIM2);
174 declare!(LPUART1);
175 declare!(OCTOSPI1);
176 declare!(OCTOSPI2);
177 declare!(OTG_FS);
178 declare!(PVD_PVM);
179 declare!(RCC);
180 declare!(RNG);
181 declare!(RTC_Alarm);
182 declare!(RTC_WKUP);
183 declare!(SAI1);
184 declare!(SAI2);
185 declare!(SDMMC1);
186 declare!(SPI1);
187 declare!(SPI2);
188 declare!(SPI3);
189 declare!(TAMP_STAMP);
190 declare!(TIM1_BRK_TIM15);
191 declare!(TIM1_CC);
192 declare!(TIM1_TRG_COM_TIM17);
193 declare!(TIM1_UP_TIM16);
194 declare!(TIM2);
195 declare!(TIM3);
196 declare!(TIM4);
197 declare!(TIM5);
198 declare!(TIM6_DAC);
199 declare!(TIM7);
200 declare!(TIM8_BRK);
201 declare!(TIM8_CC);
202 declare!(TIM8_TRG_COM);
203 declare!(TIM8_UP);
204 declare!(TSC);
205 declare!(UART4);
206 declare!(UART5);
207 declare!(USART1);
208 declare!(USART2);
209 declare!(USART3);
210 declare!(WWDG);
211}
212mod interrupt_vector {
213 extern "C" {
214 fn ADC1();
215 fn AES();
216 fn CAN1_RX0();
217 fn CAN1_RX1();
218 fn CAN1_SCE();
219 fn CAN1_TX();
220 fn COMP();
221 fn DCMI();
222 fn DFSDM1_FLT0();
223 fn DFSDM1_FLT1();
224 fn DFSDM1_FLT2();
225 fn DFSDM1_FLT3();
226 fn DMA1_Channel1();
227 fn DMA1_Channel2();
228 fn DMA1_Channel3();
229 fn DMA1_Channel4();
230 fn DMA1_Channel5();
231 fn DMA1_Channel6();
232 fn DMA1_Channel7();
233 fn DMA2D();
234 fn DMA2_Channel1();
235 fn DMA2_Channel2();
236 fn DMA2_Channel3();
237 fn DMA2_Channel4();
238 fn DMA2_Channel5();
239 fn DMA2_Channel6();
240 fn DMA2_Channel7();
241 fn DMAMUX1_OVR();
242 fn EXTI0();
243 fn EXTI1();
244 fn EXTI15_10();
245 fn EXTI2();
246 fn EXTI3();
247 fn EXTI4();
248 fn EXTI9_5();
249 fn FLASH();
250 fn FMC();
251 fn FPU();
252 fn HASH_CRS();
253 fn I2C1_ER();
254 fn I2C1_EV();
255 fn I2C2_ER();
256 fn I2C2_EV();
257 fn I2C3_ER();
258 fn I2C3_EV();
259 fn I2C4_ER();
260 fn I2C4_EV();
261 fn LPTIM1();
262 fn LPTIM2();
263 fn LPUART1();
264 fn OCTOSPI1();
265 fn OCTOSPI2();
266 fn OTG_FS();
267 fn PVD_PVM();
268 fn RCC();
269 fn RNG();
270 fn RTC_Alarm();
271 fn RTC_WKUP();
272 fn SAI1();
273 fn SAI2();
274 fn SDMMC1();
275 fn SPI1();
276 fn SPI2();
277 fn SPI3();
278 fn TAMP_STAMP();
279 fn TIM1_BRK_TIM15();
280 fn TIM1_CC();
281 fn TIM1_TRG_COM_TIM17();
282 fn TIM1_UP_TIM16();
283 fn TIM2();
284 fn TIM3();
285 fn TIM4();
286 fn TIM5();
287 fn TIM6_DAC();
288 fn TIM7();
289 fn TIM8_BRK();
290 fn TIM8_CC();
291 fn TIM8_TRG_COM();
292 fn TIM8_UP();
293 fn TSC();
294 fn UART4();
295 fn UART5();
296 fn USART1();
297 fn USART2();
298 fn USART3();
299 fn WWDG();
300 }
301 pub union Vector {
302 _handler: unsafe extern "C" fn(),
303 _reserved: u32,
304 }
305 #[link_section = ".vector_table.interrupts"]
306 #[no_mangle]
307 pub static __INTERRUPTS: [Vector; 95] = [
308 Vector { _handler: WWDG },
309 Vector { _handler: PVD_PVM },
310 Vector {
311 _handler: TAMP_STAMP,
312 },
313 Vector { _handler: RTC_WKUP },
314 Vector { _handler: FLASH },
315 Vector { _handler: RCC },
316 Vector { _handler: EXTI0 },
317 Vector { _handler: EXTI1 },
318 Vector { _handler: EXTI2 },
319 Vector { _handler: EXTI3 },
320 Vector { _handler: EXTI4 },
321 Vector {
322 _handler: DMA1_Channel1,
323 },
324 Vector {
325 _handler: DMA1_Channel2,
326 },
327 Vector {
328 _handler: DMA1_Channel3,
329 },
330 Vector {
331 _handler: DMA1_Channel4,
332 },
333 Vector {
334 _handler: DMA1_Channel5,
335 },
336 Vector {
337 _handler: DMA1_Channel6,
338 },
339 Vector {
340 _handler: DMA1_Channel7,
341 },
342 Vector { _handler: ADC1 },
343 Vector { _handler: CAN1_TX },
344 Vector { _handler: CAN1_RX0 },
345 Vector { _handler: CAN1_RX1 },
346 Vector { _handler: CAN1_SCE },
347 Vector { _handler: EXTI9_5 },
348 Vector {
349 _handler: TIM1_BRK_TIM15,
350 },
351 Vector {
352 _handler: TIM1_UP_TIM16,
353 },
354 Vector {
355 _handler: TIM1_TRG_COM_TIM17,
356 },
357 Vector { _handler: TIM1_CC },
358 Vector { _handler: TIM2 },
359 Vector { _handler: TIM3 },
360 Vector { _handler: TIM4 },
361 Vector { _handler: I2C1_EV },
362 Vector { _handler: I2C1_ER },
363 Vector { _handler: I2C2_EV },
364 Vector { _handler: I2C2_ER },
365 Vector { _handler: SPI1 },
366 Vector { _handler: SPI2 },
367 Vector { _handler: USART1 },
368 Vector { _handler: USART2 },
369 Vector { _handler: USART3 },
370 Vector {
371 _handler: EXTI15_10,
372 },
373 Vector {
374 _handler: RTC_Alarm,
375 },
376 Vector {
377 _handler: DFSDM1_FLT3,
378 },
379 Vector { _handler: TIM8_BRK },
380 Vector { _handler: TIM8_UP },
381 Vector {
382 _handler: TIM8_TRG_COM,
383 },
384 Vector { _handler: TIM8_CC },
385 Vector { _reserved: 0 },
386 Vector { _handler: FMC },
387 Vector { _handler: SDMMC1 },
388 Vector { _handler: TIM5 },
389 Vector { _handler: SPI3 },
390 Vector { _handler: UART4 },
391 Vector { _handler: UART5 },
392 Vector { _handler: TIM6_DAC },
393 Vector { _handler: TIM7 },
394 Vector {
395 _handler: DMA2_Channel1,
396 },
397 Vector {
398 _handler: DMA2_Channel2,
399 },
400 Vector {
401 _handler: DMA2_Channel3,
402 },
403 Vector {
404 _handler: DMA2_Channel4,
405 },
406 Vector {
407 _handler: DMA2_Channel5,
408 },
409 Vector {
410 _handler: DFSDM1_FLT0,
411 },
412 Vector {
413 _handler: DFSDM1_FLT1,
414 },
415 Vector {
416 _handler: DFSDM1_FLT2,
417 },
418 Vector { _handler: COMP },
419 Vector { _handler: LPTIM1 },
420 Vector { _handler: LPTIM2 },
421 Vector { _handler: OTG_FS },
422 Vector {
423 _handler: DMA2_Channel6,
424 },
425 Vector {
426 _handler: DMA2_Channel7,
427 },
428 Vector { _handler: LPUART1 },
429 Vector { _handler: OCTOSPI1 },
430 Vector { _handler: I2C3_EV },
431 Vector { _handler: I2C3_ER },
432 Vector { _handler: SAI1 },
433 Vector { _handler: SAI2 },
434 Vector { _handler: OCTOSPI2 },
435 Vector { _handler: TSC },
436 Vector { _reserved: 0 },
437 Vector { _handler: AES },
438 Vector { _handler: RNG },
439 Vector { _handler: FPU },
440 Vector { _handler: HASH_CRS },
441 Vector { _handler: I2C4_ER },
442 Vector { _handler: I2C4_EV },
443 Vector { _handler: DCMI },
444 Vector { _reserved: 0 },
445 Vector { _reserved: 0 },
446 Vector { _reserved: 0 },
447 Vector { _reserved: 0 },
448 Vector { _handler: DMA2D },
449 Vector { _reserved: 0 },
450 Vector { _reserved: 0 },
451 Vector { _reserved: 0 },
452 Vector {
453 _handler: DMAMUX1_OVR,
454 },
455 ];
456}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 457impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 458impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 459impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4s7ai.rs b/embassy-stm32/src/chip/stm32l4s7ai.rs
index bae375145..5cef4a852 100644
--- a/embassy-stm32/src/chip/stm32l4s7ai.rs
+++ b/embassy-stm32/src/chip/stm32l4s7ai.rs
@@ -1,22 +1,468 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, 13 PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 GFXMMU = 93,
70 HASH_CRS = 82,
71 I2C1_ER = 32,
72 I2C1_EV = 31,
73 I2C2_ER = 34,
74 I2C2_EV = 33,
75 I2C3_ER = 73,
76 I2C3_EV = 72,
77 I2C4_ER = 83,
78 I2C4_EV = 84,
79 LPTIM1 = 65,
80 LPTIM2 = 66,
81 LPUART1 = 70,
82 LTDC = 91,
83 LTDC_ER = 92,
84 OCTOSPI1 = 71,
85 OCTOSPI2 = 76,
86 OTG_FS = 67,
87 PVD_PVM = 1,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 TAMP_STAMP = 2,
99 TIM1_BRK_TIM15 = 24,
100 TIM1_CC = 27,
101 TIM1_TRG_COM_TIM17 = 26,
102 TIM1_UP_TIM16 = 25,
103 TIM2 = 28,
104 TIM3 = 29,
105 TIM4 = 30,
106 TIM5 = 50,
107 TIM6_DAC = 54,
108 TIM7 = 55,
109 TIM8_BRK = 43,
110 TIM8_CC = 46,
111 TIM8_TRG_COM = 45,
112 TIM8_UP = 44,
113 TSC = 77,
114 UART4 = 52,
115 UART5 = 53,
116 USART1 = 37,
117 USART2 = 38,
118 USART3 = 39,
119 WWDG = 0,
120 }
121 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
122 #[inline(always)]
123 fn number(self) -> u16 {
124 self as u16
125 }
126 }
127
128 declare!(ADC1);
129 declare!(AES);
130 declare!(CAN1_RX0);
131 declare!(CAN1_RX1);
132 declare!(CAN1_SCE);
133 declare!(CAN1_TX);
134 declare!(COMP);
135 declare!(DCMI);
136 declare!(DFSDM1_FLT0);
137 declare!(DFSDM1_FLT1);
138 declare!(DFSDM1_FLT2);
139 declare!(DFSDM1_FLT3);
140 declare!(DMA1_Channel1);
141 declare!(DMA1_Channel2);
142 declare!(DMA1_Channel3);
143 declare!(DMA1_Channel4);
144 declare!(DMA1_Channel5);
145 declare!(DMA1_Channel6);
146 declare!(DMA1_Channel7);
147 declare!(DMA2D);
148 declare!(DMA2_Channel1);
149 declare!(DMA2_Channel2);
150 declare!(DMA2_Channel3);
151 declare!(DMA2_Channel4);
152 declare!(DMA2_Channel5);
153 declare!(DMA2_Channel6);
154 declare!(DMA2_Channel7);
155 declare!(DMAMUX1_OVR);
156 declare!(EXTI0);
157 declare!(EXTI1);
158 declare!(EXTI15_10);
159 declare!(EXTI2);
160 declare!(EXTI3);
161 declare!(EXTI4);
162 declare!(EXTI9_5);
163 declare!(FLASH);
164 declare!(FMC);
165 declare!(FPU);
166 declare!(GFXMMU);
167 declare!(HASH_CRS);
168 declare!(I2C1_ER);
169 declare!(I2C1_EV);
170 declare!(I2C2_ER);
171 declare!(I2C2_EV);
172 declare!(I2C3_ER);
173 declare!(I2C3_EV);
174 declare!(I2C4_ER);
175 declare!(I2C4_EV);
176 declare!(LPTIM1);
177 declare!(LPTIM2);
178 declare!(LPUART1);
179 declare!(LTDC);
180 declare!(LTDC_ER);
181 declare!(OCTOSPI1);
182 declare!(OCTOSPI2);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(RCC);
186 declare!(RNG);
187 declare!(RTC_Alarm);
188 declare!(RTC_WKUP);
189 declare!(SAI1);
190 declare!(SAI2);
191 declare!(SDMMC1);
192 declare!(SPI1);
193 declare!(SPI2);
194 declare!(SPI3);
195 declare!(TAMP_STAMP);
196 declare!(TIM1_BRK_TIM15);
197 declare!(TIM1_CC);
198 declare!(TIM1_TRG_COM_TIM17);
199 declare!(TIM1_UP_TIM16);
200 declare!(TIM2);
201 declare!(TIM3);
202 declare!(TIM4);
203 declare!(TIM5);
204 declare!(TIM6_DAC);
205 declare!(TIM7);
206 declare!(TIM8_BRK);
207 declare!(TIM8_CC);
208 declare!(TIM8_TRG_COM);
209 declare!(TIM8_UP);
210 declare!(TSC);
211 declare!(UART4);
212 declare!(UART5);
213 declare!(USART1);
214 declare!(USART2);
215 declare!(USART3);
216 declare!(WWDG);
217}
218mod interrupt_vector {
219 extern "C" {
220 fn ADC1();
221 fn AES();
222 fn CAN1_RX0();
223 fn CAN1_RX1();
224 fn CAN1_SCE();
225 fn CAN1_TX();
226 fn COMP();
227 fn DCMI();
228 fn DFSDM1_FLT0();
229 fn DFSDM1_FLT1();
230 fn DFSDM1_FLT2();
231 fn DFSDM1_FLT3();
232 fn DMA1_Channel1();
233 fn DMA1_Channel2();
234 fn DMA1_Channel3();
235 fn DMA1_Channel4();
236 fn DMA1_Channel5();
237 fn DMA1_Channel6();
238 fn DMA1_Channel7();
239 fn DMA2D();
240 fn DMA2_Channel1();
241 fn DMA2_Channel2();
242 fn DMA2_Channel3();
243 fn DMA2_Channel4();
244 fn DMA2_Channel5();
245 fn DMA2_Channel6();
246 fn DMA2_Channel7();
247 fn DMAMUX1_OVR();
248 fn EXTI0();
249 fn EXTI1();
250 fn EXTI15_10();
251 fn EXTI2();
252 fn EXTI3();
253 fn EXTI4();
254 fn EXTI9_5();
255 fn FLASH();
256 fn FMC();
257 fn FPU();
258 fn GFXMMU();
259 fn HASH_CRS();
260 fn I2C1_ER();
261 fn I2C1_EV();
262 fn I2C2_ER();
263 fn I2C2_EV();
264 fn I2C3_ER();
265 fn I2C3_EV();
266 fn I2C4_ER();
267 fn I2C4_EV();
268 fn LPTIM1();
269 fn LPTIM2();
270 fn LPUART1();
271 fn LTDC();
272 fn LTDC_ER();
273 fn OCTOSPI1();
274 fn OCTOSPI2();
275 fn OTG_FS();
276 fn PVD_PVM();
277 fn RCC();
278 fn RNG();
279 fn RTC_Alarm();
280 fn RTC_WKUP();
281 fn SAI1();
282 fn SAI2();
283 fn SDMMC1();
284 fn SPI1();
285 fn SPI2();
286 fn SPI3();
287 fn TAMP_STAMP();
288 fn TIM1_BRK_TIM15();
289 fn TIM1_CC();
290 fn TIM1_TRG_COM_TIM17();
291 fn TIM1_UP_TIM16();
292 fn TIM2();
293 fn TIM3();
294 fn TIM4();
295 fn TIM5();
296 fn TIM6_DAC();
297 fn TIM7();
298 fn TIM8_BRK();
299 fn TIM8_CC();
300 fn TIM8_TRG_COM();
301 fn TIM8_UP();
302 fn TSC();
303 fn UART4();
304 fn UART5();
305 fn USART1();
306 fn USART2();
307 fn USART3();
308 fn WWDG();
309 }
310 pub union Vector {
311 _handler: unsafe extern "C" fn(),
312 _reserved: u32,
313 }
314 #[link_section = ".vector_table.interrupts"]
315 #[no_mangle]
316 pub static __INTERRUPTS: [Vector; 95] = [
317 Vector { _handler: WWDG },
318 Vector { _handler: PVD_PVM },
319 Vector {
320 _handler: TAMP_STAMP,
321 },
322 Vector { _handler: RTC_WKUP },
323 Vector { _handler: FLASH },
324 Vector { _handler: RCC },
325 Vector { _handler: EXTI0 },
326 Vector { _handler: EXTI1 },
327 Vector { _handler: EXTI2 },
328 Vector { _handler: EXTI3 },
329 Vector { _handler: EXTI4 },
330 Vector {
331 _handler: DMA1_Channel1,
332 },
333 Vector {
334 _handler: DMA1_Channel2,
335 },
336 Vector {
337 _handler: DMA1_Channel3,
338 },
339 Vector {
340 _handler: DMA1_Channel4,
341 },
342 Vector {
343 _handler: DMA1_Channel5,
344 },
345 Vector {
346 _handler: DMA1_Channel6,
347 },
348 Vector {
349 _handler: DMA1_Channel7,
350 },
351 Vector { _handler: ADC1 },
352 Vector { _handler: CAN1_TX },
353 Vector { _handler: CAN1_RX0 },
354 Vector { _handler: CAN1_RX1 },
355 Vector { _handler: CAN1_SCE },
356 Vector { _handler: EXTI9_5 },
357 Vector {
358 _handler: TIM1_BRK_TIM15,
359 },
360 Vector {
361 _handler: TIM1_UP_TIM16,
362 },
363 Vector {
364 _handler: TIM1_TRG_COM_TIM17,
365 },
366 Vector { _handler: TIM1_CC },
367 Vector { _handler: TIM2 },
368 Vector { _handler: TIM3 },
369 Vector { _handler: TIM4 },
370 Vector { _handler: I2C1_EV },
371 Vector { _handler: I2C1_ER },
372 Vector { _handler: I2C2_EV },
373 Vector { _handler: I2C2_ER },
374 Vector { _handler: SPI1 },
375 Vector { _handler: SPI2 },
376 Vector { _handler: USART1 },
377 Vector { _handler: USART2 },
378 Vector { _handler: USART3 },
379 Vector {
380 _handler: EXTI15_10,
381 },
382 Vector {
383 _handler: RTC_Alarm,
384 },
385 Vector {
386 _handler: DFSDM1_FLT3,
387 },
388 Vector { _handler: TIM8_BRK },
389 Vector { _handler: TIM8_UP },
390 Vector {
391 _handler: TIM8_TRG_COM,
392 },
393 Vector { _handler: TIM8_CC },
394 Vector { _reserved: 0 },
395 Vector { _handler: FMC },
396 Vector { _handler: SDMMC1 },
397 Vector { _handler: TIM5 },
398 Vector { _handler: SPI3 },
399 Vector { _handler: UART4 },
400 Vector { _handler: UART5 },
401 Vector { _handler: TIM6_DAC },
402 Vector { _handler: TIM7 },
403 Vector {
404 _handler: DMA2_Channel1,
405 },
406 Vector {
407 _handler: DMA2_Channel2,
408 },
409 Vector {
410 _handler: DMA2_Channel3,
411 },
412 Vector {
413 _handler: DMA2_Channel4,
414 },
415 Vector {
416 _handler: DMA2_Channel5,
417 },
418 Vector {
419 _handler: DFSDM1_FLT0,
420 },
421 Vector {
422 _handler: DFSDM1_FLT1,
423 },
424 Vector {
425 _handler: DFSDM1_FLT2,
426 },
427 Vector { _handler: COMP },
428 Vector { _handler: LPTIM1 },
429 Vector { _handler: LPTIM2 },
430 Vector { _handler: OTG_FS },
431 Vector {
432 _handler: DMA2_Channel6,
433 },
434 Vector {
435 _handler: DMA2_Channel7,
436 },
437 Vector { _handler: LPUART1 },
438 Vector { _handler: OCTOSPI1 },
439 Vector { _handler: I2C3_EV },
440 Vector { _handler: I2C3_ER },
441 Vector { _handler: SAI1 },
442 Vector { _handler: SAI2 },
443 Vector { _handler: OCTOSPI2 },
444 Vector { _handler: TSC },
445 Vector { _reserved: 0 },
446 Vector { _handler: AES },
447 Vector { _handler: RNG },
448 Vector { _handler: FPU },
449 Vector { _handler: HASH_CRS },
450 Vector { _handler: I2C4_ER },
451 Vector { _handler: I2C4_EV },
452 Vector { _handler: DCMI },
453 Vector { _reserved: 0 },
454 Vector { _reserved: 0 },
455 Vector { _reserved: 0 },
456 Vector { _reserved: 0 },
457 Vector { _handler: DMA2D },
458 Vector { _handler: LTDC },
459 Vector { _handler: LTDC_ER },
460 Vector { _handler: GFXMMU },
461 Vector {
462 _handler: DMAMUX1_OVR,
463 },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4s7vi.rs b/embassy-stm32/src/chip/stm32l4s7vi.rs
index bae375145..5cef4a852 100644
--- a/embassy-stm32/src/chip/stm32l4s7vi.rs
+++ b/embassy-stm32/src/chip/stm32l4s7vi.rs
@@ -1,22 +1,468 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, 13 PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 GFXMMU = 93,
70 HASH_CRS = 82,
71 I2C1_ER = 32,
72 I2C1_EV = 31,
73 I2C2_ER = 34,
74 I2C2_EV = 33,
75 I2C3_ER = 73,
76 I2C3_EV = 72,
77 I2C4_ER = 83,
78 I2C4_EV = 84,
79 LPTIM1 = 65,
80 LPTIM2 = 66,
81 LPUART1 = 70,
82 LTDC = 91,
83 LTDC_ER = 92,
84 OCTOSPI1 = 71,
85 OCTOSPI2 = 76,
86 OTG_FS = 67,
87 PVD_PVM = 1,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 TAMP_STAMP = 2,
99 TIM1_BRK_TIM15 = 24,
100 TIM1_CC = 27,
101 TIM1_TRG_COM_TIM17 = 26,
102 TIM1_UP_TIM16 = 25,
103 TIM2 = 28,
104 TIM3 = 29,
105 TIM4 = 30,
106 TIM5 = 50,
107 TIM6_DAC = 54,
108 TIM7 = 55,
109 TIM8_BRK = 43,
110 TIM8_CC = 46,
111 TIM8_TRG_COM = 45,
112 TIM8_UP = 44,
113 TSC = 77,
114 UART4 = 52,
115 UART5 = 53,
116 USART1 = 37,
117 USART2 = 38,
118 USART3 = 39,
119 WWDG = 0,
120 }
121 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
122 #[inline(always)]
123 fn number(self) -> u16 {
124 self as u16
125 }
126 }
127
128 declare!(ADC1);
129 declare!(AES);
130 declare!(CAN1_RX0);
131 declare!(CAN1_RX1);
132 declare!(CAN1_SCE);
133 declare!(CAN1_TX);
134 declare!(COMP);
135 declare!(DCMI);
136 declare!(DFSDM1_FLT0);
137 declare!(DFSDM1_FLT1);
138 declare!(DFSDM1_FLT2);
139 declare!(DFSDM1_FLT3);
140 declare!(DMA1_Channel1);
141 declare!(DMA1_Channel2);
142 declare!(DMA1_Channel3);
143 declare!(DMA1_Channel4);
144 declare!(DMA1_Channel5);
145 declare!(DMA1_Channel6);
146 declare!(DMA1_Channel7);
147 declare!(DMA2D);
148 declare!(DMA2_Channel1);
149 declare!(DMA2_Channel2);
150 declare!(DMA2_Channel3);
151 declare!(DMA2_Channel4);
152 declare!(DMA2_Channel5);
153 declare!(DMA2_Channel6);
154 declare!(DMA2_Channel7);
155 declare!(DMAMUX1_OVR);
156 declare!(EXTI0);
157 declare!(EXTI1);
158 declare!(EXTI15_10);
159 declare!(EXTI2);
160 declare!(EXTI3);
161 declare!(EXTI4);
162 declare!(EXTI9_5);
163 declare!(FLASH);
164 declare!(FMC);
165 declare!(FPU);
166 declare!(GFXMMU);
167 declare!(HASH_CRS);
168 declare!(I2C1_ER);
169 declare!(I2C1_EV);
170 declare!(I2C2_ER);
171 declare!(I2C2_EV);
172 declare!(I2C3_ER);
173 declare!(I2C3_EV);
174 declare!(I2C4_ER);
175 declare!(I2C4_EV);
176 declare!(LPTIM1);
177 declare!(LPTIM2);
178 declare!(LPUART1);
179 declare!(LTDC);
180 declare!(LTDC_ER);
181 declare!(OCTOSPI1);
182 declare!(OCTOSPI2);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(RCC);
186 declare!(RNG);
187 declare!(RTC_Alarm);
188 declare!(RTC_WKUP);
189 declare!(SAI1);
190 declare!(SAI2);
191 declare!(SDMMC1);
192 declare!(SPI1);
193 declare!(SPI2);
194 declare!(SPI3);
195 declare!(TAMP_STAMP);
196 declare!(TIM1_BRK_TIM15);
197 declare!(TIM1_CC);
198 declare!(TIM1_TRG_COM_TIM17);
199 declare!(TIM1_UP_TIM16);
200 declare!(TIM2);
201 declare!(TIM3);
202 declare!(TIM4);
203 declare!(TIM5);
204 declare!(TIM6_DAC);
205 declare!(TIM7);
206 declare!(TIM8_BRK);
207 declare!(TIM8_CC);
208 declare!(TIM8_TRG_COM);
209 declare!(TIM8_UP);
210 declare!(TSC);
211 declare!(UART4);
212 declare!(UART5);
213 declare!(USART1);
214 declare!(USART2);
215 declare!(USART3);
216 declare!(WWDG);
217}
218mod interrupt_vector {
219 extern "C" {
220 fn ADC1();
221 fn AES();
222 fn CAN1_RX0();
223 fn CAN1_RX1();
224 fn CAN1_SCE();
225 fn CAN1_TX();
226 fn COMP();
227 fn DCMI();
228 fn DFSDM1_FLT0();
229 fn DFSDM1_FLT1();
230 fn DFSDM1_FLT2();
231 fn DFSDM1_FLT3();
232 fn DMA1_Channel1();
233 fn DMA1_Channel2();
234 fn DMA1_Channel3();
235 fn DMA1_Channel4();
236 fn DMA1_Channel5();
237 fn DMA1_Channel6();
238 fn DMA1_Channel7();
239 fn DMA2D();
240 fn DMA2_Channel1();
241 fn DMA2_Channel2();
242 fn DMA2_Channel3();
243 fn DMA2_Channel4();
244 fn DMA2_Channel5();
245 fn DMA2_Channel6();
246 fn DMA2_Channel7();
247 fn DMAMUX1_OVR();
248 fn EXTI0();
249 fn EXTI1();
250 fn EXTI15_10();
251 fn EXTI2();
252 fn EXTI3();
253 fn EXTI4();
254 fn EXTI9_5();
255 fn FLASH();
256 fn FMC();
257 fn FPU();
258 fn GFXMMU();
259 fn HASH_CRS();
260 fn I2C1_ER();
261 fn I2C1_EV();
262 fn I2C2_ER();
263 fn I2C2_EV();
264 fn I2C3_ER();
265 fn I2C3_EV();
266 fn I2C4_ER();
267 fn I2C4_EV();
268 fn LPTIM1();
269 fn LPTIM2();
270 fn LPUART1();
271 fn LTDC();
272 fn LTDC_ER();
273 fn OCTOSPI1();
274 fn OCTOSPI2();
275 fn OTG_FS();
276 fn PVD_PVM();
277 fn RCC();
278 fn RNG();
279 fn RTC_Alarm();
280 fn RTC_WKUP();
281 fn SAI1();
282 fn SAI2();
283 fn SDMMC1();
284 fn SPI1();
285 fn SPI2();
286 fn SPI3();
287 fn TAMP_STAMP();
288 fn TIM1_BRK_TIM15();
289 fn TIM1_CC();
290 fn TIM1_TRG_COM_TIM17();
291 fn TIM1_UP_TIM16();
292 fn TIM2();
293 fn TIM3();
294 fn TIM4();
295 fn TIM5();
296 fn TIM6_DAC();
297 fn TIM7();
298 fn TIM8_BRK();
299 fn TIM8_CC();
300 fn TIM8_TRG_COM();
301 fn TIM8_UP();
302 fn TSC();
303 fn UART4();
304 fn UART5();
305 fn USART1();
306 fn USART2();
307 fn USART3();
308 fn WWDG();
309 }
310 pub union Vector {
311 _handler: unsafe extern "C" fn(),
312 _reserved: u32,
313 }
314 #[link_section = ".vector_table.interrupts"]
315 #[no_mangle]
316 pub static __INTERRUPTS: [Vector; 95] = [
317 Vector { _handler: WWDG },
318 Vector { _handler: PVD_PVM },
319 Vector {
320 _handler: TAMP_STAMP,
321 },
322 Vector { _handler: RTC_WKUP },
323 Vector { _handler: FLASH },
324 Vector { _handler: RCC },
325 Vector { _handler: EXTI0 },
326 Vector { _handler: EXTI1 },
327 Vector { _handler: EXTI2 },
328 Vector { _handler: EXTI3 },
329 Vector { _handler: EXTI4 },
330 Vector {
331 _handler: DMA1_Channel1,
332 },
333 Vector {
334 _handler: DMA1_Channel2,
335 },
336 Vector {
337 _handler: DMA1_Channel3,
338 },
339 Vector {
340 _handler: DMA1_Channel4,
341 },
342 Vector {
343 _handler: DMA1_Channel5,
344 },
345 Vector {
346 _handler: DMA1_Channel6,
347 },
348 Vector {
349 _handler: DMA1_Channel7,
350 },
351 Vector { _handler: ADC1 },
352 Vector { _handler: CAN1_TX },
353 Vector { _handler: CAN1_RX0 },
354 Vector { _handler: CAN1_RX1 },
355 Vector { _handler: CAN1_SCE },
356 Vector { _handler: EXTI9_5 },
357 Vector {
358 _handler: TIM1_BRK_TIM15,
359 },
360 Vector {
361 _handler: TIM1_UP_TIM16,
362 },
363 Vector {
364 _handler: TIM1_TRG_COM_TIM17,
365 },
366 Vector { _handler: TIM1_CC },
367 Vector { _handler: TIM2 },
368 Vector { _handler: TIM3 },
369 Vector { _handler: TIM4 },
370 Vector { _handler: I2C1_EV },
371 Vector { _handler: I2C1_ER },
372 Vector { _handler: I2C2_EV },
373 Vector { _handler: I2C2_ER },
374 Vector { _handler: SPI1 },
375 Vector { _handler: SPI2 },
376 Vector { _handler: USART1 },
377 Vector { _handler: USART2 },
378 Vector { _handler: USART3 },
379 Vector {
380 _handler: EXTI15_10,
381 },
382 Vector {
383 _handler: RTC_Alarm,
384 },
385 Vector {
386 _handler: DFSDM1_FLT3,
387 },
388 Vector { _handler: TIM8_BRK },
389 Vector { _handler: TIM8_UP },
390 Vector {
391 _handler: TIM8_TRG_COM,
392 },
393 Vector { _handler: TIM8_CC },
394 Vector { _reserved: 0 },
395 Vector { _handler: FMC },
396 Vector { _handler: SDMMC1 },
397 Vector { _handler: TIM5 },
398 Vector { _handler: SPI3 },
399 Vector { _handler: UART4 },
400 Vector { _handler: UART5 },
401 Vector { _handler: TIM6_DAC },
402 Vector { _handler: TIM7 },
403 Vector {
404 _handler: DMA2_Channel1,
405 },
406 Vector {
407 _handler: DMA2_Channel2,
408 },
409 Vector {
410 _handler: DMA2_Channel3,
411 },
412 Vector {
413 _handler: DMA2_Channel4,
414 },
415 Vector {
416 _handler: DMA2_Channel5,
417 },
418 Vector {
419 _handler: DFSDM1_FLT0,
420 },
421 Vector {
422 _handler: DFSDM1_FLT1,
423 },
424 Vector {
425 _handler: DFSDM1_FLT2,
426 },
427 Vector { _handler: COMP },
428 Vector { _handler: LPTIM1 },
429 Vector { _handler: LPTIM2 },
430 Vector { _handler: OTG_FS },
431 Vector {
432 _handler: DMA2_Channel6,
433 },
434 Vector {
435 _handler: DMA2_Channel7,
436 },
437 Vector { _handler: LPUART1 },
438 Vector { _handler: OCTOSPI1 },
439 Vector { _handler: I2C3_EV },
440 Vector { _handler: I2C3_ER },
441 Vector { _handler: SAI1 },
442 Vector { _handler: SAI2 },
443 Vector { _handler: OCTOSPI2 },
444 Vector { _handler: TSC },
445 Vector { _reserved: 0 },
446 Vector { _handler: AES },
447 Vector { _handler: RNG },
448 Vector { _handler: FPU },
449 Vector { _handler: HASH_CRS },
450 Vector { _handler: I2C4_ER },
451 Vector { _handler: I2C4_EV },
452 Vector { _handler: DCMI },
453 Vector { _reserved: 0 },
454 Vector { _reserved: 0 },
455 Vector { _reserved: 0 },
456 Vector { _reserved: 0 },
457 Vector { _handler: DMA2D },
458 Vector { _handler: LTDC },
459 Vector { _handler: LTDC_ER },
460 Vector { _handler: GFXMMU },
461 Vector {
462 _handler: DMAMUX1_OVR,
463 },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4s7zi.rs b/embassy-stm32/src/chip/stm32l4s7zi.rs
index bae375145..5cef4a852 100644
--- a/embassy-stm32/src/chip/stm32l4s7zi.rs
+++ b/embassy-stm32/src/chip/stm32l4s7zi.rs
@@ -1,22 +1,468 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, 13 PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 EXTI0 = 6,
60 EXTI1 = 7,
61 EXTI15_10 = 40,
62 EXTI2 = 8,
63 EXTI3 = 9,
64 EXTI4 = 10,
65 EXTI9_5 = 23,
66 FLASH = 4,
67 FMC = 48,
68 FPU = 81,
69 GFXMMU = 93,
70 HASH_CRS = 82,
71 I2C1_ER = 32,
72 I2C1_EV = 31,
73 I2C2_ER = 34,
74 I2C2_EV = 33,
75 I2C3_ER = 73,
76 I2C3_EV = 72,
77 I2C4_ER = 83,
78 I2C4_EV = 84,
79 LPTIM1 = 65,
80 LPTIM2 = 66,
81 LPUART1 = 70,
82 LTDC = 91,
83 LTDC_ER = 92,
84 OCTOSPI1 = 71,
85 OCTOSPI2 = 76,
86 OTG_FS = 67,
87 PVD_PVM = 1,
88 RCC = 5,
89 RNG = 80,
90 RTC_Alarm = 41,
91 RTC_WKUP = 3,
92 SAI1 = 74,
93 SAI2 = 75,
94 SDMMC1 = 49,
95 SPI1 = 35,
96 SPI2 = 36,
97 SPI3 = 51,
98 TAMP_STAMP = 2,
99 TIM1_BRK_TIM15 = 24,
100 TIM1_CC = 27,
101 TIM1_TRG_COM_TIM17 = 26,
102 TIM1_UP_TIM16 = 25,
103 TIM2 = 28,
104 TIM3 = 29,
105 TIM4 = 30,
106 TIM5 = 50,
107 TIM6_DAC = 54,
108 TIM7 = 55,
109 TIM8_BRK = 43,
110 TIM8_CC = 46,
111 TIM8_TRG_COM = 45,
112 TIM8_UP = 44,
113 TSC = 77,
114 UART4 = 52,
115 UART5 = 53,
116 USART1 = 37,
117 USART2 = 38,
118 USART3 = 39,
119 WWDG = 0,
120 }
121 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
122 #[inline(always)]
123 fn number(self) -> u16 {
124 self as u16
125 }
126 }
127
128 declare!(ADC1);
129 declare!(AES);
130 declare!(CAN1_RX0);
131 declare!(CAN1_RX1);
132 declare!(CAN1_SCE);
133 declare!(CAN1_TX);
134 declare!(COMP);
135 declare!(DCMI);
136 declare!(DFSDM1_FLT0);
137 declare!(DFSDM1_FLT1);
138 declare!(DFSDM1_FLT2);
139 declare!(DFSDM1_FLT3);
140 declare!(DMA1_Channel1);
141 declare!(DMA1_Channel2);
142 declare!(DMA1_Channel3);
143 declare!(DMA1_Channel4);
144 declare!(DMA1_Channel5);
145 declare!(DMA1_Channel6);
146 declare!(DMA1_Channel7);
147 declare!(DMA2D);
148 declare!(DMA2_Channel1);
149 declare!(DMA2_Channel2);
150 declare!(DMA2_Channel3);
151 declare!(DMA2_Channel4);
152 declare!(DMA2_Channel5);
153 declare!(DMA2_Channel6);
154 declare!(DMA2_Channel7);
155 declare!(DMAMUX1_OVR);
156 declare!(EXTI0);
157 declare!(EXTI1);
158 declare!(EXTI15_10);
159 declare!(EXTI2);
160 declare!(EXTI3);
161 declare!(EXTI4);
162 declare!(EXTI9_5);
163 declare!(FLASH);
164 declare!(FMC);
165 declare!(FPU);
166 declare!(GFXMMU);
167 declare!(HASH_CRS);
168 declare!(I2C1_ER);
169 declare!(I2C1_EV);
170 declare!(I2C2_ER);
171 declare!(I2C2_EV);
172 declare!(I2C3_ER);
173 declare!(I2C3_EV);
174 declare!(I2C4_ER);
175 declare!(I2C4_EV);
176 declare!(LPTIM1);
177 declare!(LPTIM2);
178 declare!(LPUART1);
179 declare!(LTDC);
180 declare!(LTDC_ER);
181 declare!(OCTOSPI1);
182 declare!(OCTOSPI2);
183 declare!(OTG_FS);
184 declare!(PVD_PVM);
185 declare!(RCC);
186 declare!(RNG);
187 declare!(RTC_Alarm);
188 declare!(RTC_WKUP);
189 declare!(SAI1);
190 declare!(SAI2);
191 declare!(SDMMC1);
192 declare!(SPI1);
193 declare!(SPI2);
194 declare!(SPI3);
195 declare!(TAMP_STAMP);
196 declare!(TIM1_BRK_TIM15);
197 declare!(TIM1_CC);
198 declare!(TIM1_TRG_COM_TIM17);
199 declare!(TIM1_UP_TIM16);
200 declare!(TIM2);
201 declare!(TIM3);
202 declare!(TIM4);
203 declare!(TIM5);
204 declare!(TIM6_DAC);
205 declare!(TIM7);
206 declare!(TIM8_BRK);
207 declare!(TIM8_CC);
208 declare!(TIM8_TRG_COM);
209 declare!(TIM8_UP);
210 declare!(TSC);
211 declare!(UART4);
212 declare!(UART5);
213 declare!(USART1);
214 declare!(USART2);
215 declare!(USART3);
216 declare!(WWDG);
217}
218mod interrupt_vector {
219 extern "C" {
220 fn ADC1();
221 fn AES();
222 fn CAN1_RX0();
223 fn CAN1_RX1();
224 fn CAN1_SCE();
225 fn CAN1_TX();
226 fn COMP();
227 fn DCMI();
228 fn DFSDM1_FLT0();
229 fn DFSDM1_FLT1();
230 fn DFSDM1_FLT2();
231 fn DFSDM1_FLT3();
232 fn DMA1_Channel1();
233 fn DMA1_Channel2();
234 fn DMA1_Channel3();
235 fn DMA1_Channel4();
236 fn DMA1_Channel5();
237 fn DMA1_Channel6();
238 fn DMA1_Channel7();
239 fn DMA2D();
240 fn DMA2_Channel1();
241 fn DMA2_Channel2();
242 fn DMA2_Channel3();
243 fn DMA2_Channel4();
244 fn DMA2_Channel5();
245 fn DMA2_Channel6();
246 fn DMA2_Channel7();
247 fn DMAMUX1_OVR();
248 fn EXTI0();
249 fn EXTI1();
250 fn EXTI15_10();
251 fn EXTI2();
252 fn EXTI3();
253 fn EXTI4();
254 fn EXTI9_5();
255 fn FLASH();
256 fn FMC();
257 fn FPU();
258 fn GFXMMU();
259 fn HASH_CRS();
260 fn I2C1_ER();
261 fn I2C1_EV();
262 fn I2C2_ER();
263 fn I2C2_EV();
264 fn I2C3_ER();
265 fn I2C3_EV();
266 fn I2C4_ER();
267 fn I2C4_EV();
268 fn LPTIM1();
269 fn LPTIM2();
270 fn LPUART1();
271 fn LTDC();
272 fn LTDC_ER();
273 fn OCTOSPI1();
274 fn OCTOSPI2();
275 fn OTG_FS();
276 fn PVD_PVM();
277 fn RCC();
278 fn RNG();
279 fn RTC_Alarm();
280 fn RTC_WKUP();
281 fn SAI1();
282 fn SAI2();
283 fn SDMMC1();
284 fn SPI1();
285 fn SPI2();
286 fn SPI3();
287 fn TAMP_STAMP();
288 fn TIM1_BRK_TIM15();
289 fn TIM1_CC();
290 fn TIM1_TRG_COM_TIM17();
291 fn TIM1_UP_TIM16();
292 fn TIM2();
293 fn TIM3();
294 fn TIM4();
295 fn TIM5();
296 fn TIM6_DAC();
297 fn TIM7();
298 fn TIM8_BRK();
299 fn TIM8_CC();
300 fn TIM8_TRG_COM();
301 fn TIM8_UP();
302 fn TSC();
303 fn UART4();
304 fn UART5();
305 fn USART1();
306 fn USART2();
307 fn USART3();
308 fn WWDG();
309 }
310 pub union Vector {
311 _handler: unsafe extern "C" fn(),
312 _reserved: u32,
313 }
314 #[link_section = ".vector_table.interrupts"]
315 #[no_mangle]
316 pub static __INTERRUPTS: [Vector; 95] = [
317 Vector { _handler: WWDG },
318 Vector { _handler: PVD_PVM },
319 Vector {
320 _handler: TAMP_STAMP,
321 },
322 Vector { _handler: RTC_WKUP },
323 Vector { _handler: FLASH },
324 Vector { _handler: RCC },
325 Vector { _handler: EXTI0 },
326 Vector { _handler: EXTI1 },
327 Vector { _handler: EXTI2 },
328 Vector { _handler: EXTI3 },
329 Vector { _handler: EXTI4 },
330 Vector {
331 _handler: DMA1_Channel1,
332 },
333 Vector {
334 _handler: DMA1_Channel2,
335 },
336 Vector {
337 _handler: DMA1_Channel3,
338 },
339 Vector {
340 _handler: DMA1_Channel4,
341 },
342 Vector {
343 _handler: DMA1_Channel5,
344 },
345 Vector {
346 _handler: DMA1_Channel6,
347 },
348 Vector {
349 _handler: DMA1_Channel7,
350 },
351 Vector { _handler: ADC1 },
352 Vector { _handler: CAN1_TX },
353 Vector { _handler: CAN1_RX0 },
354 Vector { _handler: CAN1_RX1 },
355 Vector { _handler: CAN1_SCE },
356 Vector { _handler: EXTI9_5 },
357 Vector {
358 _handler: TIM1_BRK_TIM15,
359 },
360 Vector {
361 _handler: TIM1_UP_TIM16,
362 },
363 Vector {
364 _handler: TIM1_TRG_COM_TIM17,
365 },
366 Vector { _handler: TIM1_CC },
367 Vector { _handler: TIM2 },
368 Vector { _handler: TIM3 },
369 Vector { _handler: TIM4 },
370 Vector { _handler: I2C1_EV },
371 Vector { _handler: I2C1_ER },
372 Vector { _handler: I2C2_EV },
373 Vector { _handler: I2C2_ER },
374 Vector { _handler: SPI1 },
375 Vector { _handler: SPI2 },
376 Vector { _handler: USART1 },
377 Vector { _handler: USART2 },
378 Vector { _handler: USART3 },
379 Vector {
380 _handler: EXTI15_10,
381 },
382 Vector {
383 _handler: RTC_Alarm,
384 },
385 Vector {
386 _handler: DFSDM1_FLT3,
387 },
388 Vector { _handler: TIM8_BRK },
389 Vector { _handler: TIM8_UP },
390 Vector {
391 _handler: TIM8_TRG_COM,
392 },
393 Vector { _handler: TIM8_CC },
394 Vector { _reserved: 0 },
395 Vector { _handler: FMC },
396 Vector { _handler: SDMMC1 },
397 Vector { _handler: TIM5 },
398 Vector { _handler: SPI3 },
399 Vector { _handler: UART4 },
400 Vector { _handler: UART5 },
401 Vector { _handler: TIM6_DAC },
402 Vector { _handler: TIM7 },
403 Vector {
404 _handler: DMA2_Channel1,
405 },
406 Vector {
407 _handler: DMA2_Channel2,
408 },
409 Vector {
410 _handler: DMA2_Channel3,
411 },
412 Vector {
413 _handler: DMA2_Channel4,
414 },
415 Vector {
416 _handler: DMA2_Channel5,
417 },
418 Vector {
419 _handler: DFSDM1_FLT0,
420 },
421 Vector {
422 _handler: DFSDM1_FLT1,
423 },
424 Vector {
425 _handler: DFSDM1_FLT2,
426 },
427 Vector { _handler: COMP },
428 Vector { _handler: LPTIM1 },
429 Vector { _handler: LPTIM2 },
430 Vector { _handler: OTG_FS },
431 Vector {
432 _handler: DMA2_Channel6,
433 },
434 Vector {
435 _handler: DMA2_Channel7,
436 },
437 Vector { _handler: LPUART1 },
438 Vector { _handler: OCTOSPI1 },
439 Vector { _handler: I2C3_EV },
440 Vector { _handler: I2C3_ER },
441 Vector { _handler: SAI1 },
442 Vector { _handler: SAI2 },
443 Vector { _handler: OCTOSPI2 },
444 Vector { _handler: TSC },
445 Vector { _reserved: 0 },
446 Vector { _handler: AES },
447 Vector { _handler: RNG },
448 Vector { _handler: FPU },
449 Vector { _handler: HASH_CRS },
450 Vector { _handler: I2C4_ER },
451 Vector { _handler: I2C4_EV },
452 Vector { _handler: DCMI },
453 Vector { _reserved: 0 },
454 Vector { _reserved: 0 },
455 Vector { _reserved: 0 },
456 Vector { _reserved: 0 },
457 Vector { _handler: DMA2D },
458 Vector { _handler: LTDC },
459 Vector { _handler: LTDC_ER },
460 Vector { _handler: GFXMMU },
461 Vector {
462 _handler: DMAMUX1_OVR,
463 },
464 ];
465}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 466impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 467impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 468impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4s9ai.rs b/embassy-stm32/src/chip/stm32l4s9ai.rs
index bae375145..a79938e3e 100644
--- a/embassy-stm32/src/chip/stm32l4s9ai.rs
+++ b/embassy-stm32/src/chip/stm32l4s9ai.rs
@@ -1,22 +1,471 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, 13 PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 DSI = 78,
60 EXTI0 = 6,
61 EXTI1 = 7,
62 EXTI15_10 = 40,
63 EXTI2 = 8,
64 EXTI3 = 9,
65 EXTI4 = 10,
66 EXTI9_5 = 23,
67 FLASH = 4,
68 FMC = 48,
69 FPU = 81,
70 GFXMMU = 93,
71 HASH_CRS = 82,
72 I2C1_ER = 32,
73 I2C1_EV = 31,
74 I2C2_ER = 34,
75 I2C2_EV = 33,
76 I2C3_ER = 73,
77 I2C3_EV = 72,
78 I2C4_ER = 83,
79 I2C4_EV = 84,
80 LPTIM1 = 65,
81 LPTIM2 = 66,
82 LPUART1 = 70,
83 LTDC = 91,
84 LTDC_ER = 92,
85 OCTOSPI1 = 71,
86 OCTOSPI2 = 76,
87 OTG_FS = 67,
88 PVD_PVM = 1,
89 RCC = 5,
90 RNG = 80,
91 RTC_Alarm = 41,
92 RTC_WKUP = 3,
93 SAI1 = 74,
94 SAI2 = 75,
95 SDMMC1 = 49,
96 SPI1 = 35,
97 SPI2 = 36,
98 SPI3 = 51,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1);
130 declare!(AES);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(COMP);
136 declare!(DCMI);
137 declare!(DFSDM1_FLT0);
138 declare!(DFSDM1_FLT1);
139 declare!(DFSDM1_FLT2);
140 declare!(DFSDM1_FLT3);
141 declare!(DMA1_Channel1);
142 declare!(DMA1_Channel2);
143 declare!(DMA1_Channel3);
144 declare!(DMA1_Channel4);
145 declare!(DMA1_Channel5);
146 declare!(DMA1_Channel6);
147 declare!(DMA1_Channel7);
148 declare!(DMA2D);
149 declare!(DMA2_Channel1);
150 declare!(DMA2_Channel2);
151 declare!(DMA2_Channel3);
152 declare!(DMA2_Channel4);
153 declare!(DMA2_Channel5);
154 declare!(DMA2_Channel6);
155 declare!(DMA2_Channel7);
156 declare!(DMAMUX1_OVR);
157 declare!(DSI);
158 declare!(EXTI0);
159 declare!(EXTI1);
160 declare!(EXTI15_10);
161 declare!(EXTI2);
162 declare!(EXTI3);
163 declare!(EXTI4);
164 declare!(EXTI9_5);
165 declare!(FLASH);
166 declare!(FMC);
167 declare!(FPU);
168 declare!(GFXMMU);
169 declare!(HASH_CRS);
170 declare!(I2C1_ER);
171 declare!(I2C1_EV);
172 declare!(I2C2_ER);
173 declare!(I2C2_EV);
174 declare!(I2C3_ER);
175 declare!(I2C3_EV);
176 declare!(I2C4_ER);
177 declare!(I2C4_EV);
178 declare!(LPTIM1);
179 declare!(LPTIM2);
180 declare!(LPUART1);
181 declare!(LTDC);
182 declare!(LTDC_ER);
183 declare!(OCTOSPI1);
184 declare!(OCTOSPI2);
185 declare!(OTG_FS);
186 declare!(PVD_PVM);
187 declare!(RCC);
188 declare!(RNG);
189 declare!(RTC_Alarm);
190 declare!(RTC_WKUP);
191 declare!(SAI1);
192 declare!(SAI2);
193 declare!(SDMMC1);
194 declare!(SPI1);
195 declare!(SPI2);
196 declare!(SPI3);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1();
223 fn AES();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn COMP();
229 fn DCMI();
230 fn DFSDM1_FLT0();
231 fn DFSDM1_FLT1();
232 fn DFSDM1_FLT2();
233 fn DFSDM1_FLT3();
234 fn DMA1_Channel1();
235 fn DMA1_Channel2();
236 fn DMA1_Channel3();
237 fn DMA1_Channel4();
238 fn DMA1_Channel5();
239 fn DMA1_Channel6();
240 fn DMA1_Channel7();
241 fn DMA2D();
242 fn DMA2_Channel1();
243 fn DMA2_Channel2();
244 fn DMA2_Channel3();
245 fn DMA2_Channel4();
246 fn DMA2_Channel5();
247 fn DMA2_Channel6();
248 fn DMA2_Channel7();
249 fn DMAMUX1_OVR();
250 fn DSI();
251 fn EXTI0();
252 fn EXTI1();
253 fn EXTI15_10();
254 fn EXTI2();
255 fn EXTI3();
256 fn EXTI4();
257 fn EXTI9_5();
258 fn FLASH();
259 fn FMC();
260 fn FPU();
261 fn GFXMMU();
262 fn HASH_CRS();
263 fn I2C1_ER();
264 fn I2C1_EV();
265 fn I2C2_ER();
266 fn I2C2_EV();
267 fn I2C3_ER();
268 fn I2C3_EV();
269 fn I2C4_ER();
270 fn I2C4_EV();
271 fn LPTIM1();
272 fn LPTIM2();
273 fn LPUART1();
274 fn LTDC();
275 fn LTDC_ER();
276 fn OCTOSPI1();
277 fn OCTOSPI2();
278 fn OTG_FS();
279 fn PVD_PVM();
280 fn RCC();
281 fn RNG();
282 fn RTC_Alarm();
283 fn RTC_WKUP();
284 fn SAI1();
285 fn SAI2();
286 fn SDMMC1();
287 fn SPI1();
288 fn SPI2();
289 fn SPI3();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 95] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _reserved: 0 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: OCTOSPI1 },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: OCTOSPI2 },
447 Vector { _handler: TSC },
448 Vector { _handler: DSI },
449 Vector { _handler: AES },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: HASH_CRS },
453 Vector { _handler: I2C4_ER },
454 Vector { _handler: I2C4_EV },
455 Vector { _handler: DCMI },
456 Vector { _reserved: 0 },
457 Vector { _reserved: 0 },
458 Vector { _reserved: 0 },
459 Vector { _reserved: 0 },
460 Vector { _handler: DMA2D },
461 Vector { _handler: LTDC },
462 Vector { _handler: LTDC_ER },
463 Vector { _handler: GFXMMU },
464 Vector {
465 _handler: DMAMUX1_OVR,
466 },
467 ];
468}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 469impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 470impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 471impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4s9vi.rs b/embassy-stm32/src/chip/stm32l4s9vi.rs
index bae375145..a79938e3e 100644
--- a/embassy-stm32/src/chip/stm32l4s9vi.rs
+++ b/embassy-stm32/src/chip/stm32l4s9vi.rs
@@ -1,22 +1,471 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, 13 PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 DSI = 78,
60 EXTI0 = 6,
61 EXTI1 = 7,
62 EXTI15_10 = 40,
63 EXTI2 = 8,
64 EXTI3 = 9,
65 EXTI4 = 10,
66 EXTI9_5 = 23,
67 FLASH = 4,
68 FMC = 48,
69 FPU = 81,
70 GFXMMU = 93,
71 HASH_CRS = 82,
72 I2C1_ER = 32,
73 I2C1_EV = 31,
74 I2C2_ER = 34,
75 I2C2_EV = 33,
76 I2C3_ER = 73,
77 I2C3_EV = 72,
78 I2C4_ER = 83,
79 I2C4_EV = 84,
80 LPTIM1 = 65,
81 LPTIM2 = 66,
82 LPUART1 = 70,
83 LTDC = 91,
84 LTDC_ER = 92,
85 OCTOSPI1 = 71,
86 OCTOSPI2 = 76,
87 OTG_FS = 67,
88 PVD_PVM = 1,
89 RCC = 5,
90 RNG = 80,
91 RTC_Alarm = 41,
92 RTC_WKUP = 3,
93 SAI1 = 74,
94 SAI2 = 75,
95 SDMMC1 = 49,
96 SPI1 = 35,
97 SPI2 = 36,
98 SPI3 = 51,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1);
130 declare!(AES);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(COMP);
136 declare!(DCMI);
137 declare!(DFSDM1_FLT0);
138 declare!(DFSDM1_FLT1);
139 declare!(DFSDM1_FLT2);
140 declare!(DFSDM1_FLT3);
141 declare!(DMA1_Channel1);
142 declare!(DMA1_Channel2);
143 declare!(DMA1_Channel3);
144 declare!(DMA1_Channel4);
145 declare!(DMA1_Channel5);
146 declare!(DMA1_Channel6);
147 declare!(DMA1_Channel7);
148 declare!(DMA2D);
149 declare!(DMA2_Channel1);
150 declare!(DMA2_Channel2);
151 declare!(DMA2_Channel3);
152 declare!(DMA2_Channel4);
153 declare!(DMA2_Channel5);
154 declare!(DMA2_Channel6);
155 declare!(DMA2_Channel7);
156 declare!(DMAMUX1_OVR);
157 declare!(DSI);
158 declare!(EXTI0);
159 declare!(EXTI1);
160 declare!(EXTI15_10);
161 declare!(EXTI2);
162 declare!(EXTI3);
163 declare!(EXTI4);
164 declare!(EXTI9_5);
165 declare!(FLASH);
166 declare!(FMC);
167 declare!(FPU);
168 declare!(GFXMMU);
169 declare!(HASH_CRS);
170 declare!(I2C1_ER);
171 declare!(I2C1_EV);
172 declare!(I2C2_ER);
173 declare!(I2C2_EV);
174 declare!(I2C3_ER);
175 declare!(I2C3_EV);
176 declare!(I2C4_ER);
177 declare!(I2C4_EV);
178 declare!(LPTIM1);
179 declare!(LPTIM2);
180 declare!(LPUART1);
181 declare!(LTDC);
182 declare!(LTDC_ER);
183 declare!(OCTOSPI1);
184 declare!(OCTOSPI2);
185 declare!(OTG_FS);
186 declare!(PVD_PVM);
187 declare!(RCC);
188 declare!(RNG);
189 declare!(RTC_Alarm);
190 declare!(RTC_WKUP);
191 declare!(SAI1);
192 declare!(SAI2);
193 declare!(SDMMC1);
194 declare!(SPI1);
195 declare!(SPI2);
196 declare!(SPI3);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1();
223 fn AES();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn COMP();
229 fn DCMI();
230 fn DFSDM1_FLT0();
231 fn DFSDM1_FLT1();
232 fn DFSDM1_FLT2();
233 fn DFSDM1_FLT3();
234 fn DMA1_Channel1();
235 fn DMA1_Channel2();
236 fn DMA1_Channel3();
237 fn DMA1_Channel4();
238 fn DMA1_Channel5();
239 fn DMA1_Channel6();
240 fn DMA1_Channel7();
241 fn DMA2D();
242 fn DMA2_Channel1();
243 fn DMA2_Channel2();
244 fn DMA2_Channel3();
245 fn DMA2_Channel4();
246 fn DMA2_Channel5();
247 fn DMA2_Channel6();
248 fn DMA2_Channel7();
249 fn DMAMUX1_OVR();
250 fn DSI();
251 fn EXTI0();
252 fn EXTI1();
253 fn EXTI15_10();
254 fn EXTI2();
255 fn EXTI3();
256 fn EXTI4();
257 fn EXTI9_5();
258 fn FLASH();
259 fn FMC();
260 fn FPU();
261 fn GFXMMU();
262 fn HASH_CRS();
263 fn I2C1_ER();
264 fn I2C1_EV();
265 fn I2C2_ER();
266 fn I2C2_EV();
267 fn I2C3_ER();
268 fn I2C3_EV();
269 fn I2C4_ER();
270 fn I2C4_EV();
271 fn LPTIM1();
272 fn LPTIM2();
273 fn LPUART1();
274 fn LTDC();
275 fn LTDC_ER();
276 fn OCTOSPI1();
277 fn OCTOSPI2();
278 fn OTG_FS();
279 fn PVD_PVM();
280 fn RCC();
281 fn RNG();
282 fn RTC_Alarm();
283 fn RTC_WKUP();
284 fn SAI1();
285 fn SAI2();
286 fn SDMMC1();
287 fn SPI1();
288 fn SPI2();
289 fn SPI3();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 95] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _reserved: 0 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: OCTOSPI1 },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: OCTOSPI2 },
447 Vector { _handler: TSC },
448 Vector { _handler: DSI },
449 Vector { _handler: AES },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: HASH_CRS },
453 Vector { _handler: I2C4_ER },
454 Vector { _handler: I2C4_EV },
455 Vector { _handler: DCMI },
456 Vector { _reserved: 0 },
457 Vector { _reserved: 0 },
458 Vector { _reserved: 0 },
459 Vector { _reserved: 0 },
460 Vector { _handler: DMA2D },
461 Vector { _handler: LTDC },
462 Vector { _handler: LTDC_ER },
463 Vector { _handler: GFXMMU },
464 Vector {
465 _handler: DMAMUX1_OVR,
466 },
467 ];
468}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 469impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 470impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 471impl_gpio_pin!(PA2, 0, 2, EXTI2);
diff --git a/embassy-stm32/src/chip/stm32l4s9zi.rs b/embassy-stm32/src/chip/stm32l4s9zi.rs
index bae375145..a79938e3e 100644
--- a/embassy-stm32/src/chip/stm32l4s9zi.rs
+++ b/embassy-stm32/src/chip/stm32l4s9zi.rs
@@ -1,22 +1,471 @@
1use embassy_extras::peripherals; 1use embassy_extras::peripherals;
2peripherals!( 2peripherals!(
3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, 3 EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12,
4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, GFXMMU, PA0, PA1, 4 EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0,
5 PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, 5 PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2,
6 PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, 6 PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4,
7 PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, 7 PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6,
8 PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, 8 PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8,
9 PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, 9 PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9,
10 PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, 10 PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10,
11 PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, 11 PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11,
12 PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, 12 PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12,
13 PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, 13 PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1,
14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, 14 OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3,
15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, 15 SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5,
16 USART1, USART2, USART3, USB_OTG_FS, WWDG 16 USART1, USART2, USART3, USB_OTG_FS, WWDG
17); 17);
18pub const SYSCFG_BASE: usize = 0x40010000;
19pub const EXTI_BASE: usize = 0x40010400;
18pub const GPIO_BASE: usize = 0x48000000; 20pub const GPIO_BASE: usize = 0x48000000;
19pub const GPIO_STRIDE: usize = 0x400; 21pub const GPIO_STRIDE: usize = 0x400;
22
23pub mod interrupt {
24 pub use cortex_m::interrupt::{CriticalSection, Mutex};
25 pub use embassy::interrupt::{declare, take, Interrupt};
26 pub use embassy_extras::interrupt::Priority4 as Priority;
27
28 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
29 #[allow(non_camel_case_types)]
30 enum InterruptEnum {
31 ADC1 = 18,
32 AES = 79,
33 CAN1_RX0 = 20,
34 CAN1_RX1 = 21,
35 CAN1_SCE = 22,
36 CAN1_TX = 19,
37 COMP = 64,
38 DCMI = 85,
39 DFSDM1_FLT0 = 61,
40 DFSDM1_FLT1 = 62,
41 DFSDM1_FLT2 = 63,
42 DFSDM1_FLT3 = 42,
43 DMA1_Channel1 = 11,
44 DMA1_Channel2 = 12,
45 DMA1_Channel3 = 13,
46 DMA1_Channel4 = 14,
47 DMA1_Channel5 = 15,
48 DMA1_Channel6 = 16,
49 DMA1_Channel7 = 17,
50 DMA2D = 90,
51 DMA2_Channel1 = 56,
52 DMA2_Channel2 = 57,
53 DMA2_Channel3 = 58,
54 DMA2_Channel4 = 59,
55 DMA2_Channel5 = 60,
56 DMA2_Channel6 = 68,
57 DMA2_Channel7 = 69,
58 DMAMUX1_OVR = 94,
59 DSI = 78,
60 EXTI0 = 6,
61 EXTI1 = 7,
62 EXTI15_10 = 40,
63 EXTI2 = 8,
64 EXTI3 = 9,
65 EXTI4 = 10,
66 EXTI9_5 = 23,
67 FLASH = 4,
68 FMC = 48,
69 FPU = 81,
70 GFXMMU = 93,
71 HASH_CRS = 82,
72 I2C1_ER = 32,
73 I2C1_EV = 31,
74 I2C2_ER = 34,
75 I2C2_EV = 33,
76 I2C3_ER = 73,
77 I2C3_EV = 72,
78 I2C4_ER = 83,
79 I2C4_EV = 84,
80 LPTIM1 = 65,
81 LPTIM2 = 66,
82 LPUART1 = 70,
83 LTDC = 91,
84 LTDC_ER = 92,
85 OCTOSPI1 = 71,
86 OCTOSPI2 = 76,
87 OTG_FS = 67,
88 PVD_PVM = 1,
89 RCC = 5,
90 RNG = 80,
91 RTC_Alarm = 41,
92 RTC_WKUP = 3,
93 SAI1 = 74,
94 SAI2 = 75,
95 SDMMC1 = 49,
96 SPI1 = 35,
97 SPI2 = 36,
98 SPI3 = 51,
99 TAMP_STAMP = 2,
100 TIM1_BRK_TIM15 = 24,
101 TIM1_CC = 27,
102 TIM1_TRG_COM_TIM17 = 26,
103 TIM1_UP_TIM16 = 25,
104 TIM2 = 28,
105 TIM3 = 29,
106 TIM4 = 30,
107 TIM5 = 50,
108 TIM6_DAC = 54,
109 TIM7 = 55,
110 TIM8_BRK = 43,
111 TIM8_CC = 46,
112 TIM8_TRG_COM = 45,
113 TIM8_UP = 44,
114 TSC = 77,
115 UART4 = 52,
116 UART5 = 53,
117 USART1 = 37,
118 USART2 = 38,
119 USART3 = 39,
120 WWDG = 0,
121 }
122 unsafe impl cortex_m::interrupt::InterruptNumber for InterruptEnum {
123 #[inline(always)]
124 fn number(self) -> u16 {
125 self as u16
126 }
127 }
128
129 declare!(ADC1);
130 declare!(AES);
131 declare!(CAN1_RX0);
132 declare!(CAN1_RX1);
133 declare!(CAN1_SCE);
134 declare!(CAN1_TX);
135 declare!(COMP);
136 declare!(DCMI);
137 declare!(DFSDM1_FLT0);
138 declare!(DFSDM1_FLT1);
139 declare!(DFSDM1_FLT2);
140 declare!(DFSDM1_FLT3);
141 declare!(DMA1_Channel1);
142 declare!(DMA1_Channel2);
143 declare!(DMA1_Channel3);
144 declare!(DMA1_Channel4);
145 declare!(DMA1_Channel5);
146 declare!(DMA1_Channel6);
147 declare!(DMA1_Channel7);
148 declare!(DMA2D);
149 declare!(DMA2_Channel1);
150 declare!(DMA2_Channel2);
151 declare!(DMA2_Channel3);
152 declare!(DMA2_Channel4);
153 declare!(DMA2_Channel5);
154 declare!(DMA2_Channel6);
155 declare!(DMA2_Channel7);
156 declare!(DMAMUX1_OVR);
157 declare!(DSI);
158 declare!(EXTI0);
159 declare!(EXTI1);
160 declare!(EXTI15_10);
161 declare!(EXTI2);
162 declare!(EXTI3);
163 declare!(EXTI4);
164 declare!(EXTI9_5);
165 declare!(FLASH);
166 declare!(FMC);
167 declare!(FPU);
168 declare!(GFXMMU);
169 declare!(HASH_CRS);
170 declare!(I2C1_ER);
171 declare!(I2C1_EV);
172 declare!(I2C2_ER);
173 declare!(I2C2_EV);
174 declare!(I2C3_ER);
175 declare!(I2C3_EV);
176 declare!(I2C4_ER);
177 declare!(I2C4_EV);
178 declare!(LPTIM1);
179 declare!(LPTIM2);
180 declare!(LPUART1);
181 declare!(LTDC);
182 declare!(LTDC_ER);
183 declare!(OCTOSPI1);
184 declare!(OCTOSPI2);
185 declare!(OTG_FS);
186 declare!(PVD_PVM);
187 declare!(RCC);
188 declare!(RNG);
189 declare!(RTC_Alarm);
190 declare!(RTC_WKUP);
191 declare!(SAI1);
192 declare!(SAI2);
193 declare!(SDMMC1);
194 declare!(SPI1);
195 declare!(SPI2);
196 declare!(SPI3);
197 declare!(TAMP_STAMP);
198 declare!(TIM1_BRK_TIM15);
199 declare!(TIM1_CC);
200 declare!(TIM1_TRG_COM_TIM17);
201 declare!(TIM1_UP_TIM16);
202 declare!(TIM2);
203 declare!(TIM3);
204 declare!(TIM4);
205 declare!(TIM5);
206 declare!(TIM6_DAC);
207 declare!(TIM7);
208 declare!(TIM8_BRK);
209 declare!(TIM8_CC);
210 declare!(TIM8_TRG_COM);
211 declare!(TIM8_UP);
212 declare!(TSC);
213 declare!(UART4);
214 declare!(UART5);
215 declare!(USART1);
216 declare!(USART2);
217 declare!(USART3);
218 declare!(WWDG);
219}
220mod interrupt_vector {
221 extern "C" {
222 fn ADC1();
223 fn AES();
224 fn CAN1_RX0();
225 fn CAN1_RX1();
226 fn CAN1_SCE();
227 fn CAN1_TX();
228 fn COMP();
229 fn DCMI();
230 fn DFSDM1_FLT0();
231 fn DFSDM1_FLT1();
232 fn DFSDM1_FLT2();
233 fn DFSDM1_FLT3();
234 fn DMA1_Channel1();
235 fn DMA1_Channel2();
236 fn DMA1_Channel3();
237 fn DMA1_Channel4();
238 fn DMA1_Channel5();
239 fn DMA1_Channel6();
240 fn DMA1_Channel7();
241 fn DMA2D();
242 fn DMA2_Channel1();
243 fn DMA2_Channel2();
244 fn DMA2_Channel3();
245 fn DMA2_Channel4();
246 fn DMA2_Channel5();
247 fn DMA2_Channel6();
248 fn DMA2_Channel7();
249 fn DMAMUX1_OVR();
250 fn DSI();
251 fn EXTI0();
252 fn EXTI1();
253 fn EXTI15_10();
254 fn EXTI2();
255 fn EXTI3();
256 fn EXTI4();
257 fn EXTI9_5();
258 fn FLASH();
259 fn FMC();
260 fn FPU();
261 fn GFXMMU();
262 fn HASH_CRS();
263 fn I2C1_ER();
264 fn I2C1_EV();
265 fn I2C2_ER();
266 fn I2C2_EV();
267 fn I2C3_ER();
268 fn I2C3_EV();
269 fn I2C4_ER();
270 fn I2C4_EV();
271 fn LPTIM1();
272 fn LPTIM2();
273 fn LPUART1();
274 fn LTDC();
275 fn LTDC_ER();
276 fn OCTOSPI1();
277 fn OCTOSPI2();
278 fn OTG_FS();
279 fn PVD_PVM();
280 fn RCC();
281 fn RNG();
282 fn RTC_Alarm();
283 fn RTC_WKUP();
284 fn SAI1();
285 fn SAI2();
286 fn SDMMC1();
287 fn SPI1();
288 fn SPI2();
289 fn SPI3();
290 fn TAMP_STAMP();
291 fn TIM1_BRK_TIM15();
292 fn TIM1_CC();
293 fn TIM1_TRG_COM_TIM17();
294 fn TIM1_UP_TIM16();
295 fn TIM2();
296 fn TIM3();
297 fn TIM4();
298 fn TIM5();
299 fn TIM6_DAC();
300 fn TIM7();
301 fn TIM8_BRK();
302 fn TIM8_CC();
303 fn TIM8_TRG_COM();
304 fn TIM8_UP();
305 fn TSC();
306 fn UART4();
307 fn UART5();
308 fn USART1();
309 fn USART2();
310 fn USART3();
311 fn WWDG();
312 }
313 pub union Vector {
314 _handler: unsafe extern "C" fn(),
315 _reserved: u32,
316 }
317 #[link_section = ".vector_table.interrupts"]
318 #[no_mangle]
319 pub static __INTERRUPTS: [Vector; 95] = [
320 Vector { _handler: WWDG },
321 Vector { _handler: PVD_PVM },
322 Vector {
323 _handler: TAMP_STAMP,
324 },
325 Vector { _handler: RTC_WKUP },
326 Vector { _handler: FLASH },
327 Vector { _handler: RCC },
328 Vector { _handler: EXTI0 },
329 Vector { _handler: EXTI1 },
330 Vector { _handler: EXTI2 },
331 Vector { _handler: EXTI3 },
332 Vector { _handler: EXTI4 },
333 Vector {
334 _handler: DMA1_Channel1,
335 },
336 Vector {
337 _handler: DMA1_Channel2,
338 },
339 Vector {
340 _handler: DMA1_Channel3,
341 },
342 Vector {
343 _handler: DMA1_Channel4,
344 },
345 Vector {
346 _handler: DMA1_Channel5,
347 },
348 Vector {
349 _handler: DMA1_Channel6,
350 },
351 Vector {
352 _handler: DMA1_Channel7,
353 },
354 Vector { _handler: ADC1 },
355 Vector { _handler: CAN1_TX },
356 Vector { _handler: CAN1_RX0 },
357 Vector { _handler: CAN1_RX1 },
358 Vector { _handler: CAN1_SCE },
359 Vector { _handler: EXTI9_5 },
360 Vector {
361 _handler: TIM1_BRK_TIM15,
362 },
363 Vector {
364 _handler: TIM1_UP_TIM16,
365 },
366 Vector {
367 _handler: TIM1_TRG_COM_TIM17,
368 },
369 Vector { _handler: TIM1_CC },
370 Vector { _handler: TIM2 },
371 Vector { _handler: TIM3 },
372 Vector { _handler: TIM4 },
373 Vector { _handler: I2C1_EV },
374 Vector { _handler: I2C1_ER },
375 Vector { _handler: I2C2_EV },
376 Vector { _handler: I2C2_ER },
377 Vector { _handler: SPI1 },
378 Vector { _handler: SPI2 },
379 Vector { _handler: USART1 },
380 Vector { _handler: USART2 },
381 Vector { _handler: USART3 },
382 Vector {
383 _handler: EXTI15_10,
384 },
385 Vector {
386 _handler: RTC_Alarm,
387 },
388 Vector {
389 _handler: DFSDM1_FLT3,
390 },
391 Vector { _handler: TIM8_BRK },
392 Vector { _handler: TIM8_UP },
393 Vector {
394 _handler: TIM8_TRG_COM,
395 },
396 Vector { _handler: TIM8_CC },
397 Vector { _reserved: 0 },
398 Vector { _handler: FMC },
399 Vector { _handler: SDMMC1 },
400 Vector { _handler: TIM5 },
401 Vector { _handler: SPI3 },
402 Vector { _handler: UART4 },
403 Vector { _handler: UART5 },
404 Vector { _handler: TIM6_DAC },
405 Vector { _handler: TIM7 },
406 Vector {
407 _handler: DMA2_Channel1,
408 },
409 Vector {
410 _handler: DMA2_Channel2,
411 },
412 Vector {
413 _handler: DMA2_Channel3,
414 },
415 Vector {
416 _handler: DMA2_Channel4,
417 },
418 Vector {
419 _handler: DMA2_Channel5,
420 },
421 Vector {
422 _handler: DFSDM1_FLT0,
423 },
424 Vector {
425 _handler: DFSDM1_FLT1,
426 },
427 Vector {
428 _handler: DFSDM1_FLT2,
429 },
430 Vector { _handler: COMP },
431 Vector { _handler: LPTIM1 },
432 Vector { _handler: LPTIM2 },
433 Vector { _handler: OTG_FS },
434 Vector {
435 _handler: DMA2_Channel6,
436 },
437 Vector {
438 _handler: DMA2_Channel7,
439 },
440 Vector { _handler: LPUART1 },
441 Vector { _handler: OCTOSPI1 },
442 Vector { _handler: I2C3_EV },
443 Vector { _handler: I2C3_ER },
444 Vector { _handler: SAI1 },
445 Vector { _handler: SAI2 },
446 Vector { _handler: OCTOSPI2 },
447 Vector { _handler: TSC },
448 Vector { _handler: DSI },
449 Vector { _handler: AES },
450 Vector { _handler: RNG },
451 Vector { _handler: FPU },
452 Vector { _handler: HASH_CRS },
453 Vector { _handler: I2C4_ER },
454 Vector { _handler: I2C4_EV },
455 Vector { _handler: DCMI },
456 Vector { _reserved: 0 },
457 Vector { _reserved: 0 },
458 Vector { _reserved: 0 },
459 Vector { _reserved: 0 },
460 Vector { _handler: DMA2D },
461 Vector { _handler: LTDC },
462 Vector { _handler: LTDC_ER },
463 Vector { _handler: GFXMMU },
464 Vector {
465 _handler: DMAMUX1_OVR,
466 },
467 ];
468}
20impl_gpio_pin!(PA0, 0, 0, EXTI0); 469impl_gpio_pin!(PA0, 0, 0, EXTI0);
21impl_gpio_pin!(PA1, 0, 1, EXTI1); 470impl_gpio_pin!(PA1, 0, 1, EXTI1);
22impl_gpio_pin!(PA2, 0, 2, EXTI2); 471impl_gpio_pin!(PA2, 0, 2, EXTI2);